code: public DTDElement define(Location loc, StructValidator val,
                               int allowedContent)
      {
          verifyUndefined();
          if (allowedContent == XMLValidator.CONTENT_ALLOW_UNDEFINED) { // sanity check
              ExceptionUtil.throwInternal("trying to use CONTENT_ALLOW_UNDEFINED via define()");
          }
  
          DTDElement elem = new DTDElement(loc, mName, val, allowedContent,
                                           mNsAware, mXml11);
  
          // Ok, need to copy state collected so far:
          elem.mAttrMap = mAttrMap;
          elem.mSpecAttrList = mSpecAttrList;
          elem.mAnyFixed = mAnyFixed;
          elem.mValidateAttrs = mValidateAttrs;
          elem.mAnyDefaults = mAnyDefaults;
          elem.mIdAttr = mIdAttr;
          elem.mNotationAttr = mNotationAttr;
          elem.mNsDefaults = mNsDefaults;
  
          return elem;
      }
docs: Method called on placeholder element, to create a real instance that
  has all attribute definitions placeholder had (it'll always have at
  least one -- otherwise no placeholder was needed).