private static void processPropertyReference(final XmlTag tag, final PsiReferenceProcessor processor, final PsiPlainTextFile file,
                                               final String className) {
    final XmlAttribute valueAttribute = tag.getAttribute(UIFormXmlConstants.ATTRIBUTE_VALUE, null);
    if (valueAttribute != null) {
      PsiReference reference = ReadAction.compute(() -> {
        final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(file.getProject());
        GlobalSearchScope scope = file.getResolveScope();
        PsiClass psiClass = psiFacade.findClass(className, scope);
        if (psiClass != null) {
          PsiMethod getter = PropertyUtilBase.findPropertyGetter(psiClass, tag.getName(), false, true);
          if (getter != null) {
            final PsiType returnType = getter.getReturnType();
            if (returnType instanceof PsiClassType propClassType) {
              PsiClass propClass = propClassType.resolve();
              if (propClass != null) {
                if (propClass.isEnum()) {
                  return new FormEnumConstantReference(file, getValueRange(valueAttribute), propClassType);
                }
                PsiClass iconClass = psiFacade.findClass("javax.swing.Icon", scope);
                if (iconClass != null && InheritanceUtil.isInheritorOrSelf(propClass, iconClass, true)) {
                  return new ResourceFileReference(file, getValueRange(valueAttribute));
                }
              }
            }
          }
        }
        return null;
      });
      if (reference != null) {
        if (reference instanceof ResourceFileReference) {
          processPackageReferences(file, processor, valueAttribute);
        }
        processor.execute(reference);
      }
    }
  }
private static void processPropertyReference(final XmlTag tag, final PsiReferenceProcessor processor, final PsiPlainTextFile file,
                                               final String className)