@Contract("null -> false")
  public static boolean isUnmodified(@Nullable PsiMethodCallExpression collectCall) {
    if (collectCall == null) return false;
    final PsiExpression effectiveReference =  findEffectiveReference(collectCall);
    QueryUpdateInfo info = new QueryUpdateInfo();
    new Visitor(null, defaultQueryNames, defaultUpdateNames, info).process(effectiveReference);
    if (!info.updated) return true;
    PsiElement parent = effectiveReference.getParent();
    Set<PsiReferenceExpression> ignored = new HashSet<>();
    if (parent instanceof PsiAssignmentExpression assignmentExpression) {
      if(assignmentExpression.getLExpression() instanceof PsiReferenceExpression referenceExpression){
        ignored.add(referenceExpression);
        parent = referenceExpression.resolve();
      }
    }
    if (!(parent instanceof PsiLocalVariable || parent instanceof PsiField)) return false;
    if (parent instanceof PsiField) {
      info = getCollectionQueryUpdateInfo((PsiField)parent, defaultUpdateNames, defaultQueryNames, Collections.emptySet());
    } else {
      info = getCollectionQueryUpdateInfo((PsiLocalVariable)parent, defaultUpdateNames, defaultQueryNames, Collections.emptySet(), ignored);
    }
    return info != null && !info.updated;
  }
@Contract("null -> false")
  public static boolean isUnmodified(@Nullable PsiMethodCallExpression collectCall)