@Override
    public Object @NotNull [] getVariants() {
      final PsiClass exactTagClass = JavaFxPsiUtil.getTagClass(myXmlAttributeValue);
      final PsiClass guessedTagClass = exactTagClass == null ? getGuessedTagClass() : null;

      final List<Object> fieldsToSuggest = new ArrayList<>();
      final PsiField[] fields = myAClass.getAllFields();
      for (PsiField psiField : fields) {
        if (!psiField.hasModifierProperty(PsiModifier.STATIC)) {
          if (JavaFxPsiUtil.isVisibleInFxml(psiField)) {
            final PsiType fieldType = psiField.getType();
            final PsiClass fieldClass = (fieldType instanceof PsiClassType) ? ((PsiClassType)fieldType).resolve() : null;
            if (fieldClass == null) {
              fieldsToSuggest.add(psiField);
            }
            else if (exactTagClass != null) {
              if (InheritanceUtil.isInheritorOrSelf(exactTagClass, fieldClass, true)) {
                fieldsToSuggest.add(psiField);
              }
            }
            else if (guessedTagClass == null || InheritanceUtil.isInheritorOrSelf(fieldClass, guessedTagClass, true)) {
              fieldsToSuggest.add(psiField);
            }
          }
        }
      }
      return ArrayUtil.toObjectArray(fieldsToSuggest);
    }
@Override
    public Object @NotNull [] getVariants()