private void getVariantsFromQualifierType(@NotNull PsiType qualifierType,
                                            @NotNull Project project) {
    final ResolveState state = ResolveState.initial();
    if (qualifierType instanceof PsiClassType) {
      PsiClassType.ClassResolveResult result = ((PsiClassType)qualifierType).resolveGenerics();
      PsiClass qualifierClass = result.getElement();
      if (qualifierClass != null) {
        qualifierClass.processDeclarations(myProcessor, state.put(PsiSubstitutor.KEY, result.getSubstitutor()), null, myRefExpr);
      }
    }
    else if (qualifierType instanceof PsiArrayType) {
      final GrTypeDefinition arrayClass =
        GroovyPsiManager.getInstance(project).getArrayClass(((PsiArrayType)qualifierType).getComponentType());
      if (arrayClass != null) {
        if (!arrayClass.processDeclarations(myProcessor, state, null, myRefExpr)) return;
      }
    }
    else if (qualifierType instanceof PsiIntersectionType) {
      for (PsiType conjunct : ((PsiIntersectionType)qualifierType).getConjuncts()) {
        getVariantsFromQualifierType(conjunct, project);
      }
      return;
    }
    ResolveUtil.processNonCodeMembers(qualifierType, myProcessor, myRefExpr, state);
  }
private void getVariantsFromQualifierType(@NotNull PsiType qualifierType,
                                            @NotNull Project project)