PsiReference[] (@NotNull PsiClass controllerClass, XmlAttributeValue xmlAttributeValue, ProcessingContext context) { final String attValueString = xmlAttributeValue.getValue(); LOG.assertTrue(attValueString.startsWith("#")); final XmlAttribute attribute = (XmlAttribute)xmlAttributeValue.getParent(); if (attribute == null || !JavaFxPsiUtil.isEventHandlerProperty(attribute)) return PsiReference.EMPTY_ARRAY; final String eventHandlerName = attValueString.substring(1); final PsiMethod[] methods = controllerClass.findMethodsByName(eventHandlerName, true); final PsiReference[] references = Arrays.stream(methods) .filter(psiMethod -> JavaFxEventHandlerReference.isHandlerMethodSignature(psiMethod, controllerClass)) .map(psiMethod -> new JavaFxEventHandlerReference(xmlAttributeValue, psiMethod, controllerClass)) .toArray(PsiReference.ARRAY_FACTORY::create); if (references.length == 1) { return references; } if (references.length > 1) { return new PsiReference[]{new PsiMultiReference(references, xmlAttributeValue)}; } final XmlTag rootTag = ((XmlFile)xmlAttributeValue.getContainingFile()).getRootTag(); if (rootTag == null || FxmlConstants.FX_ROOT.equals(rootTag.getName())) { return PsiReference.EMPTY_ARRAY; } return new PsiReference[]{new JavaFxEventHandlerReference(xmlAttributeValue, null, controllerClass)}; }