private static boolean isCustomTagRegion(IndexedRegion node) {

    if (node instanceof Element) {
      Element xmlElement = (Element) node;
      ModelQuery mq = ModelQueryUtil.getModelQuery(xmlElement.getOwnerDocument());
      CMElementDeclaration decl = mq.getCMElementDeclaration(xmlElement);
      if (decl instanceof CMNodeWrapper) {
        CMNode cmNode = ((CMNodeWrapper) decl).getOriginNode();
        return cmNode instanceof TLDElementDeclaration;
      }
    }
    return false;
  }
  public String[] getPossibleValues() {
    String[] result = {};

    switch (kind) {
      case KIND_ATTR_TEXT:
      case KIND_ELEMENT_ATTR:
        {
          // note intentional fall-thru!!
          ModelQuery modelQuery = ModelQueryUtil.getModelQuery(parent.getOwnerDocument());
          if (modelQuery != null) {
            CMAttributeDeclaration ad = modelQuery.getCMAttributeDeclaration(attribute);
            if (ad != null) {
              result = modelQuery.getPossibleDataTypeValues(parent, ad);
            }
          }
          break;
        }
      case KIND_ELEMENT_CMATTRIBUTE:
        {
          ModelQuery modelQuery = ModelQueryUtil.getModelQuery(parent.getOwnerDocument());
          if (modelQuery != null && cmNode != null) {
            result = modelQuery.getPossibleDataTypeValues(parent, cmNode);
          }
          break;
        }
      case KIND_ELEMENT_TEXT:
        {
          ModelQuery modelQuery = ModelQueryUtil.getModelQuery(parent.getOwnerDocument());
          if (modelQuery != null) {
            CMElementDeclaration ed = modelQuery.getCMElementDeclaration(parent);
            if (ed != null) {
              result = modelQuery.getPossibleDataTypeValues(parent, ed);
            }
          }
          break;
        }
    }
    return result;
  }