@Override
  public void getNamedArguments(@NotNull GrCall call,
                                @NotNull GroovyResolveResult resolveResult,
                                @Nullable String argumentName,
                                boolean forCompletion,
                                @NotNull Map<String, NamedArgumentDescriptor> result) {
    GrArgumentList argumentList = call.getArgumentList();
    if (argumentList == null) return;
    GrExpression[] expressionArguments = argumentList.getExpressionArguments();
    if (expressionArguments.length > 1 || (expressionArguments.length == 1 && !(expressionArguments[0] instanceof GrReferenceExpression))) {
      return;
    }
    if (!PsiUtil.isTrustedMapConstructorResult(resolveResult)) return;

    for (PsiClass psiClass : getCorrespondingClasses(call, resolveResult)) {
      if (!isClassHasConstructorWithMap(psiClass)) continue;

      PsiClassType classType = JavaPsiFacade.getElementFactory(psiClass.getProject()).createType(psiClass);

      processClass(call, classType, argumentName, result);
    }
  }
@Override
  public void getNamedArguments(@NotNull GrCall call,
                                @NotNull GroovyResolveResult resolveResult,
                                @Nullable String argumentName,
                                boolean forCompletion,
                                @NotNull Map<String, NamedArgumentDescriptor> result)