public static boolean processDgmMethods(@NotNull PsiType qualifierType,
                                          @NotNull PsiScopeProcessor processor,
                                          @NotNull PsiElement place,
                                          @NotNull ResolveState state) {
    if (!ResolveUtil.shouldProcessMethods(processor.getHint(ElementClassHint.KEY))) return true;

    final Project project = place.getProject();

    ConcurrentMap<GlobalSearchScope, List<GdkMethodHolder>> map = CachedValuesManager.getManager(project).getCachedValue(
      project, () -> {
        ConcurrentMap<GlobalSearchScope, List<GdkMethodHolder>> value = ContainerUtil.createConcurrentSoftValueMap();
        return CachedValueProvider.Result.create(value, PsiModificationTracker.MODIFICATION_COUNT);
      });

    GlobalSearchScope scope = place.getResolveScope();
    List<GdkMethodHolder> gdkMethods = map.get(scope);
    if (gdkMethods == null) {
      map.put(scope, gdkMethods = calcGdkMethods(project, scope));
    }

    for (GdkMethodHolder holder : gdkMethods) {
      if (!holder.processMethods(processor, state, qualifierType, project)) {
        return false;
      }
    }

    if (!resolvesToMacro(processor, state, place, project)) {
      return false;
    }

    return true;
  }
public static boolean processDgmMethods(@NotNull PsiType qualifierType,
                                          @NotNull PsiScopeProcessor processor,
                                          @NotNull PsiElement place,
                                          @NotNull ResolveState state)