@Override
  public void processDynamicElements(@NotNull PsiType qualifierType,
                                     @Nullable PsiClass aClass,
                                     @NotNull PsiScopeProcessor processor,
                                     @NotNull PsiElement place,
                                     @NotNull ResolveState state) {
    if (aClass == null) return;
    if (!ResolveUtil.shouldProcessMethods(processor.getHint(ElementClassHint.KEY))) return;

    MultiMap<String, PsiMethod> methodMap = aClass.getUserData(KEY);
    if (methodMap == null) {
      MyBuilder builder = new MyBuilder(aClass);
      builder.generateMethods();
      methodMap = ((UserDataHolderEx)aClass).putUserDataIfAbsent(KEY, builder.myResult);
    }

    String nameHint = ResolveUtil.getNameHint(processor);

    Collection<? extends PsiMethod> methods = nameHint == null ? methodMap.values() : methodMap.get(nameHint);

    for (PsiMethod method : methods) {
      if (!processor.execute(method, state)) return;
    }
  }
@Override
  public void processDynamicElements(@NotNull PsiType qualifierType,
                                     @Nullable PsiClass aClass,
                                     @NotNull PsiScopeProcessor processor,
                                     @NotNull PsiElement place,
                                     @NotNull ResolveState state)