@Override
  public XmlElementDescriptor[] getElementsDescriptors(XmlTag context) {
    final PsiElement declaration = getDeclaration();
    final PsiType propertyType = JavaFxPsiUtil.getWritablePropertyType(myPsiClass, declaration);

    if (propertyType != null) {
      final ArrayList<XmlElementDescriptor> descriptors = new ArrayList<>();
      for (String name : FxmlConstants.FX_BUILT_IN_TAGS) {
        descriptors.add(new JavaFxBuiltInTagDescriptor(name, null));
      }

      final PsiType collectionItemType = JavaGenericsUtil.getCollectionItemType(propertyType, declaration.getResolveScope());
      if (collectionItemType != null) {
        collectSubclassesDescriptors(collectionItemType, descriptors, context);
      }
      else if (!JavaFxPsiUtil.isPrimitiveOrBoxed(propertyType)) {
        collectSubclassesDescriptors(propertyType, descriptors, context);
      }

      if (!descriptors.isEmpty()) return descriptors.toArray(XmlElementDescriptor.EMPTY_ARRAY);
    }
    return XmlElementDescriptor.EMPTY_ARRAY;
  }
@Override
  public XmlElementDescriptor[] getElementsDescriptors(XmlTag context)