private static QueryUpdateInfo getCollectionQueryUpdateInfo(@NotNull PsiField field,
                                                              Set<String> updateNames,
                                                              Set<String> queryNames,
                                                              Set<String> ignoredClasses) {
    if (!field.hasModifierProperty(PsiModifier.PRIVATE)) {
      PsiClass aClass = field.getContainingClass();
      if (aClass == null || !aClass.hasModifierProperty(PsiModifier.PRIVATE) || field.hasModifierProperty(PsiModifier.PUBLIC)) {
        // Public field within private class can be written/read via reflection even without setAccessible hacks,
        // so we don't analyze such fields to reduce false-positives
        return null;
      }
    }
    final PsiClass containingClass = PsiUtil.getTopLevelClass(field);
    if (!checkVariable(field, containingClass, ignoredClasses)) {
      return null;
    }
    return getCollectionQueryUpdateInfo(field, containingClass, queryNames, updateNames);
  }
private static QueryUpdateInfo getCollectionQueryUpdateInfo(@NotNull PsiField field,
                                                              Set<String> updateNames,
                                                              Set<String> queryNames,
                                                              Set<String> ignoredClasses)