private void getVariantsImpl() {
    GrExpression qualifier = myRefExpr.getQualifierExpression();
    if (qualifier == null) {
      ResolveUtil.treeWalkUp(myRefExpr, myRefExpr, myProcessor, ignoreImports(initialState(true)));

      ClosureMissingMethodContributor.processMethodsFromClosures(myRefExpr, myProcessor);

      getBindings();
    }
    else {
      if (myRefExpr.getDotTokenType() != GroovyTokenTypes.mSPREAD_DOT) {
        if (qualifier instanceof GrReferenceExpression && (
          "class".equals(((GrReferenceExpression)qualifier).getReferenceName()) ||
          PsiUtil.isThisReference(qualifier) && !PsiUtil.isInstanceThisRef(qualifier)
          || ((GrReferenceExpression)qualifier).resolve() instanceof PsiClass
        )) {
          processIfJavaLangClass(qualifier.getType());
        }
        getVariantsFromQualifier(qualifier);
      }
      else {
        getVariantsFromQualifierForSpreadOperator(qualifier);
      }
    }
    ResolveUtil.processCategoryMembers(myRefExpr, myProcessor, ResolveState.initial());
  }
private void getVariantsImpl()