protected Object[] getXSDElementDeclarationChildren_TypeDef(XSDElementDeclaration parent) {

    ArrayList<Object> list = new ArrayList<Object>();

    if (parent.getTypeDefinition() == null) {
      return new Object[0]; // elements with not type declaration
    }

    // handle extensions and restrictions directly
    if (parent.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
      list.addAll(
          Util.getComplexTypeDefinitionChildren(
              (XSDComplexTypeDefinition) parent.getTypeDefinition(), true));
    } else {
      list.addAll(
          Util.getSimpleTypeDefinitionChildren(
              (XSDSimpleTypeDefinition) parent.getTypeDefinition()));
    }

    return list.toArray();
  }