PsiPolyVariantReference () { PsiElement namedArgument = getParent(); if (!(namedArgument instanceof GrNamedArgument)) return null; PsiElement nameElement = getNameElement(); if (!(nameElement instanceof LeafPsiElement)) return null; IElementType elementType = ((LeafPsiElement)nameElement).getElementType(); if (elementType != GroovyTokenTypes.mIDENT && !CommonClassNames.JAVA_LANG_STRING.equals(TypesUtil.getBoxedTypeName(elementType))) { return null; } GrCall call = PsiUtil.getCallByNamedParameter((GrNamedArgument)namedArgument); if (call == null) return NamedArgumentUtilKt.getReferenceFromDescriptor(this); String labelName = getName(); Map<String, NamedArgumentDescriptor> providers = GroovyNamedArgumentProvider.getNamedArgumentsFromAllProviders(call, labelName, false); if (providers != null) { NamedArgumentDescriptor descr = providers.get(labelName); if (descr != null) { PsiPolyVariantReference res = descr.createReference(this); if (res != null) { return res; } } } return null; }