Backing out the html5 parser due to a bad merge.
authorJohnny Stenback <jst@mozilla.com>
Sun, 28 Jun 2009 11:52:25 -0700
changeset 29799 f1dc757a5026b366c0470f5206640a415ca7f40e
parent 29797 29ed03a2a827cfd2eb4a05f6c35bcfc3a636f280 (current diff)
parent 29798 c11b50467863b929d45efc3ca2e6cf89f46a16b9 (diff)
child 29800 4f98563118d9b9ea94fa1f5c8e79199c474b0008
child 29805 8b5103cb12a6b62558ba6ad64109f50bb66bd820
push idunknown
push userunknown
push dateunknown
milestone1.9.2a1pre
Backing out the html5 parser due to a bad merge.
content/html/parser/Makefile.in
content/html/parser/javasrc/AttributeName.java
content/html/parser/javasrc/ElementName.java
content/html/parser/javasrc/HtmlAttributes.java
content/html/parser/javasrc/MetaScanner.java
content/html/parser/javasrc/Portability.java
content/html/parser/javasrc/README.txt
content/html/parser/javasrc/StackNode.java
content/html/parser/javasrc/StateSnapshot.java
content/html/parser/javasrc/Tokenizer.java
content/html/parser/javasrc/TreeBuilder.java
content/html/parser/javasrc/UTF16Buffer.java
content/html/parser/public/Makefile.in
parser/Makefile.in
parser/html/Makefile.in
parser/html/jArray.h
parser/html/nsHtml5ArrayCopy.h
parser/html/nsHtml5AtomList.h
parser/html/nsHtml5Atoms.cpp
parser/html/nsHtml5Atoms.h
parser/html/nsHtml5AttributeName.cpp
parser/html/nsHtml5AttributeName.h
parser/html/nsHtml5ByteReadable.h
parser/html/nsHtml5DocumentMode.h
parser/html/nsHtml5ElementName.cpp
parser/html/nsHtml5ElementName.h
parser/html/nsHtml5HtmlAttributes.cpp
parser/html/nsHtml5HtmlAttributes.h
parser/html/nsHtml5MetaScanner.cpp
parser/html/nsHtml5MetaScanner.h
parser/html/nsHtml5MetaScannerCppSupplement.h
parser/html/nsHtml5MetaScannerHSupplement.h
parser/html/nsHtml5Module.cpp
parser/html/nsHtml5Module.h
parser/html/nsHtml5NamedCharacters.cpp
parser/html/nsHtml5NamedCharacters.h
parser/html/nsHtml5Parser.cpp
parser/html/nsHtml5Parser.h
parser/html/nsHtml5PendingNotification.h
parser/html/nsHtml5Portability.cpp
parser/html/nsHtml5Portability.h
parser/html/nsHtml5ReleasableAttributeName.cpp
parser/html/nsHtml5ReleasableAttributeName.h
parser/html/nsHtml5ReleasableElementName.cpp
parser/html/nsHtml5ReleasableElementName.h
parser/html/nsHtml5StackNode.cpp
parser/html/nsHtml5StackNode.h
parser/html/nsHtml5StackNodeCppSupplement.h
parser/html/nsHtml5StackNodeHSupplement.h
parser/html/nsHtml5StateSnapshot.cpp
parser/html/nsHtml5StateSnapshot.h
parser/html/nsHtml5Tokenizer.cpp
parser/html/nsHtml5Tokenizer.h
parser/html/nsHtml5TreeBuilder.cpp
parser/html/nsHtml5TreeBuilder.h
parser/html/nsHtml5TreeBuilderCppSupplement.h
parser/html/nsHtml5TreeBuilderHSupplement.h
parser/html/nsHtml5TreeOperation.cpp
parser/html/nsHtml5TreeOperation.h
parser/html/nsHtml5UTF16Buffer.cpp
parser/html/nsHtml5UTF16Buffer.h
parser/html/nsHtml5UTF16BufferCppSupplement.h
parser/html/nsHtml5UTF16BufferHSupplement.h
--- a/content/base/public/nsINode.h
+++ b/content/base/public/nsINode.h
@@ -434,23 +434,20 @@ public:
   /**
    * Remove a child from this node.  This method handles calling UnbindFromTree
    * on the child appropriately.
    *
    * @param aIndex the index of the child to remove
    * @param aNotify whether to notify the document (current document for
    *        nsIContent, and |this| for nsIDocument) that the remove has
    *        occurred
-   * @param aMutationEvent whether to fire a mutation event
    *
    * Note: If there is no child at aIndex, this method will simply do nothing.
    */
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, 
-                                 PRBool aNotify, 
-                                 PRBool aMutationEvent = PR_TRUE) = 0;
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify) = 0;
 
   /**
    * Get a property associated with this node.
    *
    * @param aPropertyName  name of property to get.
    * @param aStatus        out parameter for storing resulting status.
    *                       Set to NS_PROPTABLE_PROP_NOT_THERE if the property
    *                       is not set.
--- a/content/base/src/Makefile.in
+++ b/content/base/src/Makefile.in
@@ -79,17 +79,16 @@ REQUIRES	= xpcom \
 		  uriloader \
 		  rdf \
 		  xultmpl \
 		  util \
 		  appshell \
 		  shistory \
 		  editor \
 		  windowwatcher \
-		  html5 \
 		  $(NULL)
 
 ifdef ACCESSIBILITY
 REQUIRES	+= accessibility
 endif
 
 EXPORTS		= \
 		nsAtomListUtils.h \
--- a/content/base/src/nsContentSink.cpp
+++ b/content/base/src/nsContentSink.cpp
@@ -789,42 +789,32 @@ nsContentSink::ProcessStyleLink(nsIConte
 
   return NS_OK;
 }
 
 
 nsresult
 nsContentSink::ProcessMETATag(nsIContent* aContent)
 {
-  NS_ASSERTION(aContent, "missing meta-element");
+  NS_ASSERTION(aContent, "missing base-element");
 
   nsresult rv = NS_OK;
 
   // set any HTTP-EQUIV data into document's header data as well as url
   nsAutoString header;
   aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::httpEquiv, header);
   if (!header.IsEmpty()) {
     nsAutoString result;
     aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, result);
     if (!result.IsEmpty()) {
       ToLowerCase(header);
       nsCOMPtr<nsIAtom> fieldAtom(do_GetAtom(header));
       rv = ProcessHeaderData(fieldAtom, result, aContent); 
     }
   }
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  /* Look for the viewport meta tag. If we find it, process it and put the
-   * data into the document header. */
-  if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
-                            nsGkAtoms::viewport, eIgnoreCase)) {
-    nsAutoString value;
-    aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
-    rv = nsContentUtils::ProcessViewportInfo(mDocument, value);
-  }
 
   return rv;
 }
 
 
 void
 nsContentSink::PrefetchHref(const nsAString &aHref,
                             nsIContent *aSource,
--- a/content/base/src/nsContentSink.h
+++ b/content/base/src/nsContentSink.h
@@ -141,18 +141,16 @@ class nsContentSink : public nsICSSLoade
   void NotifyAppend(nsIContent* aContent, PRUint32 aStartIndex);
 
   // nsIDocumentObserver
   virtual void BeginUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType);
   virtual void EndUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType);
 
   virtual void UpdateChildCounts() = 0;
 
-  PRBool IsTimeToNotify();
-
 protected:
   nsContentSink();
   virtual ~nsContentSink();
 
   enum CacheSelectionAction {
     // There is no offline cache manifest specified by the document,
     // or the document was loaded from a cache other than the one it
     // specifies via its manifest attribute and IS NOT a top-level
@@ -238,35 +236,34 @@ protected:
   //        was selected.
   // @param aAction
   //        Out parameter, returns the action that should be performed
   //        by the calling function.
   nsresult SelectDocAppCacheNoManifest(nsIApplicationCache *aLoadApplicationCache,
                                        nsIURI **aManifestURI,
                                        CacheSelectionAction *aAction);
 
-public:
   // Searches for the offline cache manifest attribute and calls one
   // of the above defined methods to select the document's application
   // cache, let it be associated with the document and eventually
   // schedule the cache update process.
   void ProcessOfflineManifest(nsIContent *aElement);
 
-protected:
   // Tries to scroll to the URI's named anchor. Once we've successfully
   // done that, further calls to this method will be ignored.
   void ScrollToRef();
   nsresult RefreshIfEnabled(nsIViewManager* vm);
 
   // Start layout.  If aIgnorePendingSheets is true, this will happen even if
   // we still have stylesheet loads pending.  Otherwise, we'll wait until the
   // stylesheets are all done loading.
-public:
   void StartLayout(PRBool aIgnorePendingSheets);
-protected:
+
+  PRBool IsTimeToNotify();
+
   void
   FavorPerformanceHint(PRBool perfOverStarvation, PRUint32 starvationDelay);
 
   inline PRInt32 GetNotificationInterval()
   {
     if (mDynamicLowerValue) {
       return 1000;
     }
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -159,17 +159,16 @@ static NS_DEFINE_CID(kXTFServiceCID, NS_
 #include "nsIChannelEventSink.h"
 #include "nsIInterfaceRequestor.h"
 #include "nsIOfflineCacheUpdate.h"
 #include "nsCPrefetchService.h"
 #include "nsIChromeRegistry.h"
 #include "nsIMIMEHeaderParam.h"
 #include "nsIDOMDragEvent.h"
 #include "nsDOMDataTransfer.h"
-#include "nsHtml5Module.h"
 
 #ifdef IBMBIDI
 #include "nsIBidiKeyboard.h"
 #endif
 #include "nsCycleCollectionParticipant.h"
 
 // for ReportToConsole
 #include "nsIStringBundle.h"
@@ -3574,68 +3573,16 @@ nsContentUtils::CreateContextualFragment
   nsresult rv;
   nsCOMPtr<nsINode> node = do_QueryInterface(aContextNode);
   NS_ENSURE_TRUE(node, NS_ERROR_NOT_AVAILABLE);
 
   // If we don't have a document here, we can't get the right security context
   // for compiling event handlers... so just bail out.
   nsCOMPtr<nsIDocument> document = node->GetOwnerDoc();
   NS_ENSURE_TRUE(document, NS_ERROR_NOT_AVAILABLE);
-  
-  PRBool bCaseSensitive = document->IsCaseSensitive();
-
-  nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(document));
-  PRBool bHTML = htmlDoc && !bCaseSensitive;
-
-  if (bHTML && nsHtml5Module::Enabled) {
-    // See if the document has a cached fragment parser. nsHTMLDocument is the
-    // only one that should really have one at the moment.
-    nsCOMPtr<nsIParser> parser = document->GetFragmentParser();
-    if (parser) {
-      // Get the parser ready to use.
-      parser->Reset();
-    }
-    else {
-      // Create a new parser for this operation.
-      parser = nsHtml5Module::NewHtml5Parser();
-      if (!parser) {
-        return NS_ERROR_OUT_OF_MEMORY;
-      }
-      document->SetFragmentParser(parser);
-    }
-    nsCOMPtr<nsIDOMDocumentFragment> frag;
-    rv = NS_NewDocumentFragment(getter_AddRefs(frag), document->NodeInfoManager());
-    NS_ENSURE_SUCCESS(rv, rv);
-    
-    nsCOMPtr<nsIContent> contextAsContent = do_QueryInterface(aContextNode);
-    if (contextAsContent && !contextAsContent->IsNodeOfType(nsINode::eELEMENT)) {
-      contextAsContent = contextAsContent->GetParent();
-      if (contextAsContent && !contextAsContent->IsNodeOfType(nsINode::eELEMENT)) {
-        // can this even happen?
-        contextAsContent = nsnull;
-      }
-    }
-    
-    if (contextAsContent) {
-      parser->ParseFragment(aFragment, 
-                            frag, 
-                            contextAsContent->Tag(), 
-                            contextAsContent->GetNameSpaceID(), 
-                            (document->GetCompatibilityMode() == eCompatibility_NavQuirks));    
-    } else {
-      parser->ParseFragment(aFragment, 
-                            frag, 
-                            nsGkAtoms::body, 
-                            kNameSpaceID_XHTML, 
-                            (document->GetCompatibilityMode() == eCompatibility_NavQuirks));
-    }
-  
-    NS_ADDREF(*aReturn = frag);
-    return NS_OK;
-  }
 
   nsAutoTArray<nsString, 32> tagStack;
   nsAutoString uriStr, nameStr;
   nsCOMPtr<nsIContent> content = do_QueryInterface(aContextNode);
   // just in case we have a text node
   if (content && !content->IsNodeOfType(nsINode::eELEMENT))
     content = content->GetParent();
 
@@ -3683,19 +3630,24 @@ nsContentUtils::CreateContextualFragment
                        NS_LITERAL_STRING("\""));
       }
     }
 
     content = content->GetParent();
   }
 
   nsCAutoString contentType;
+  PRBool bCaseSensitive = PR_TRUE;
   nsAutoString buf;
   document->GetContentType(buf);
   LossyCopyUTF16toASCII(buf, contentType);
+  bCaseSensitive = document->IsCaseSensitive();
+
+  nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(document));
+  PRBool bHTML = htmlDoc && !bCaseSensitive;
 
   // See if the document has a cached fragment parser. nsHTMLDocument is the
   // only one that should really have one at the moment.
   nsCOMPtr<nsIParser> parser = document->GetFragmentParser();
   if (parser) {
     // Get the parser ready to use.
     parser->Reset();
   }
--- a/content/base/src/nsDOMAttribute.cpp
+++ b/content/base/src/nsDOMAttribute.cpp
@@ -694,19 +694,18 @@ nsDOMAttribute::InsertChildAt(nsIContent
 
 nsresult
 nsDOMAttribute::AppendChildTo(nsIContent* aKid, PRBool aNotify)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 nsresult
-nsDOMAttribute::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
+nsDOMAttribute::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
 {
-  NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutations on attribute child removal.");
   if (aIndex != 0 || !mChild) {
     return NS_OK;
   }
 
   nsCOMPtr<nsIContent> child = mChild;
   nsMutationGuard::DidMutate();
   mozAutoDocUpdate updateBatch(GetOwnerDoc(), UPDATE_CONTENT_MODEL, aNotify);
   nsMutationGuard guard;
--- a/content/base/src/nsDOMAttribute.h
+++ b/content/base/src/nsDOMAttribute.h
@@ -93,17 +93,17 @@ public:
   virtual PRBool IsNodeOfType(PRUint32 aFlags) const;
   virtual PRUint32 GetChildCount() const;
   virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
   virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
   virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
   virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                  PRBool aNotify);
   virtual nsresult AppendChildTo(nsIContent* aKid, PRBool aNotify);
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
   virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
   virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
   virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
                                     nsPresContext* aPresContext,
                                     nsEventStatus* aEventStatus);
   virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
   virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
                                          const nsIID& aIID);
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -3216,32 +3216,30 @@ nsDocument::AppendChildTo(nsIContent* aK
   // subclasses wanted to hook into this stuff, they would have
   // overridden AppendChildTo.
   // XXXbz maybe this should just be a non-virtual method on nsINode?
   // Feels that way to me...
   return nsDocument::InsertChildAt(aKid, GetChildCount(), aNotify);
 }
 
 nsresult
-nsDocument::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
-{
-  NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutations on document child removal.");
+nsDocument::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
+{
   nsCOMPtr<nsIContent> oldKid = GetChildAt(aIndex);
   if (!oldKid) {
     return NS_OK;
   }
 
   if (oldKid->IsNodeOfType(nsINode::eELEMENT)) {
     // Destroy the link map up front before we mess with the child list.
     DestroyLinkMap();
   }
 
   nsresult rv = nsGenericElement::doRemoveChildAt(aIndex, aNotify, oldKid,
-                                                  nsnull, this, mChildren, 
-                                                  aMutationEvent);
+                                                  nsnull, this, mChildren);
   mCachedRootContent = nsnull;
   return rv;
 }
 
 PRInt32
 nsDocument::GetNumberOfStyleSheets() const
 {
   return mStyleSheets.Count();
--- a/content/base/src/nsDocument.h
+++ b/content/base/src/nsDocument.h
@@ -805,17 +805,17 @@ public:
   virtual PRBool IsNodeOfType(PRUint32 aFlags) const;
   virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
   virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
   virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
   virtual PRUint32 GetChildCount() const;
   virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                  PRBool aNotify);
   virtual nsresult AppendChildTo(nsIContent* aKid, PRBool aNotify);
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
   virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
   virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
   virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
                                     nsPresContext* aPresContext,
                                     nsEventStatus* aEventStatus);
   virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
   virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
                                          const nsIID& aIID);
--- a/content/base/src/nsGenericDOMDataNode.cpp
+++ b/content/base/src/nsGenericDOMDataNode.cpp
@@ -747,17 +747,17 @@ nsGenericDOMDataNode::IndexOf(nsINode* a
 nsresult
 nsGenericDOMDataNode::InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                     PRBool aNotify)
 {
   return NS_OK;
 }
 
 nsresult
-nsGenericDOMDataNode::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
+nsGenericDOMDataNode::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
 {
   return NS_OK;
 }
 
 // virtual
 PRBool
 nsGenericDOMDataNode::MayHaveFrame() const
 {
--- a/content/base/src/nsGenericDOMDataNode.h
+++ b/content/base/src/nsGenericDOMDataNode.h
@@ -161,17 +161,17 @@ public:
 
   // nsINode methods
   virtual PRUint32 GetChildCount() const;
   virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
   virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
   virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
   virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                  PRBool aNotify);
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
   virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
   virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
   virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
                                     nsPresContext* aPresContext,
                                     nsEventStatus* aEventStatus);
   virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
   virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
                                          const nsIID& aIID);
--- a/content/base/src/nsGenericElement.cpp
+++ b/content/base/src/nsGenericElement.cpp
@@ -3241,36 +3241,35 @@ nsGenericElement::doInsertChildAt(nsICon
       nsEventDispatcher::Dispatch(aKid, nsnull, &mutation);
     }
   }
 
   return NS_OK;
 }
 
 nsresult
-nsGenericElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
+nsGenericElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
 {
   nsCOMPtr<nsIContent> oldKid = mAttrsAndChildren.GetSafeChildAt(aIndex);
   NS_ASSERTION(oldKid == GetChildAt(aIndex), "Unexpected child in RemoveChildAt");
 
   if (oldKid) {
     return doRemoveChildAt(aIndex, aNotify, oldKid, this, GetCurrentDoc(),
-                           mAttrsAndChildren, aMutationEvent);
+                           mAttrsAndChildren);
   }
 
   return NS_OK;
 }
 
 /* static */
 nsresult
 nsGenericElement::doRemoveChildAt(PRUint32 aIndex, PRBool aNotify,
                                   nsIContent* aKid, nsIContent* aParent,
                                   nsIDocument* aDocument,
-                                  nsAttrAndChildArray& aChildArray,
-                                  PRBool aMutationEvent)
+                                  nsAttrAndChildArray& aChildArray)
 {
   NS_PRECONDITION(aParent || aDocument, "Must have document if no parent!");
   NS_PRECONDITION(!aParent || aParent->GetCurrentDoc() == aDocument,
                   "Incorrect aDocument");
 
 #ifdef ACCESSIBILITY
   // A11y needs to be notified of content removals first, so accessibility
   // events can be fired before any changes occur
@@ -3296,17 +3295,16 @@ nsGenericElement::doRemoveChildAt(PRUint
                   container->IndexOf(aKid) == (PRInt32)aIndex, "Bogus aKid");
 
   mozAutoDocUpdate updateBatch(aDocument, UPDATE_CONTENT_MODEL, aNotify);
 
   nsMutationGuard guard;
 
   mozAutoSubtreeModified subtree(nsnull, nsnull);
   if (aNotify &&
-      aMutationEvent &&
       nsContentUtils::HasMutationListeners(aKid,
         NS_EVENT_BITS_MUTATION_NODEREMOVED, container)) {
     mozAutoRemovableBlockerRemover blockerRemover;
 
     nsMutationEvent mutation(PR_TRUE, NS_MUTATION_NODEREMOVED);
     mutation.mRelatedNode = do_QueryInterface(container);
 
     subtree.UpdateTarget(container->GetOwnerDoc(), container);
--- a/content/base/src/nsGenericElement.h
+++ b/content/base/src/nsGenericElement.h
@@ -349,17 +349,17 @@ public:
 
   // nsINode interface methods
   virtual PRUint32 GetChildCount() const;
   virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
   virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
   virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
   virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                  PRBool aNotify);
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
   virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
   virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
   virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
                                     nsPresContext* aPresContext,
                                     nsEventStatus* aEventStatus);
   virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
   virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
                                          const nsIID& aIID);
@@ -649,18 +649,17 @@ public:
    *                  non-null if aParent is null (in which case aKid is being
    *                  removed as its child) and must match
    *                  aParent->GetCurrentDoc() if aParent is not null.
    * @param aChildArray The child array to work with
    */
   static nsresult doRemoveChildAt(PRUint32 aIndex, PRBool aNotify,
                                   nsIContent* aKid, nsIContent* aParent,
                                   nsIDocument* aDocument,
-                                  nsAttrAndChildArray& aChildArray,
-                                  PRBool aMutationEvent);
+                                  nsAttrAndChildArray& aChildArray);
 
   /**
    * Helper methods for implementing querySelector/querySelectorAll
    */
   static nsresult doQuerySelector(nsINode* aRoot, const nsAString& aSelector,
                                   nsIDOMElement **aReturn);
   static nsresult doQuerySelectorAll(nsINode* aRoot,
                                      const nsAString& aSelector,
--- a/content/base/src/nsHTMLContentSerializer.cpp
+++ b/content/base/src/nsHTMLContentSerializer.cpp
@@ -63,17 +63,16 @@
 #include "nsEscape.h"
 #include "nsITextToSubURI.h"
 #include "nsCRT.h"
 #include "nsIParserService.h"
 #include "nsContentUtils.h"
 #include "nsLWBrkCIID.h"
 #include "nsIScriptElement.h"
 #include "nsAttrName.h"
-#include "nsHtml5Module.h"
 
 static const char kMozStr[] = "moz";
 
 static const PRInt32 kLongLineLen = 128;
 
 nsresult NS_NewHTMLContentSerializer(nsIContentSerializer** aSerializer)
 {
   nsHTMLContentSerializer* it = new nsHTMLContentSerializer();
@@ -96,59 +95,37 @@ nsHTMLContentSerializer::~nsHTMLContentS
 
 NS_IMETHODIMP
 nsHTMLContentSerializer::AppendDocumentStart(nsIDOMDocument *aDocument,
                                              nsAString& aStr)
 {
   return NS_OK;
 }
 
-#include "nsIHTMLDocument.h"
 void 
 nsHTMLContentSerializer::SerializeAttributes(nsIContent* aContent,
                                              nsIDOMElement *aOriginalElement,
                                              nsAString& aTagPrefix,
                                              const nsAString& aTagNamespaceURI,
                                              nsIAtom* aTagName,
                                              nsAString& aStr)
 {
-  PRInt32 count = aContent->GetAttrCount();
-  if (!count)
-    return;
+  nsresult rv;
+  PRUint32 index, count;
+  nsAutoString nameStr, valueStr;
 
-  nsresult rv;
-  nsAutoString nameStr, valueStr;
+  count = aContent->GetAttrCount();
+
   NS_NAMED_LITERAL_STRING(_mozStr, "_moz");
 
-  // HTML5 parser stored them in the order they were parsed so we want to
-  // loop forward in that case.
-  nsIDocument* doc = aContent->GetOwnerDocument();
-  PRBool caseSensitive = doc && doc->IsCaseSensitive();
-  PRBool loopForward = PR_FALSE;
-  if (!caseSensitive) {
-    nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(doc));
-    if (htmlDoc) {
-      loopForward = nsHtml5Module::Enabled;
-    }
-  }
-  PRInt32 index, limit, step;
-  if (loopForward) {
-    index = 0;
-    limit = count;
-    step = 1;
-  }
-  else {
-    // Loop backward over the attributes, since the order they are stored in is
-    // the opposite of the order they were parsed in (see bug 213347 for reason).
-    index = count - 1;
-    limit = -1;
-    step = -1;
-  }
-  
-  for (; index != limit; index += step) {
+  // Loop backward over the attributes, since the order they are stored in is
+  // the opposite of the order they were parsed in (see bug 213347 for reason).
+  // index is unsigned, hence index >= 0 is always true.
+  for (index = count; index > 0; ) {
+    --index;
     const nsAttrName* name = aContent->GetAttrNameAt(index);
     PRInt32 namespaceID = name->NamespaceID();
     nsIAtom* attrName = name->LocalName();
 
     // Filter out any attribute starting with [-|_]moz
     const char* sharedName;
     attrName->GetUTF8String(&sharedName);
     if ((('_' == *sharedName) || ('-' == *sharedName)) &&
--- a/content/base/test/test_bug417255.html
+++ b/content/base/test/test_bug417255.html
@@ -10,30 +10,30 @@ https://bugzilla.mozilla.org/show_bug.cg
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
   <style>
   .spacer { display:inline-block; height:10px; }
   </style>
 </head>
 <body>
 
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=417255">Mozilla Bug 417255</a>
-<div id="display" style="width:800px"></div>
+<p id="display" style="width:800px"></p>
 
-<div><span id="s1" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
+<p><span id="s1" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
 <div style="width:500px; height:100px; background:yellow;"></div>
-<span class="spacer" style="width:200px"></span></span></div>
+<span class="spacer" style="width:200px"></span></span>
 
-<div><span id="s2" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
+<p><span id="s2" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
 <div style="width:150px; height:100px; background:yellow;"></div>
-<span class="spacer" style="width:200px"></span></span></div>
+<span class="spacer" style="width:200px"></span></span>
 
 <!-- test nested spans around the IB split -->
-<div><span id="s3" style="border:2px dotted red;"><span><span class="spacer" style="width:100px"></span>
+<p><span id="s3" style="border:2px dotted red;"><span><span class="spacer" style="width:100px"></span>
 <div style="width:500px; height:100px; background:yellow;"></div>
-<span class="spacer" style="width:200px"></span></span></span></div>
+<span class="spacer" style="width:200px"></span></span></span>
 
 <div id="content" style="display: none">
 
 </div>
 
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
--- a/content/html/content/src/nsHTMLOptGroupElement.cpp
+++ b/content/html/content/src/nsHTMLOptGroupElement.cpp
@@ -73,17 +73,17 @@ public:
   NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLElement::)
 
   // nsIDOMHTMLOptGroupElement
   NS_DECL_NSIDOMHTMLOPTGROUPELEMENT
 
   // nsGenericElement
   virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                  PRBool aNotify);
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
 
   // nsIContent
   virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
 
   virtual PRInt32 IntrinsicState() const;
  
   virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
 
@@ -180,21 +180,20 @@ nsHTMLOptGroupElement::InsertChildAt(nsI
   nsresult rv = nsGenericHTMLElement::InsertChildAt(aKid, aIndex, aNotify);
   if (NS_FAILED(rv)) {
     safeMutation.MutationFailed();
   }
   return rv;
 }
 
 nsresult
-nsHTMLOptGroupElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
+nsHTMLOptGroupElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
 {
-  NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutation events on optgroup child removal.");
   nsSafeOptionListMutation safeMutation(GetSelect(), this, nsnull, aIndex);
-  nsresult rv = nsGenericHTMLElement::RemoveChildAt(aIndex, aNotify, aMutationEvent);
+  nsresult rv = nsGenericHTMLElement::RemoveChildAt(aIndex, aNotify);
   if (NS_FAILED(rv)) {
     safeMutation.MutationFailed();
   }
   return rv;
 }
 
 PRInt32
 nsHTMLOptGroupElement::IntrinsicState() const
--- a/content/html/content/src/nsHTMLSelectElement.cpp
+++ b/content/html/content/src/nsHTMLSelectElement.cpp
@@ -203,21 +203,20 @@ nsHTMLSelectElement::InsertChildAt(nsICo
   nsresult rv = nsGenericHTMLFormElement::InsertChildAt(aKid, aIndex, aNotify);
   if (NS_FAILED(rv)) {
     safeMutation.MutationFailed();
   }
   return rv;
 }
 
 nsresult
-nsHTMLSelectElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
+nsHTMLSelectElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
 {
-  NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutations on select child removal.");
   nsSafeOptionListMutation safeMutation(this, this, nsnull, aIndex);
-  nsresult rv = nsGenericHTMLFormElement::RemoveChildAt(aIndex, aNotify, aMutationEvent);
+  nsresult rv = nsGenericHTMLFormElement::RemoveChildAt(aIndex, aNotify);
   if (NS_FAILED(rv)) {
     safeMutation.MutationFailed();
   }
   return rv;
 }
 
 
 // SelectElement methods
--- a/content/html/content/src/nsHTMLSelectElement.h
+++ b/content/html/content/src/nsHTMLSelectElement.h
@@ -266,17 +266,17 @@ public:
   NS_DECL_NSIDOMNSHTMLSELECTELEMENT
 
   // nsIContent
   virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
 
   virtual PRBool IsHTMLFocusable(PRBool *aIsFocusable, PRInt32 *aTabIndex);
   virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
                                  PRBool aNotify);
-  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
+  virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
 
   // Overriden nsIFormControl methods
   NS_IMETHOD_(PRInt32) GetType() const { return NS_FORM_SELECT; }
   NS_IMETHOD Reset();
   NS_IMETHOD SubmitNamesValues(nsIFormSubmission* aFormSubmission,
                                nsIContent* aSubmitElement);
   NS_IMETHOD SaveState();
   virtual PRBool RestoreState(nsPresState* aState);
new file mode 100644
--- /dev/null
+++ b/content/html/document/reftests/bug448564-2_malformed.html
@@ -0,0 +1,11 @@
+<html>
+<body>
+  <s>
+  <form>a</form>
+  <iframe></iframe>
+  <script src=a></script>
+  <form></form>
+  <table>
+  <optgroup>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/content/html/document/reftests/bug448564-2_well-formed.html
@@ -0,0 +1,14 @@
+<html>
+<body>
+  <s>
+    <form>a</form>
+    <iframe></iframe>
+  </s>
+  <form></form>
+  <form>
+    <select>
+      <optgroup></optgroup>
+    </select>
+  </form>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/content/html/document/reftests/bug448564-3_malformed.html
@@ -0,0 +1,4 @@
+<table>
+  <th>head</th>
+  <optgroup></optgroup>
+</table>
new file mode 100644
--- /dev/null
+++ b/content/html/document/reftests/bug448564-3_well-formed.html
@@ -0,0 +1,8 @@
+<form>
+  <select>
+    <optgroup></optgroup>
+  </select>
+</form>
+<table>
+  <th>head</th>
+</table>
new file mode 100644
--- /dev/null
+++ b/content/html/document/reftests/bug448564-5_malformed.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+  <link rel="stylesheet" type="text/css"
+        href="bug448564_forms.css">
+  </link>
+</head>
+<body>
+  <form>
+    <table>
+      <optgroup></optgroup>
+    </table>
+    <input type="button" value="button"></input>
+  </form>
+  <b>asdf</b>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/content/html/document/reftests/bug448564-5_well-formed.html
@@ -0,0 +1,17 @@
+<html>
+<head>
+  <link rel="stylesheet" type="text/css"
+        href="bug448564_forms.css">
+  </link>
+</head>
+<body>
+  <form>
+    <select>
+      <optgroup></optgroup>
+    </select>
+    <table></table>
+    <input type="button" value="button"></input>
+  </form>
+  <b>asdf</b>
+</body>
+</html>
--- a/content/html/document/reftests/reftests.list
+++ b/content/html/document/reftests/reftests.list
@@ -1,4 +1,10 @@
 == bug448564-1_malformed.html bug448564-1_well-formed.html
 == bug448564-1_malformed.html bug448564-1_ideal.html
 
+== bug448564-2_malformed.html bug448564-2_well-formed.html
+
+== bug448564-3_malformed.html bug448564-3_well-formed.html
+
 == bug448564-4a.html          bug448564-4b.html
+
+== bug448564-5_malformed.html bug448564-5_well-formed.html
--- a/content/html/document/src/Makefile.in
+++ b/content/html/document/src/Makefile.in
@@ -71,17 +71,16 @@ REQUIRES	= xpcom \
 		  xpconnect \
 		  unicharutil \
 		  commandhandler \
 		  composer \
 		  editor \
 		  plugin \
 		  txtsvc \
 		  uriloader \
-		  html5 \
 		  $(NULL)
 
 CPPSRCS		= \
 		nsHTMLContentSink.cpp \
 		nsHTMLFragmentContentSink.cpp \
 		nsHTMLDocument.cpp \
 		nsImageDocument.cpp \
 		nsMediaDocument.cpp \
--- a/content/html/document/src/nsHTMLContentSink.cpp
+++ b/content/html/document/src/nsHTMLContentSink.cpp
@@ -206,16 +206,18 @@ public:
   NS_IMETHOD DidProcessAToken(void);
   NS_IMETHOD NotifyTagObservers(nsIParserNode* aNode);
   NS_IMETHOD BeginContext(PRInt32 aID);
   NS_IMETHOD EndContext(PRInt32 aID);
   NS_IMETHOD OpenHead();
   NS_IMETHOD IsEnabled(PRInt32 aTag, PRBool* aReturn);
   NS_IMETHOD_(PRBool) IsFormOnStack();
 
+  virtual nsresult ProcessMETATag(nsIContent* aContent);
+
 #ifdef DEBUG
   // nsIDebugDumpContent
   NS_IMETHOD DumpContentModel();
 #endif
 
 protected:
   // If aCheckIfPresent is true, will only set an attribute in cases
   // when it's not already set.
@@ -2948,16 +2950,43 @@ HTMLContentSink::ProcessLINKTag(const ns
         }
       }
     }
   }
 
   return result;
 }
 
+/* 
+ * Extends nsContentSink::ProcessMETATag to grab the 'viewport' meta tag. This
+ * information is ignored by the generic content sink because it only stores
+ * http-equiv meta tags.
+ *
+ * Initially implemented for bug #436083
+ */
+nsresult
+HTMLContentSink::ProcessMETATag(nsIContent *aContent) {
+
+  /* Call the superclass method. */
+  nsContentSink::ProcessMETATag(aContent);
+
+  nsresult rv = NS_OK;
+
+  /* Look for the viewport meta tag. If we find it, process it and put the
+   * data into the document header. */
+  if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
+                            nsGkAtoms::viewport, eIgnoreCase)) {
+    nsAutoString value;
+    aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
+    rv = nsContentUtils::ProcessViewportInfo(mDocument, value);
+  }
+
+  return rv;
+}
+
 #ifdef DEBUG
 void
 HTMLContentSink::ForceReflow()
 {
   mCurrentContext->FlushTags();
 }
 #endif
 
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -136,17 +136,16 @@
 #include "nsNodeInfoManager.h"
 #include "nsIEditor.h"
 #include "nsIEditorDocShell.h"
 #include "nsIEditorStyleSheets.h"
 #include "nsIInlineSpellChecker.h"
 #include "nsRange.h"
 #include "mozAutoDocUpdate.h"
 #include "nsCCUncollectableMarker.h"
-#include "nsHtml5Module.h"
 #include "prprf.h"
 
 #define NS_MAX_DOCUMENT_WRITE_DEPTH 20
 
 #define DETECTOR_CONTRACTID_MAX 127
 static char g_detector_contractid[DETECTOR_CONTRACTID_MAX + 1];
 static PRBool gInitDetector = PR_FALSE;
 static PRBool gPlugDetector = PR_FALSE;
@@ -650,35 +649,25 @@ nsresult
 nsHTMLDocument::StartDocumentLoad(const char* aCommand,
                                   nsIChannel* aChannel,
                                   nsILoadGroup* aLoadGroup,
                                   nsISupports* aContainer,
                                   nsIStreamListener **aDocListener,
                                   PRBool aReset,
                                   nsIContentSink* aSink)
 {
-  PRBool loadAsHtml5 = nsHtml5Module::Enabled;
-  if (aSink) {
-    loadAsHtml5 = PR_FALSE;
-  }
-
   nsCAutoString contentType;
   aChannel->GetContentType(contentType);
 
   if (contentType.Equals("application/xhtml+xml") &&
       (!aCommand || nsCRT::strcmp(aCommand, "view-source") != 0)) {
     // We're parsing XHTML as XML, remember that.
 
     mIsRegularHTML = PR_FALSE;
     mCompatMode = eCompatibility_FullStandards;
-    loadAsHtml5 = PR_FALSE;
-  }
-  
-  if (!(contentType.Equals("text/html") && aCommand && !nsCRT::strcmp(aCommand, "view"))) {
-    loadAsHtml5 = PR_FALSE;
   }
 #ifdef DEBUG
   else {
     NS_ASSERTION(mIsRegularHTML,
                  "Hey, someone forgot to reset mIsRegularHTML!!!");
   }
 #endif
 
@@ -715,22 +704,18 @@ nsHTMLDocument::StartDocumentLoad(const 
   if (cachingChan) {
     nsCOMPtr<nsISupports> cacheToken;
     cachingChan->GetCacheToken(getter_AddRefs(cacheToken));
     if (cacheToken)
       cacheDescriptor = do_QueryInterface(cacheToken);
   }
 
   if (needsParser) {
-    if (loadAsHtml5) {
-      mParser = nsHtml5Module::NewHtml5Parser();
-    } else {
-      mParser = do_CreateInstance(kCParserCID, &rv);
-      NS_ENSURE_SUCCESS(rv, rv);
-    }
+    mParser = do_CreateInstance(kCParserCID, &rv);
+    NS_ENSURE_SUCCESS(rv, rv);
   }
 
   PRInt32 textType = GET_BIDI_OPTION_TEXTTYPE(GetBidiOptions());
 
   // Look for the parent document.  Note that at this point we don't have our
   // content viewer set up yet, and therefore do not have a useful
   // mParentDocument.
 
@@ -935,38 +920,32 @@ nsHTMLDocument::StartDocumentLoad(const 
           charset.get(), charsetSource);
 #endif
     mParser->SetDocumentCharset(parserCharset, parserCharsetSource);
     mParser->SetCommand(aCommand);
 
     // create the content sink
     nsCOMPtr<nsIContentSink> sink;
 
-    if (aSink) {
-      NS_ASSERTION((!loadAsHtml5), "Panic: We are loading as HTML5 and someone tries to set an external sink!");
+    if (aSink)
       sink = aSink;
-    } else {
+    else {
       if (IsXHTML()) {
         nsCOMPtr<nsIXMLContentSink> xmlsink;
         rv = NS_NewXMLContentSink(getter_AddRefs(xmlsink), this, uri,
                                   docShell, aChannel);
 
         sink = xmlsink;
       } else {
-        if (loadAsHtml5) {
-          nsHtml5Module::Initialize(mParser, this, uri, docShell, aChannel);
-          sink = mParser->GetContentSink();
-        } else {
-          nsCOMPtr<nsIHTMLContentSink> htmlsink;
-
-          rv = NS_NewHTMLContentSink(getter_AddRefs(htmlsink), this, uri,
-                                     docShell, aChannel);
-
-          sink = htmlsink;
-        }
+        nsCOMPtr<nsIHTMLContentSink> htmlsink;
+
+        rv = NS_NewHTMLContentSink(getter_AddRefs(htmlsink), this, uri,
+                                   docShell, aChannel);
+
+        sink = htmlsink;
       }
       NS_ENSURE_SUCCESS(rv, rv);
 
       NS_ASSERTION(sink,
                    "null sink with successful result from factory method");
     }
 
     mParser->SetContentSink(sink);
@@ -1800,18 +1779,16 @@ nsresult
 nsHTMLDocument::OpenCommon(const nsACString& aContentType, PRBool aReplace)
 {
   if (IsXHTML()) {
     // No calling document.open() on XHTML
 
     return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
   }
 
-  PRBool loadAsHtml5 = nsHtml5Module::Enabled;
-
   nsresult rv = NS_OK;
 
   // If we already have a parser we ignore the document.open call.
   if (mParser) {
 
     return NS_OK;
   }
 
@@ -1953,45 +1930,36 @@ nsHTMLDocument::OpenCommon(const nsACStr
     TurnEditingOff();
     EditingStateChanged();
   }
 
   // Store the security info of the caller now that we're done
   // resetting the document.
   mSecurityInfo = securityInfo;
 
-  if (loadAsHtml5) {
-    mParser = nsHtml5Module::NewHtml5Parser();
-    rv = NS_OK;
-  } else {
-    mParser = do_CreateInstance(kCParserCID, &rv);  
-  }
+  mParser = do_CreateInstance(kCParserCID, &rv);
 
   // This will be propagated to the parser when someone actually calls write()
   mContentType = aContentType;
 
   mWriteState = eDocumentOpened;
 
   if (NS_SUCCEEDED(rv)) {
-    if (loadAsHtml5) {
-      nsHtml5Module::Initialize(mParser, this, uri, shell, channel);
-    } else {
-      nsCOMPtr<nsIHTMLContentSink> sink;
-
-      rv = NS_NewHTMLContentSink(getter_AddRefs(sink), this, uri, shell,
-                                 channel);
-      if (NS_FAILED(rv)) {
-        // Don't use a parser without a content sink.
-        mParser = nsnull;
-        mWriteState = eNotWriting;
-        return rv;
-      }
-
-      mParser->SetContentSink(sink);
+    nsCOMPtr<nsIHTMLContentSink> sink;
+
+    rv = NS_NewHTMLContentSink(getter_AddRefs(sink), this, uri, shell,
+                               channel);
+    if (NS_FAILED(rv)) {
+      // Don't use a parser without a content sink.
+      mParser = nsnull;
+      mWriteState = eNotWriting;
+      return rv;
     }
+
+    mParser->SetContentSink(sink);
   }
 
   // Prepare the docshell and the document viewer for the impending
   // out of band document.write()
   shell->PrepareForNewContentModel();
 
   // Now check whether we were opened with a "replace" argument.  If
   // so, we need to tell the docshell to not create a new history
deleted file mode 100644
--- a/content/html/parser/Makefile.in
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either of the GNU General Public License Version 2 or later (the "GPL"),
-# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-DIRS		= public src
-
-# ifdef ENABLE_TESTS
-# DIRS		+= test
-# endif
-
-include $(topsrcdir)/config/rules.mk
-
deleted file mode 100644
--- a/content/html/parser/javasrc/AttributeName.java
+++ /dev/null
@@ -1,2793 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-import java.util.Arrays;
-
-import nu.validator.htmlparser.annotation.IdType;
-import nu.validator.htmlparser.annotation.Local;
-import nu.validator.htmlparser.annotation.NoLength;
-import nu.validator.htmlparser.annotation.NsUri;
-import nu.validator.htmlparser.annotation.Prefix;
-import nu.validator.htmlparser.annotation.QName;
-import nu.validator.htmlparser.annotation.Virtual;
-
-public final class AttributeName
-// Uncomment to regenerate
-//        implements Comparable<AttributeName> 
-{
-
-    private static final @NoLength @NsUri String[] ALL_NO_NS = { "", "", "",
-    // [NOCPP[
-            ""
-    // ]NOCPP]
-    };
-
-    private static final @NoLength @NsUri String[] XMLNS_NS = { "",
-            "http://www.w3.org/2000/xmlns/", "http://www.w3.org/2000/xmlns/",
-            // [NOCPP[
-            ""
-    // ]NOCPP]
-    };
-
-    private static final @NoLength @NsUri String[] XML_NS = { "",
-            "http://www.w3.org/XML/1998/namespace",
-            "http://www.w3.org/XML/1998/namespace",
-            // [NOCPP[
-            ""
-    // ]NOCPP]
-    };
-
-    private static final @NoLength @NsUri String[] XLINK_NS = { "",
-            "http://www.w3.org/1999/xlink", "http://www.w3.org/1999/xlink",
-            // [NOCPP[
-            ""
-    // ]NOCPP]
-    };
-
-    // [NOCPP[
-    private static final @NoLength @NsUri String[] LANG_NS = { "", "", "",
-            "http://www.w3.org/XML/1998/namespace" };
-
-    // ]NOCPP]
-
-    private static final @NoLength @Prefix String[] ALL_NO_PREFIX = { null,
-            null, null,
-            // [NOCPP[
-            null
-    // ]NOCPP]
-    };
-
-    private static final @NoLength @Prefix String[] XMLNS_PREFIX = { null,
-            "xmlns", "xmlns",
-            // [NOCPP[
-            null
-    // ]NOCPP]
-    };
-
-    private static final @NoLength @Prefix String[] XLINK_PREFIX = { null,
-            "xlink", "xlink",
-            // [NOCPP[
-            null
-    // ]NOCPP]
-    };
-
-    private static final @NoLength @Prefix String[] XML_PREFIX = { null, "xml",
-            "xml",
-            // [NOCPP[
-            null
-    // ]NOCPP]
-    };
-
-    // [NOCPP[
-
-    private static final @NoLength @Prefix String[] LANG_PREFIX = { null, null,
-            null, "xml" };
-
-    private static final boolean[] ALL_NCNAME = { true, true, true, true };
-
-    private static final boolean[] ALL_NO_NCNAME = { false, false, false, false };
-
-    private static @QName String[] COMPUTE_QNAME(String[] local, String[] prefix) {
-        @QName String[] rv = new String[4];
-        for (int i = 0; i < rv.length; i++) {
-            if (prefix[i] == null) {
-                rv[i] = local[i];
-            } else {
-                rv[i] = (prefix[i] + ':' + local[i]).intern();
-            }
-        }
-        return rv;
-    }
-
-    // ]NOCPP]
-
-    private static @NoLength @Local String[] SVG_DIFFERENT(@Local String name,
-            @Local String camel) {
-        @NoLength @Local String[] rv = new String[4];
-        rv[0] = name;
-        rv[1] = name;
-        rv[2] = camel;
-        // [NOCPP[
-        rv[3] = name;
-        // ]NOCPP]
-        return rv;
-    }
-
-    private static @NoLength @Local String[] MATH_DIFFERENT(@Local String name,
-            @Local String camel) {
-        @NoLength @Local String[] rv = new String[4];
-        rv[0] = name;
-        rv[1] = camel;
-        rv[2] = name;
-        // [NOCPP[
-        rv[3] = name;
-        // ]NOCPP]
-        return rv;
-    }
-
-    private static @NoLength @Local String[] COLONIFIED_LOCAL(
-            @Local String name, @Local String suffix) {
-        @NoLength @Local String[] rv = new String[4];
-        rv[0] = name;
-        rv[1] = suffix;
-        rv[2] = suffix;
-        // [NOCPP[
-        rv[3] = name;
-        // ]NOCPP]
-        return rv;
-    }
-
-    private static @NoLength @Local String[] SAME_LOCAL(@Local String name) {
-        @NoLength @Local String[] rv = new String[4];
-        rv[0] = name;
-        rv[1] = name;
-        rv[2] = name;
-        // [NOCPP[
-        rv[3] = name;
-        // ]NOCPP]
-        return rv;
-    }
-
-    /**
-     * Returns an attribute name by buffer.
-     * 
-     * <p>
-     * C++ ownership: The return value is either released by the caller if the
-     * attribute is a duplicate or the ownership is transferred to
-     * HtmlAttributes and released upon clearing or destroying that object.
-     * 
-     * @param buf
-     * @param offset
-     * @param length
-     * @param checkNcName
-     * @return
-     */
-    static AttributeName nameByBuffer(@NoLength char[] buf, int offset,
-            int length
-            // [NOCPP[
-            , boolean checkNcName
-    // ]NOCPP]
-    ) {
-        // XXX deal with offset
-        int hash = AttributeName.bufToHash(buf, length);
-        int index = Arrays.binarySearch(AttributeName.ATTRIBUTE_HASHES, hash);
-        if (index < 0) {
-            return AttributeName.createAttributeName(
-                    Portability.newLocalNameFromBuffer(buf, offset, length)
-                    // [NOCPP[
-                    , checkNcName
-            // ]NOCPP]
-            );
-        } else {
-            AttributeName rv = AttributeName.ATTRIBUTE_NAMES[index];
-            @Local String name = rv.getLocal(AttributeName.HTML);
-            if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
-                return AttributeName.createAttributeName(
-                        Portability.newLocalNameFromBuffer(buf, offset, length)
-                        // [NOCPP[
-                        , checkNcName
-                // ]NOCPP]
-                );
-            }
-            return rv;
-        }
-    }
-
-    /**
-     * This method has to return a unique integer for each well-known
-     * lower-cased attribute name.
-     * 
-     * @param buf
-     * @param len
-     * @return
-     */
-    private static int bufToHash(@NoLength char[] buf, int len) {
-        int hash2 = 0;
-        int hash = len;
-        hash <<= 5;
-        hash += buf[0] - 0x60;
-        int j = len;
-        for (int i = 0; i < 4 && j > 0; i++) {
-            j--;
-            hash <<= 5;
-            hash += buf[j] - 0x60;
-            hash2 <<= 6;
-            hash2 += buf[i] - 0x5F;
-        }
-        return hash ^ hash2;
-    }
-
-    public static final int HTML = 0;
-
-    public static final int MATHML = 1;
-
-    public static final int SVG = 2;
-
-    // [NOCPP[
-
-    public static final int HTML_LANG = 3;
-
-    private final @IdType String type;
-
-    // ]NOCPP]
-
-    private final @NsUri @NoLength String[] uri;
-
-    private final @Local @NoLength String[] local;
-
-    private final @Prefix @NoLength String[] prefix;
-
-    // [NOCPP[
-
-    private final @QName @NoLength String[] qName;
-
-    // XXX convert to bitfield
-    private final @NoLength boolean[] ncname;
-
-    private final boolean xmlns;
-
-    /**
-     * @param type
-     * @param uri
-     * @param local
-     * @param name
-     * @param ncname
-     * @param xmlns
-     */
-    private AttributeName(@NsUri @NoLength String[] uri,
-            @Local @NoLength String[] local, @Prefix @NoLength String[] prefix,
-            @NoLength boolean[] ncname, boolean xmlns, @IdType String type) {
-        this.type = type;
-        this.uri = uri;
-        this.local = local;
-        this.prefix = prefix;
-
-        this.qName = COMPUTE_QNAME(local, prefix);
-        this.ncname = ncname;
-        this.xmlns = xmlns;
-    }
-
-    // ]NOCPP]
-
-    protected AttributeName(@NsUri @NoLength String[] uri,
-            @Local @NoLength String[] local, @Prefix @NoLength String[] prefix
-            // [NOCPP[
-            , @NoLength boolean[] ncname, boolean xmlns
-    // ]NOCPP]
-    ) {
-        // [NOCPP[
-        this.type = "CDATA";
-        // ]NOCPP]
-        this.uri = uri;
-        this.local = local;
-        this.prefix = prefix;
-        // [NOCPP[
-        this.qName = COMPUTE_QNAME(local, prefix);
-        this.ncname = ncname;
-        this.xmlns = xmlns;
-        // ]NOCPP]
-    }
-
-    private static AttributeName createAttributeName(@Local String name
-    // [NOCPP[
-            , boolean checkNcName
-    // ]NOCPP]
-    ) {
-        // [NOCPP[
-        boolean ncName = true;
-        boolean xmlns = name.startsWith("xmlns:");
-        if (checkNcName) {
-            if (xmlns) {
-                ncName = false;
-            } else {
-                ncName = NCName.isNCName(name);
-            }
-        }
-        // ]NOCPP]
-        return new AttributeName(AttributeName.ALL_NO_NS,
-                AttributeName.SAME_LOCAL(name), ALL_NO_PREFIX
-                // ]NOCPP]
-                , (ncName ? AttributeName.ALL_NCNAME
-                        : AttributeName.ALL_NO_NCNAME), xmlns
-        // ]NOCPP]
-        );
-    }
-
-    @Virtual void release() {
-        // No-op in Java.
-        // Implement as |delete this;| in subclass.
-    }
-
-    @SuppressWarnings("unused") private void destructor() {
-        Portability.releaseLocal(local[0]); // this must be a no-op for static
-        // locals
-        // for non-static cases the other array slots contain the same pointer
-        // as weak references.
-        Portability.deleteArray(local);
-    }
-
-    // [NOCPP[
-    static AttributeName create(@Local String name) {
-        return new AttributeName(AttributeName.ALL_NO_NS,
-                AttributeName.SAME_LOCAL(name), ALL_NO_PREFIX,
-                AttributeName.ALL_NCNAME, false);
-    }
-
-    public boolean isNcName(int mode) {
-        return ncname[mode];
-    }
-
-    public boolean isXmlns() {
-        return xmlns;
-    }
-
-    boolean isCaseFolded() {
-        return this == AttributeName.ACTIVE || this == AttributeName.ALIGN
-                || this == AttributeName.ASYNC
-                || this == AttributeName.AUTOCOMPLETE
-                || this == AttributeName.AUTOFOCUS
-                || this == AttributeName.AUTOSUBMIT
-                || this == AttributeName.CHECKED || this == AttributeName.CLEAR
-                || this == AttributeName.COMPACT
-                || this == AttributeName.DATAFORMATAS
-                || this == AttributeName.DECLARE
-                || this == AttributeName.DEFAULT || this == AttributeName.DEFER
-                || this == AttributeName.DIR || this == AttributeName.DISABLED
-                || this == AttributeName.ENCTYPE || this == AttributeName.FRAME
-                || this == AttributeName.ISMAP || this == AttributeName.METHOD
-                || this == AttributeName.MULTIPLE
-                || this == AttributeName.NOHREF
-                || this == AttributeName.NORESIZE
-                || this == AttributeName.NOSHADE
-                || this == AttributeName.NOWRAP
-                || this == AttributeName.READONLY
-                || this == AttributeName.REPLACE
-                || this == AttributeName.REQUIRED
-                || this == AttributeName.RULES || this == AttributeName.SCOPE
-                || this == AttributeName.SCROLLING
-                || this == AttributeName.SELECTED
-                || this == AttributeName.SHAPE || this == AttributeName.STEP
-                || this == AttributeName.TYPE || this == AttributeName.VALIGN
-                || this == AttributeName.VALUETYPE;
-    }
-
-    boolean isBoolean() {
-        return this == AttributeName.ACTIVE || this == AttributeName.ASYNC
-                || this == AttributeName.AUTOFOCUS
-                || this == AttributeName.AUTOSUBMIT
-                || this == AttributeName.CHECKED
-                || this == AttributeName.COMPACT
-                || this == AttributeName.DECLARE
-                || this == AttributeName.DEFAULT || this == AttributeName.DEFER
-                || this == AttributeName.DISABLED
-                || this == AttributeName.ISMAP
-                || this == AttributeName.MULTIPLE
-                || this == AttributeName.NOHREF
-                || this == AttributeName.NORESIZE
-                || this == AttributeName.NOSHADE
-                || this == AttributeName.NOWRAP
-                || this == AttributeName.READONLY
-                || this == AttributeName.REQUIRED
-                || this == AttributeName.SELECTED;
-    }
-
-    public @QName String getQName(int mode) {
-        return qName[mode];
-    }
-
-    public @IdType String getType(int mode) {
-        return type;
-    }
-
-    // ]NOCPP]
-
-    public @NsUri String getUri(int mode) {
-        return uri[mode];
-    }
-
-    public @Local String getLocal(int mode) {
-        return local[mode];
-    }
-
-    public @Prefix String getPrefix(int mode) {
-        return prefix[mode];
-    }
-
-    boolean equalsAnother(AttributeName another) {
-        return this.getLocal(AttributeName.HTML) == another.getLocal(AttributeName.HTML);
-    }
-
-    // START CODE ONLY USED FOR GENERATING CODE uncomment to regenerate
-//
-//    /**
-//     * @see java.lang.Object#toString()
-//     */
-//    @Override public String toString() {
-//        return "(" + formatNs() + ", " + formatLocal() + ", " + formatPrefix()
-//                + ", " + formatNcname() + ", " + (xmlns ? "true" : "false")
-//                + ("ID" == type ? ", \"ID\"" : "") + ")";
-//    }
-//
-//    public int compareTo(AttributeName other) {
-//        int thisHash = this.hash();
-//        int otherHash = other.hash();
-//        if (thisHash < otherHash) {
-//            return -1;
-//        } else if (thisHash == otherHash) {
-//            return 0;
-//        } else {
-//            return 1;
-//        }
-//    }
-//
-//    private String formatPrefix() {
-//        if (prefix[0] == null && prefix[1] == null && prefix[2] == null
-//                && prefix[3] == null) {
-//            return "ALL_NO_PREFIX";
-//        } else if (prefix[0] == null && prefix[1] == prefix[2]
-//                && prefix[3] == null) {
-//            if ("xmlns".equals(prefix[1])) {
-//                return "XMLNS_PREFIX";
-//            } else if ("xml".equals(prefix[1])) {
-//                return "XML_PREFIX";
-//            } else if ("xlink".equals(prefix[1])) {
-//                return "XLINK_PREFIX";
-//            } else {
-//                throw new IllegalStateException();
-//            }
-//        } else if (prefix[0] == null && prefix[1] == null && prefix[2] == null
-//                && prefix[3] == "xml") {
-//            return "LANG_PREFIX";
-//        } else {
-//            throw new IllegalStateException();
-//        }
-//    }
-//
-//    private String formatLocal() {
-//        if (local[0] == local[1] && local[0] == local[3]
-//                && local[0] != local[2]) {
-//            return "SVG_DIFFERENT(\"" + local[0] + "\", \"" + local[2] + "\")";
-//        }
-//        if (local[0] == local[2] && local[0] == local[3]
-//                && local[0] != local[1]) {
-//            return "MATH_DIFFERENT(\"" + local[0] + "\", \"" + local[1] + "\")";
-//        }
-//        if (local[0] == local[3] && local[1] == local[2]
-//                && local[0] != local[1]) {
-//            return "COLONIFIED_LOCAL(\"" + local[0] + "\", \"" + local[1]
-//                    + "\")";
-//        }
-//        for (int i = 1; i < local.length; i++) {
-//            if (local[0] != local[i]) {
-//                throw new IllegalStateException();
-//            }
-//        }
-//        return "SAME_LOCAL(\"" + local[0] + "\")";
-//    }
-//
-//    private String formatNs() {
-//        if (uri[0] == "" && uri[1] == "" && uri[2] == "" && uri[3] == "") {
-//            return "ALL_NO_NS";
-//        } else if (uri[0] == "" && uri[1] == uri[2] && uri[3] == "") {
-//            if ("http://www.w3.org/2000/xmlns/".equals(uri[1])) {
-//                return "XMLNS_NS";
-//            } else if ("http://www.w3.org/XML/1998/namespace".equals(uri[1])) {
-//                return "XML_NS";
-//            } else if ("http://www.w3.org/1999/xlink".equals(uri[1])) {
-//                return "XLINK_NS";
-//            } else {
-//                throw new IllegalStateException();
-//            }
-//        } else if (uri[0] == "" && uri[1] == "" && uri[2] == ""
-//                && uri[3] == "http://www.w3.org/XML/1998/namespace") {
-//            return "LANG_NS";
-//        } else {
-//            throw new IllegalStateException();
-//        }
-//    }
-//
-//    private String formatNcname() {
-//        for (int i = 0; i < ncname.length; i++) {
-//            if (!ncname[i]) {
-//                return "new boolean[]{" + ncname[0] + ", " + ncname[1] + ", "
-//                        + ncname[2] + ", " + ncname[3] + "}";
-//            }
-//        }
-//        return "ALL_NCNAME";
-//    }
-//
-//    private String constName() {
-//        String name = getLocal(HTML);
-//        char[] buf = new char[name.length()];
-//        for (int i = 0; i < name.length(); i++) {
-//            char c = name.charAt(i);
-//            if (c == '-' || c == ':') {
-//                buf[i] = '_';
-//            } else if (c >= 'a' && c <= 'z') {
-//                buf[i] = (char) (c - 0x20);
-//            } else {
-//                buf[i] = c;
-//            }
-//        }
-//        String rv = new String(buf);
-//        if ("UNICODE".equals(rv)) {
-//            return "UNI_CODE"; 
-//        }
-//        return rv;
-//    }
-//
-//    private int hash() {
-//        String name = getLocal(HTML);
-//        return bufToHash(name.toCharArray(), name.length());
-//    }
-//
-//    /**
-//     * Regenerate self
-//     * 
-//     * @param args
-//     */
-//    public static void main(String[] args) {
-//        Arrays.sort(ATTRIBUTE_NAMES);
-//        for (int i = 1; i < ATTRIBUTE_NAMES.length; i++) {
-//            if (ATTRIBUTE_NAMES[i].hash() == ATTRIBUTE_NAMES[i - 1].hash()) {
-//                System.err.println("Hash collision: "
-//                        + ATTRIBUTE_NAMES[i].getLocal(HTML) + ", "
-//                        + ATTRIBUTE_NAMES[i - 1].getLocal(HTML));
-//                return;
-//            }
-//        }
-//        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
-//            AttributeName att = ATTRIBUTE_NAMES[i];
-//            System.out.println("public static final AttributeName "
-//                    + att.constName() + " = new AttributeName" + att.toString()
-//                    + ";");
-//        }
-//        System.out.println("private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = {");
-//        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
-//            AttributeName att = ATTRIBUTE_NAMES[i];
-//            System.out.println(att.constName() + ",");
-//        }
-//        System.out.println("};");
-//        System.out.println("private final static int[] ATTRIBUTE_HASHES = {");
-//        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
-//            AttributeName att = ATTRIBUTE_NAMES[i];
-//            System.out.println(Integer.toString(att.hash()) + ",");
-//        }
-//        System.out.println("};");
-//    }
-
-    // START GENERATED CODE
-    public static final AttributeName D = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("d"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName K = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("k"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName R = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("r"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName X = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("x"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName Y = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("y"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName Z = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("z"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("by"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("cx"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("cy"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("dx"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("dy"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName G2 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("g2"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName G1 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("g1"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fx"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fy"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName K4 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("k4"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName K2 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("k2"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName K3 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("k3"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName K1 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("k1"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ID = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("id"), ALL_NO_PREFIX, ALL_NCNAME, false, "ID");
-
-    public static final AttributeName IN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("in"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName U2 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("u2"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName U1 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("u1"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rt"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rx"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ry"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TO = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("to"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName Y2 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("y2"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName Y1 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("y1"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName X1 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("x1"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName X2 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("x2"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ALT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("alt"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DIR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("dir"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DUR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("dur"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName END = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("end"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("for"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName IN2 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("in2"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MAX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("max"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MIN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("min"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LOW = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("low"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REL = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rel"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REV = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rev"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SRC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("src"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName AXIS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("axis"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ABBR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("abbr"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BBOX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("bbox"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CITE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("cite"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CODE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("code"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BIAS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("bias"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COLS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("cols"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLIP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("clip"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CHAR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("char"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BASE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("base"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName EDGE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("edge"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DATA = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("data"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FILL = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fill"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FROM = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("from"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FORM = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("form"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FACE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("face"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HIGH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("high"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HREF = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("href"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OPEN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("open"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ICON = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("icon"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NAME = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("name"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MODE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("mode"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MASK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("mask"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LINK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("link"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LANG = new AttributeName(LANG_NS,
-            SAME_LOCAL("lang"), LANG_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LIST = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("list"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TYPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("type"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName WHEN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("when"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName WRAP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("wrap"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TEXT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("text"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PATH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("path"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ping"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REFX = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("refx", "refX"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REFY = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("refy", "refY"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("size"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SEED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("seed"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROWS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rows"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SPAN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("span"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STEP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("step"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("role"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName XREF = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("xref"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ASYNC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("async"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ALINK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("alink"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ALIGN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("align"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLOSE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("close"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COLOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("color"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLASS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("class"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLEAR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("clear"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BEGIN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("begin"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DEPTH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("depth"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DEFER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("defer"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FENCE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fence"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FRAME = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("frame"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ISMAP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ismap"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONEND = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onend"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName INDEX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("index"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ORDER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("order"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OTHER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("other"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONCUT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("oncut"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NARGS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("nargs"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MEDIA = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("media"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LABEL = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("label"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LOCAL = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("local"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName WIDTH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("width"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TITLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("title"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VLINK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("vlink"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VALUE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("value"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SLOPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("slope"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SHAPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("shape"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCOPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("scope"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCALE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("scale"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SPEED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("speed"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STYLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("style"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RULES = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rules"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STEMH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("stemh"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STEMV = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("stemv"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName START = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("start"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName XMLNS = new AttributeName(XMLNS_NS,
-            SAME_LOCAL("xmlns"), ALL_NO_PREFIX, new boolean[] { false, false,
-                    false, false }, true);
-
-    public static final AttributeName ACCEPT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("accept"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ACCENT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("accent"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ASCENT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ascent"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ACTIVE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("active"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ALTIMG = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("altimg"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ACTION = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("action"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BORDER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("border"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CURSOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("cursor"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COORDS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("coords"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FILTER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("filter"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FORMAT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("format"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HIDDEN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("hidden"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HSPACE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("hspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HEIGHT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("height"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONMOVE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onmove"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONLOAD = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onload"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDRAG = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ondrag"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ORIGIN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("origin"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONZOOM = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onzoom"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONHELP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onhelp"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONSTOP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onstop"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDROP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ondrop"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONBLUR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onblur"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OBJECT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("object"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OFFSET = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("offset"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ORIENT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("orient"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONCOPY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("oncopy"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NOWRAP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("nowrap"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NOHREF = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("nohref"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MACROS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("macros"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName METHOD = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("method"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LOWSRC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("lowsrc"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LSPACE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("lspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LQUOTE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("lquote"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName USEMAP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("usemap"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName WIDTHS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("widths"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TARGET = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("target"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VALUES = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("values"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VALIGN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("valign"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VSPACE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("vspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName POSTER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("poster"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName POINTS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("points"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PROMPT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("prompt"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCOPED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("scoped"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STRING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("string"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCHEME = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("scheme"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STROKE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("stroke"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RADIUS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("radius"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RESULT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("result"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REPEAT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("repeat"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RSPACE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROTATE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rotate"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RQUOTE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rquote"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ALTTEXT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("alttext"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARCHIVE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("archive"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName AZIMUTH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("azimuth"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLOSURE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("closure"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CHECKED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("checked"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLASSID = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("classid"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CHAROFF = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("charoff"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BGCOLOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("bgcolor"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COLSPAN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("colspan"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CHARSET = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("charset"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COMPACT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("compact"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CONTENT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("content"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ENCTYPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("enctype"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DATASRC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("datasrc"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DATAFLD = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("datafld"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DECLARE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("declare"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DISPLAY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("display"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DIVISOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("divisor"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DEFAULT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("default"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DESCENT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("descent"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName KERNING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("kerning"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HANGING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("hanging"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HEADERS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("headers"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONPASTE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onpaste"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONCLICK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onclick"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OPTIMUM = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("optimum"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONBEGIN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onbegin"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONKEYUP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onkeyup"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONFOCUS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onfocus"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONERROR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onerror"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONINPUT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("oninput"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONABORT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onabort"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONSTART = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onstart"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONRESET = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onreset"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OPACITY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("opacity"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NOSHADE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("noshade"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MINSIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("minsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MAXSIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("maxsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LOOPEND = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("loopend"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LARGEOP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("largeop"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName UNI_CODE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("unicode"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TARGETX = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("targetx", "targetX"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName TARGETY = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("targety", "targetY"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName VIEWBOX = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("viewbox", "viewBox"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName VERSION = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("version"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PATTERN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("pattern"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PROFILE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("profile"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SPACING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("spacing"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RESTART = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("restart"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROWSPAN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rowspan"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SANDBOX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("sandbox"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SUMMARY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("summary"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STANDBY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("standby"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REPLACE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("replace"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName AUTOPLAY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("autoplay"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ADDITIVE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("additive"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CALCMODE = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("calcmode", "calcMode"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName CODETYPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("codetype"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CODEBASE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("codebase"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CONTROLS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("controls"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BEVELLED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("bevelled"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BASELINE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("baseline"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName EXPONENT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("exponent"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName EDGEMODE = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("edgemode", "edgeMode"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ENCODING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("encoding"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName GLYPHREF = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("glyphref", "glyphRef"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName DATETIME = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("datetime"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DISABLED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("disabled"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONTSIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fontsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName KEYTIMES = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("keytimes", "keyTimes"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName PANOSE_1 = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("panose-1"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName HREFLANG = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("hreflang"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONRESIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onresize"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONCHANGE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onchange"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONBOUNCE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onbounce"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONUNLOAD = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onunload"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONFINISH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onfinish"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONSCROLL = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onscroll"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OPERATOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("operator"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OVERFLOW = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("overflow"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONSUBMIT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onsubmit"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONREPEAT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onrepeat"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONSELECT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onselect"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NOTATION = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("notation"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NORESIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("noresize"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MANIFEST = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("manifest"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MATHSIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("mathsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MULTIPLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("multiple"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LONGDESC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("longdesc"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LANGUAGE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("language"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TEMPLATE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("template"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TABINDEX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("tabindex"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName READONLY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("readonly"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SELECTED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("selected"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROWLINES = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rowlines"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SEAMLESS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("seamless"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROWALIGN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rowalign"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STRETCHY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("stretchy"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REQUIRED = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("required"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName XML_BASE = new AttributeName(XML_NS,
-            COLONIFIED_LOCAL("xml:base", "base"), XML_PREFIX, new boolean[] {
-                    false, true, true, false }, false);
-
-    public static final AttributeName XML_LANG = new AttributeName(XML_NS,
-            COLONIFIED_LOCAL("xml:lang", "lang"), XML_PREFIX, new boolean[] {
-                    false, true, true, false }, false);
-
-    public static final AttributeName X_HEIGHT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("x-height"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_OWNS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("aria-owns"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName AUTOFOCUS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("autofocus"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_SORT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("aria-sort"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ACCESSKEY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("accesskey"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_BUSY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("aria-busy"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_GRAB = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("aria-grab"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName AMPLITUDE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("amplitude"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_LIVE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("aria-live"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLIP_RULE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("clip-rule"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CLIP_PATH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("clip-path"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName EQUALROWS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("equalrows"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ELEVATION = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("elevation"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DIRECTION = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("direction"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DRAGGABLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("draggable"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FILTERRES = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("filterres", "filterRes"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FILL_RULE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fill-rule"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONTSTYLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fontstyle"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONT_SIZE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("font-size"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName KEYPOINTS = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("keypoints", "keyPoints"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName HIDEFOCUS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("hidefocus"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONMESSAGE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onmessage"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName INTERCEPT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("intercept"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDRAGEND = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ondragend"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONMOVEEND = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onmoveend"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONINVALID = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("oninvalid"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONKEYDOWN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onkeydown"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONFOCUSIN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onfocusin"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONMOUSEUP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onmouseup"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName INPUTMODE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("inputmode"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONROWEXIT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onrowexit"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MATHCOLOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("mathcolor"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MASKUNITS = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("maskunits", "maskUnits"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MAXLENGTH = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("maxlength"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LINEBREAK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("linebreak"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName LOOPSTART = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("loopstart"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TRANSFORM = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("transform"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName V_HANGING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("v-hanging"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VALUETYPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("valuetype"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName POINTSATZ = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("pointsatz", "pointsAtZ"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName POINTSATX = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("pointsatx", "pointsAtX"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName POINTSATY = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("pointsaty", "pointsAtY"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName PLAYCOUNT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("playcount"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SYMMETRIC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("symmetric"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCROLLING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("scrolling"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REPEATDUR = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("repeatdur", "repeatDur"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName SELECTION = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("selection"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SEPARATOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("separator"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName XML_SPACE = new AttributeName(XML_NS,
-            COLONIFIED_LOCAL("xml:space", "space"), XML_PREFIX, new boolean[] {
-                    false, true, true, false }, false);
-
-    public static final AttributeName AUTOSUBMIT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("autosubmit"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ALPHABETIC = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("alphabetic"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ACTIONTYPE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("actiontype"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ACCUMULATE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("accumulate"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_LEVEL = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("aria-level"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COLUMNSPAN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("columnspan"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName CAP_HEIGHT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("cap-height"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName BACKGROUND = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("background"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName GLYPH_NAME = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("glyph-name"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName GROUPALIGN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("groupalign"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONTFAMILY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fontfamily"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONTWEIGHT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("fontweight"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONT_STYLE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("font-style"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName KEYSPLINES = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("keysplines", "keySplines"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName HTTP_EQUIV = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("http-equiv"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONACTIVATE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onactivate"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName OCCURRENCE = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("occurrence"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName IRRELEVANT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("irrelevant"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDBLCLICK = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ondblclick"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDRAGDROP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ondragdrop"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONKEYPRESS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onkeypress"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONROWENTER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onrowenter"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDRAGOVER = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("ondragover"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONFOCUSOUT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onfocusout"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONMOUSEOUT = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("onmouseout"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName NUMOCTAVES = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("numoctaves", "numOctaves"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName MARKER_MID = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("marker-mid"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MARKER_END = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("marker-end"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TEXTLENGTH = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("textlength", "textLength"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName VISIBILITY = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("visibility"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VIEWTARGET = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("viewtarget", "viewTarget"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName VERT_ADV_Y = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("vert-adv-y"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PATHLENGTH = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("pathlength", "pathLength"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName REPEAT_MAX = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("repeat-max"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RADIOGROUP = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("radiogroup"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STOP_COLOR = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("stop-color"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SEPARATORS = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("separators"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REPEAT_MIN = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("repeat-min"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ROWSPACING = new AttributeName(ALL_NO_NS,
-            SAME_LOCAL("rowspacing"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ZOOMANDPAN = new AttributeName(ALL_NO_NS,
-            SVG_DIFFERENT("zoomandpan", "zoomAndPan"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName XLINK_TYPE = new AttributeName(XLINK_NS,
-            COLONIFIED_LOCAL("xlink:type", "type"), XLINK_PREFIX,
-            new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName XLINK_ROLE = new AttributeName(XLINK_NS,
-            COLONIFIED_LOCAL("xlink:role", "role"), XLINK_PREFIX,
-            new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName XLINK_HREF = new AttributeName(XLINK_NS,
-            COLONIFIED_LOCAL("xlink:href", "href"), XLINK_PREFIX,
-            new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName XLINK_SHOW = new AttributeName(XLINK_NS,
-            COLONIFIED_LOCAL("xlink:show", "show"), XLINK_PREFIX,
-            new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName ACCENTUNDER = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("accentunder"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_SECRET = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-secret"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_ATOMIC = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-atomic"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_HIDDEN = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-hidden"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_FLOWTO = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-flowto"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARABIC_FORM = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("arabic-form"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName CELLPADDING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("cellpadding"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName CELLSPACING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("cellspacing"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName COLUMNWIDTH = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("columnwidth"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName COLUMNALIGN = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("columnalign"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName COLUMNLINES = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("columnlines"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName CONTEXTMENU = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("contextmenu"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName BASEPROFILE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("baseprofile", "baseProfile"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONT_FAMILY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("font-family"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FRAMEBORDER = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("frameborder"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FILTERUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("filterunits", "filterUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FLOOD_COLOR = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("flood-color"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FONT_WEIGHT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("font-weight"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName HORIZ_ADV_X = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("horiz-adv-x"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONDRAGLEAVE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondragleave"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOUSEMOVE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmousemove"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ORIENTATION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("orientation"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOUSEDOWN = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmousedown"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOUSEOVER = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmouseover"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONDRAGENTER = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondragenter"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName IDEOGRAPHIC = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ideographic"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONBEFORECUT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforecut"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONFORMINPUT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onforminput"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONDRAGSTART = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondragstart"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOVESTART = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmovestart"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MARKERUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("markerunits", "markerUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MATHVARIANT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("mathvariant"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MARGINWIDTH = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("marginwidth"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MARKERWIDTH = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("markerwidth", "markerWidth"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName TEXT_ANCHOR = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("text-anchor"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName TABLEVALUES = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("tablevalues", "tableValues"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCRIPTLEVEL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("scriptlevel"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName REPEATCOUNT = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("repeatcount", "repeatCount"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STITCHTILES = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("stitchtiles", "stitchTiles"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STARTOFFSET = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("startoffset", "startOffset"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCROLLDELAY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("scrolldelay"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName XMLNS_XLINK = new AttributeName(XMLNS_NS,
-            COLONIFIED_LOCAL("xmlns:xlink", "xlink"), XMLNS_PREFIX,
-            new boolean[] { false, false, false, false }, true);
-
-    public static final AttributeName XLINK_TITLE = new AttributeName(XLINK_NS,
-            COLONIFIED_LOCAL("xlink:title", "title"), XLINK_PREFIX,
-            new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName ARIA_INVALID = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-invalid"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_PRESSED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-pressed"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_CHECKED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-checked"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName AUTOCOMPLETE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("autocomplete"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_SETSIZE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-setsize"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_CHANNEL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-channel"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName EQUALCOLUMNS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("equalcolumns"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName DISPLAYSTYLE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("displaystyle"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName DATAFORMATAS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("dataformatas"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FILL_OPACITY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("fill-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FONT_VARIANT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("font-variant"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FONT_STRETCH = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("font-stretch"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName FRAMESPACING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("framespacing"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName KERNELMATRIX = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("kernelmatrix", "kernelMatrix"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDEACTIVATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondeactivate"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONROWSDELETE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onrowsdelete"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOUSELEAVE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmouseleave"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONFORMCHANGE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onformchange"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONCELLCHANGE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("oncellchange"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOUSEWHEEL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmousewheel"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONMOUSEENTER = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onmouseenter"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONAFTERPRINT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onafterprint"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONBEFORECOPY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforecopy"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MARGINHEIGHT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("marginheight"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MARKERHEIGHT = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("markerheight", "markerHeight"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName MARKER_START = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("marker-start"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MATHEMATICAL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("mathematical"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName LENGTHADJUST = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("lengthadjust", "lengthAdjust"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName UNSELECTABLE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("unselectable"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName UNICODE_BIDI = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("unicode-bidi"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName UNITS_PER_EM = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("units-per-em"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName WORD_SPACING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("word-spacing"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName WRITING_MODE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("writing-mode"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName V_ALPHABETIC = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("v-alphabetic"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName PATTERNUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("patternunits", "patternUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SPREADMETHOD = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("spreadmethod", "spreadMethod"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SURFACESCALE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("surfacescale", "surfaceScale"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STROKE_WIDTH = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-width"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName REPEAT_START = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("repeat-start"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName STDDEVIATION = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("stddeviation", "stdDeviation"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STOP_OPACITY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stop-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_CONTROLS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-controls"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_HASPOPUP = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-haspopup"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ACCENT_HEIGHT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("accent-height"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_VALUENOW = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-valuenow"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_RELEVANT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-relevant"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_POSINSET = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-posinset"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_VALUEMAX = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-valuemax"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_READONLY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-readonly"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_SELECTED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-selected"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_REQUIRED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-required"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_EXPANDED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-expanded"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_DISABLED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-disabled"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ATTRIBUTETYPE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("attributetype", "attributeType"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ATTRIBUTENAME = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("attributename", "attributeName"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_DATATYPE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-datatype"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_VALUEMIN = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-valuemin"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName BASEFREQUENCY = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("basefrequency", "baseFrequency"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COLUMNSPACING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("columnspacing"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName COLOR_PROFILE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("color-profile"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName CLIPPATHUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("clippathunits", "clipPathUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName DEFINITIONURL = new AttributeName(
-            ALL_NO_NS, MATH_DIFFERENT("definitionurl", "definitionURL"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName GRADIENTUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("gradientunits", "gradientUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FLOOD_OPACITY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("flood-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONAFTERUPDATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onafterupdate"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONERRORUPDATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onerrorupdate"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONBEFOREPASTE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforepaste"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONLOSECAPTURE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onlosecapture"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONCONTEXTMENU = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("oncontextmenu"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONSELECTSTART = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onselectstart"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONBEFOREPRINT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforeprint"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MOVABLELIMITS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("movablelimits"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName LINETHICKNESS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("linethickness"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName UNICODE_RANGE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("unicode-range"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName THINMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("thinmathspace"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName VERT_ORIGIN_X = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("vert-origin-x"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName VERT_ORIGIN_Y = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("vert-origin-y"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName V_IDEOGRAPHIC = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("v-ideographic"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName PRESERVEALPHA = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("preservealpha", "preserveAlpha"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SCRIPTMINSIZE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("scriptminsize"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName SPECIFICATION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("specification"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName XLINK_ACTUATE = new AttributeName(
-            XLINK_NS, COLONIFIED_LOCAL("xlink:actuate", "actuate"),
-            XLINK_PREFIX, new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName XLINK_ARCROLE = new AttributeName(
-            XLINK_NS, COLONIFIED_LOCAL("xlink:arcrole", "arcrole"),
-            XLINK_PREFIX, new boolean[] { false, true, true, false }, false);
-
-    public static final AttributeName ACCEPT_CHARSET = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("accept-charset"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ALIGNMENTSCOPE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("alignmentscope"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_MULTILINE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-multiline"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName BASELINE_SHIFT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("baseline-shift"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName HORIZ_ORIGIN_X = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("horiz-origin-x"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName HORIZ_ORIGIN_Y = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("horiz-origin-y"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONBEFOREUPDATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforeupdate"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONFILTERCHANGE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onfilterchange"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONROWSINSERTED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onrowsinserted"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ONBEFOREUNLOAD = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforeunload"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName MATHBACKGROUND = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("mathbackground"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName LETTER_SPACING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("letter-spacing"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName LIGHTING_COLOR = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("lighting-color"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName THICKMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("thickmathspace"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName TEXT_RENDERING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("text-rendering"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName V_MATHEMATICAL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("v-mathematical"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName POINTER_EVENTS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("pointer-events"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName PRIMITIVEUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("primitiveunits", "primitiveUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SYSTEMLANGUAGE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("systemlanguage", "systemLanguage"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName STROKE_LINECAP = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-linecap"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName SUBSCRIPTSHIFT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("subscriptshift"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName STROKE_OPACITY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName ARIA_DROPEFFECT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-dropeffect"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_LABELLEDBY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-labelledby"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_TEMPLATEID = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-templateid"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName COLOR_RENDERING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("color-rendering"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName CONTENTEDITABLE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("contenteditable"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName DIFFUSECONSTANT = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("diffuseconstant", "diffuseConstant"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONDATAAVAILABLE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondataavailable"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ONCONTROLSELECT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("oncontrolselect"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName IMAGE_RENDERING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("image-rendering"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName MEDIUMMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("mediummathspace"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName TEXT_DECORATION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("text-decoration"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName SHAPE_RENDERING = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("shape-rendering"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName STROKE_LINEJOIN = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-linejoin"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName REPEAT_TEMPLATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("repeat-template"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_DESCRIBEDBY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-describedby"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName CONTENTSTYLETYPE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("contentstyletype", "contentStyleType"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName FONT_SIZE_ADJUST = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("font-size-adjust"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName KERNELUNITLENGTH = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("kernelunitlength", "kernelUnitLength"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONBEFOREACTIVATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforeactivate"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ONPROPERTYCHANGE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onpropertychange"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ONDATASETCHANGED = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondatasetchanged"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName MASKCONTENTUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("maskcontentunits", "maskContentUnits"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PATTERNTRANSFORM = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("patterntransform", "patternTransform"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName REQUIREDFEATURES = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("requiredfeatures", "requiredFeatures"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName RENDERING_INTENT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("rendering-intent"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName SPECULAREXPONENT = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("specularexponent", "specularExponent"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SPECULARCONSTANT = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("specularconstant", "specularConstant"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName SUPERSCRIPTSHIFT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("superscriptshift"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName STROKE_DASHARRAY = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-dasharray"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName XCHANNELSELECTOR = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("xchannelselector", "xChannelSelector"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName YCHANNELSELECTOR = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("ychannelselector", "yChannelSelector"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_AUTOCOMPLETE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-autocomplete"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName CONTENTSCRIPTTYPE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("contentscripttype", "contentScriptType"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ENABLE_BACKGROUND = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("enable-background"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName DOMINANT_BASELINE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("dominant-baseline"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName GRADIENTTRANSFORM = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("gradienttransform", "gradientTransform"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ONBEFORDEACTIVATE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbefordeactivate"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ONDATASETCOMPLETE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("ondatasetcomplete"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName OVERLINE_POSITION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("overline-position"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ONBEFOREEDITFOCUS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onbeforeeditfocus"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName LIMITINGCONEANGLE = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("limitingconeangle", "limitingConeAngle"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName VERYTHINMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("verythinmathspace"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName STROKE_DASHOFFSET = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-dashoffset"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName STROKE_MITERLIMIT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("stroke-miterlimit"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ALIGNMENT_BASELINE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("alignment-baseline"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ONREADYSTATECHANGE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("onreadystatechange"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName OVERLINE_THICKNESS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("overline-thickness"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName UNDERLINE_POSITION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("underline-position"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName VERYTHICKMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("verythickmathspace"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName REQUIREDEXTENSIONS = new AttributeName(
-            ALL_NO_NS,
-            SVG_DIFFERENT("requiredextensions", "requiredExtensions"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName COLOR_INTERPOLATION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("color-interpolation"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName UNDERLINE_THICKNESS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("underline-thickness"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName PRESERVEASPECTRATIO = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("preserveaspectratio",
-                    "preserveAspectRatio"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName PATTERNCONTENTUNITS = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("patterncontentunits",
-                    "patternContentUnits"), ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_MULTISELECTABLE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-multiselectable"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName SCRIPTSIZEMULTIPLIER = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("scriptsizemultiplier"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName ARIA_ACTIVEDESCENDANT = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("aria-activedescendant"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName VERYVERYTHINMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("veryverythinmathspace"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName VERYVERYTHICKMATHSPACE = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("veryverythickmathspace"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName STRIKETHROUGH_POSITION = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("strikethrough-position"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName STRIKETHROUGH_THICKNESS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("strikethrough-thickness"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName EXTERNALRESOURCESREQUIRED = new AttributeName(
-            ALL_NO_NS, SVG_DIFFERENT("externalresourcesrequired",
-                    "externalResourcesRequired"), ALL_NO_PREFIX, ALL_NCNAME,
-            false);
-
-    public static final AttributeName GLYPH_ORIENTATION_VERTICAL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("glyph-orientation-vertical"), ALL_NO_PREFIX,
-            ALL_NCNAME, false);
-
-    public static final AttributeName COLOR_INTERPOLATION_FILTERS = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("color-interpolation-filters"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    public static final AttributeName GLYPH_ORIENTATION_HORIZONTAL = new AttributeName(
-            ALL_NO_NS, SAME_LOCAL("glyph-orientation-horizontal"),
-            ALL_NO_PREFIX, ALL_NCNAME, false);
-
-    private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = { D, K, R,
-            X, Y, Z, BY, CX, CY, DX, DY, G2, G1, FX, FY, K4, K2, K3, K1, ID,
-            IN, U2, U1, RT, RX, RY, TO, Y2, Y1, X1, X2, ALT, DIR, DUR, END,
-            FOR, IN2, MAX, MIN, LOW, REL, REV, SRC, AXIS, ABBR, BBOX, CITE,
-            CODE, BIAS, COLS, CLIP, CHAR, BASE, EDGE, DATA, FILL, FROM, FORM,
-            FACE, HIGH, HREF, OPEN, ICON, NAME, MODE, MASK, LINK, LANG, LIST,
-            TYPE, WHEN, WRAP, TEXT, PATH, PING, REFX, REFY, SIZE, SEED, ROWS,
-            SPAN, STEP, ROLE, XREF, ASYNC, ALINK, ALIGN, CLOSE, COLOR, CLASS,
-            CLEAR, BEGIN, DEPTH, DEFER, FENCE, FRAME, ISMAP, ONEND, INDEX,
-            ORDER, OTHER, ONCUT, NARGS, MEDIA, LABEL, LOCAL, WIDTH, TITLE,
-            VLINK, VALUE, SLOPE, SHAPE, SCOPE, SCALE, SPEED, STYLE, RULES,
-            STEMH, STEMV, START, XMLNS, ACCEPT, ACCENT, ASCENT, ACTIVE, ALTIMG,
-            ACTION, BORDER, CURSOR, COORDS, FILTER, FORMAT, HIDDEN, HSPACE,
-            HEIGHT, ONMOVE, ONLOAD, ONDRAG, ORIGIN, ONZOOM, ONHELP, ONSTOP,
-            ONDROP, ONBLUR, OBJECT, OFFSET, ORIENT, ONCOPY, NOWRAP, NOHREF,
-            MACROS, METHOD, LOWSRC, LSPACE, LQUOTE, USEMAP, WIDTHS, TARGET,
-            VALUES, VALIGN, VSPACE, POSTER, POINTS, PROMPT, SCOPED, STRING,
-            SCHEME, STROKE, RADIUS, RESULT, REPEAT, RSPACE, ROTATE, RQUOTE,
-            ALTTEXT, ARCHIVE, AZIMUTH, CLOSURE, CHECKED, CLASSID, CHAROFF,
-            BGCOLOR, COLSPAN, CHARSET, COMPACT, CONTENT, ENCTYPE, DATASRC,
-            DATAFLD, DECLARE, DISPLAY, DIVISOR, DEFAULT, DESCENT, KERNING,
-            HANGING, HEADERS, ONPASTE, ONCLICK, OPTIMUM, ONBEGIN, ONKEYUP,
-            ONFOCUS, ONERROR, ONINPUT, ONABORT, ONSTART, ONRESET, OPACITY,
-            NOSHADE, MINSIZE, MAXSIZE, LOOPEND, LARGEOP, UNI_CODE, TARGETX,
-            TARGETY, VIEWBOX, VERSION, PATTERN, PROFILE, SPACING, RESTART,
-            ROWSPAN, SANDBOX, SUMMARY, STANDBY, REPLACE, AUTOPLAY, ADDITIVE,
-            CALCMODE, CODETYPE, CODEBASE, CONTROLS, BEVELLED, BASELINE,
-            EXPONENT, EDGEMODE, ENCODING, GLYPHREF, DATETIME, DISABLED,
-            FONTSIZE, KEYTIMES, PANOSE_1, HREFLANG, ONRESIZE, ONCHANGE,
-            ONBOUNCE, ONUNLOAD, ONFINISH, ONSCROLL, OPERATOR, OVERFLOW,
-            ONSUBMIT, ONREPEAT, ONSELECT, NOTATION, NORESIZE, MANIFEST,
-            MATHSIZE, MULTIPLE, LONGDESC, LANGUAGE, TEMPLATE, TABINDEX,
-            READONLY, SELECTED, ROWLINES, SEAMLESS, ROWALIGN, STRETCHY,
-            REQUIRED, XML_BASE, XML_LANG, X_HEIGHT, ARIA_OWNS, AUTOFOCUS,
-            ARIA_SORT, ACCESSKEY, ARIA_BUSY, ARIA_GRAB, AMPLITUDE, ARIA_LIVE,
-            CLIP_RULE, CLIP_PATH, EQUALROWS, ELEVATION, DIRECTION, DRAGGABLE,
-            FILTERRES, FILL_RULE, FONTSTYLE, FONT_SIZE, KEYPOINTS, HIDEFOCUS,
-            ONMESSAGE, INTERCEPT, ONDRAGEND, ONMOVEEND, ONINVALID, ONKEYDOWN,
-            ONFOCUSIN, ONMOUSEUP, INPUTMODE, ONROWEXIT, MATHCOLOR, MASKUNITS,
-            MAXLENGTH, LINEBREAK, LOOPSTART, TRANSFORM, V_HANGING, VALUETYPE,
-            POINTSATZ, POINTSATX, POINTSATY, PLAYCOUNT, SYMMETRIC, SCROLLING,
-            REPEATDUR, SELECTION, SEPARATOR, XML_SPACE, AUTOSUBMIT, ALPHABETIC,
-            ACTIONTYPE, ACCUMULATE, ARIA_LEVEL, COLUMNSPAN, CAP_HEIGHT,
-            BACKGROUND, GLYPH_NAME, GROUPALIGN, FONTFAMILY, FONTWEIGHT,
-            FONT_STYLE, KEYSPLINES, HTTP_EQUIV, ONACTIVATE, OCCURRENCE,
-            IRRELEVANT, ONDBLCLICK, ONDRAGDROP, ONKEYPRESS, ONROWENTER,
-            ONDRAGOVER, ONFOCUSOUT, ONMOUSEOUT, NUMOCTAVES, MARKER_MID,
-            MARKER_END, TEXTLENGTH, VISIBILITY, VIEWTARGET, VERT_ADV_Y,
-            PATHLENGTH, REPEAT_MAX, RADIOGROUP, STOP_COLOR, SEPARATORS,
-            REPEAT_MIN, ROWSPACING, ZOOMANDPAN, XLINK_TYPE, XLINK_ROLE,
-            XLINK_HREF, XLINK_SHOW, ACCENTUNDER, ARIA_SECRET, ARIA_ATOMIC,
-            ARIA_HIDDEN, ARIA_FLOWTO, ARABIC_FORM, CELLPADDING, CELLSPACING,
-            COLUMNWIDTH, COLUMNALIGN, COLUMNLINES, CONTEXTMENU, BASEPROFILE,
-            FONT_FAMILY, FRAMEBORDER, FILTERUNITS, FLOOD_COLOR, FONT_WEIGHT,
-            HORIZ_ADV_X, ONDRAGLEAVE, ONMOUSEMOVE, ORIENTATION, ONMOUSEDOWN,
-            ONMOUSEOVER, ONDRAGENTER, IDEOGRAPHIC, ONBEFORECUT, ONFORMINPUT,
-            ONDRAGSTART, ONMOVESTART, MARKERUNITS, MATHVARIANT, MARGINWIDTH,
-            MARKERWIDTH, TEXT_ANCHOR, TABLEVALUES, SCRIPTLEVEL, REPEATCOUNT,
-            STITCHTILES, STARTOFFSET, SCROLLDELAY, XMLNS_XLINK, XLINK_TITLE,
-            ARIA_INVALID, ARIA_PRESSED, ARIA_CHECKED, AUTOCOMPLETE,
-            ARIA_SETSIZE, ARIA_CHANNEL, EQUALCOLUMNS, DISPLAYSTYLE,
-            DATAFORMATAS, FILL_OPACITY, FONT_VARIANT, FONT_STRETCH,
-            FRAMESPACING, KERNELMATRIX, ONDEACTIVATE, ONROWSDELETE,
-            ONMOUSELEAVE, ONFORMCHANGE, ONCELLCHANGE, ONMOUSEWHEEL,
-            ONMOUSEENTER, ONAFTERPRINT, ONBEFORECOPY, MARGINHEIGHT,
-            MARKERHEIGHT, MARKER_START, MATHEMATICAL, LENGTHADJUST,
-            UNSELECTABLE, UNICODE_BIDI, UNITS_PER_EM, WORD_SPACING,
-            WRITING_MODE, V_ALPHABETIC, PATTERNUNITS, SPREADMETHOD,
-            SURFACESCALE, STROKE_WIDTH, REPEAT_START, STDDEVIATION,
-            STOP_OPACITY, ARIA_CONTROLS, ARIA_HASPOPUP, ACCENT_HEIGHT,
-            ARIA_VALUENOW, ARIA_RELEVANT, ARIA_POSINSET, ARIA_VALUEMAX,
-            ARIA_READONLY, ARIA_SELECTED, ARIA_REQUIRED, ARIA_EXPANDED,
-            ARIA_DISABLED, ATTRIBUTETYPE, ATTRIBUTENAME, ARIA_DATATYPE,
-            ARIA_VALUEMIN, BASEFREQUENCY, COLUMNSPACING, COLOR_PROFILE,
-            CLIPPATHUNITS, DEFINITIONURL, GRADIENTUNITS, FLOOD_OPACITY,
-            ONAFTERUPDATE, ONERRORUPDATE, ONBEFOREPASTE, ONLOSECAPTURE,
-            ONCONTEXTMENU, ONSELECTSTART, ONBEFOREPRINT, MOVABLELIMITS,
-            LINETHICKNESS, UNICODE_RANGE, THINMATHSPACE, VERT_ORIGIN_X,
-            VERT_ORIGIN_Y, V_IDEOGRAPHIC, PRESERVEALPHA, SCRIPTMINSIZE,
-            SPECIFICATION, XLINK_ACTUATE, XLINK_ARCROLE, ACCEPT_CHARSET,
-            ALIGNMENTSCOPE, ARIA_MULTILINE, BASELINE_SHIFT, HORIZ_ORIGIN_X,
-            HORIZ_ORIGIN_Y, ONBEFOREUPDATE, ONFILTERCHANGE, ONROWSINSERTED,
-            ONBEFOREUNLOAD, MATHBACKGROUND, LETTER_SPACING, LIGHTING_COLOR,
-            THICKMATHSPACE, TEXT_RENDERING, V_MATHEMATICAL, POINTER_EVENTS,
-            PRIMITIVEUNITS, SYSTEMLANGUAGE, STROKE_LINECAP, SUBSCRIPTSHIFT,
-            STROKE_OPACITY, ARIA_DROPEFFECT, ARIA_LABELLEDBY, ARIA_TEMPLATEID,
-            COLOR_RENDERING, CONTENTEDITABLE, DIFFUSECONSTANT, ONDATAAVAILABLE,
-            ONCONTROLSELECT, IMAGE_RENDERING, MEDIUMMATHSPACE, TEXT_DECORATION,
-            SHAPE_RENDERING, STROKE_LINEJOIN, REPEAT_TEMPLATE,
-            ARIA_DESCRIBEDBY, CONTENTSTYLETYPE, FONT_SIZE_ADJUST,
-            KERNELUNITLENGTH, ONBEFOREACTIVATE, ONPROPERTYCHANGE,
-            ONDATASETCHANGED, MASKCONTENTUNITS, PATTERNTRANSFORM,
-            REQUIREDFEATURES, RENDERING_INTENT, SPECULAREXPONENT,
-            SPECULARCONSTANT, SUPERSCRIPTSHIFT, STROKE_DASHARRAY,
-            XCHANNELSELECTOR, YCHANNELSELECTOR, ARIA_AUTOCOMPLETE,
-            CONTENTSCRIPTTYPE, ENABLE_BACKGROUND, DOMINANT_BASELINE,
-            GRADIENTTRANSFORM, ONBEFORDEACTIVATE, ONDATASETCOMPLETE,
-            OVERLINE_POSITION, ONBEFOREEDITFOCUS, LIMITINGCONEANGLE,
-            VERYTHINMATHSPACE, STROKE_DASHOFFSET, STROKE_MITERLIMIT,
-            ALIGNMENT_BASELINE, ONREADYSTATECHANGE, OVERLINE_THICKNESS,
-            UNDERLINE_POSITION, VERYTHICKMATHSPACE, REQUIREDEXTENSIONS,
-            COLOR_INTERPOLATION, UNDERLINE_THICKNESS, PRESERVEASPECTRATIO,
-            PATTERNCONTENTUNITS, ARIA_MULTISELECTABLE, SCRIPTSIZEMULTIPLIER,
-            ARIA_ACTIVEDESCENDANT, VERYVERYTHINMATHSPACE,
-            VERYVERYTHICKMATHSPACE, STRIKETHROUGH_POSITION,
-            STRIKETHROUGH_THICKNESS, EXTERNALRESOURCESREQUIRED,
-            GLYPH_ORIENTATION_VERTICAL, COLOR_INTERPOLATION_FILTERS,
-            GLYPH_ORIENTATION_HORIZONTAL, };
-
-    private final static int[] ATTRIBUTE_HASHES = { 1153, 1383, 1601, 1793,
-            1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415,
-            72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839,
-            85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892,
-            3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402,
-            3574260, 3670335, 3696933, 3721879, 135280021, 135346322,
-            136317019, 136475749, 136548517, 136652214, 136884919, 136902418,
-            136942992, 137292068, 139120259, 139785574, 142250603, 142314056,
-            142331176, 142519584, 144752417, 145106895, 146147200, 146765926,
-            148805544, 149655723, 149809441, 150018784, 150445028, 150923321,
-            152528754, 152536216, 152647366, 152962785, 155219321, 155654904,
-            157317483, 157350248, 157437941, 157447478, 157604838, 157685404,
-            157894402, 158315188, 166078431, 169409980, 169700259, 169856932,
-            170007032, 170409695, 170466488, 170513710, 170608367, 173028944,
-            173896963, 176090625, 176129212, 179390001, 179489057, 179627464,
-            179840468, 179849042, 180004216, 181779081, 183027151, 183645319,
-            183698797, 185922012, 185997252, 188312483, 188675799, 190977533,
-            190992569, 191006194, 191033518, 191038774, 191096249, 191166163,
-            191194426, 191522106, 191568039, 200104642, 202506661, 202537381,
-            202602917, 203070590, 203120766, 203389054, 203690071, 203971238,
-            203986524, 209040857, 209125756, 212055489, 212322418, 212746849,
-            213002877, 213055164, 213088023, 213259873, 213273386, 213435118,
-            213437318, 213438231, 213493071, 213532268, 213542834, 213584431,
-            213659891, 215285828, 215880731, 216112976, 216684637, 217369699,
-            217565298, 217576549, 218186795, 219743185, 220082234, 221623802,
-            221986406, 222283890, 223089542, 223138630, 223311265, 224547358,
-            224587256, 224589550, 224655650, 224785518, 224810917, 224813302,
-            225429618, 225432950, 225440869, 236107233, 236709921, 236838947,
-            237117095, 237143271, 237172455, 237209953, 237354143, 237372743,
-            237668065, 237703073, 237714273, 239743521, 240512803, 240522627,
-            240560417, 240656513, 241015715, 241062755, 241065383, 243523041,
-            245865199, 246261793, 246556195, 246774817, 246923491, 246928419,
-            246981667, 247014847, 247058369, 247112833, 247118177, 247119137,
-            247128739, 247316903, 249533729, 250235623, 250269543, 251083937,
-            251402351, 252339047, 253260911, 253293679, 254844367, 255547879,
-            256077281, 256345377, 258124199, 258354465, 258605063, 258744193,
-            258845603, 258856961, 258926689, 269869248, 270174334, 270709417,
-            270778994, 270781796, 271102503, 271478858, 271490090, 272870654,
-            273335275, 273369140, 273924313, 274108530, 274116736, 276818662,
-            277476156, 279156579, 279349675, 280108533, 280128712, 280132869,
-            280162403, 280280292, 280413430, 280506130, 280677397, 280678580,
-            280686710, 280689066, 282736758, 283110901, 283275116, 283823226,
-            283890012, 284479340, 284606461, 286700477, 286798916, 291557706,
-            291665349, 291804100, 292138018, 292166446, 292418738, 292451039,
-            300298041, 300374839, 300597935, 303073389, 303083839, 303266673,
-            303354997, 303430688, 303576261, 303724281, 303819694, 304242723,
-            304382625, 306247792, 307227811, 307468786, 307724489, 309671175,
-            310252031, 310358241, 310373094, 311015256, 313357609, 313683893,
-            313701861, 313706996, 313707317, 313710350, 314027746, 314038181,
-            314091299, 314205627, 314233813, 316741830, 316797986, 317486755,
-            317794164, 318721061, 320076137, 322657125, 322887778, 323506876,
-            323572412, 323605180, 323938869, 325060058, 325320188, 325398738,
-            325541490, 325671619, 333868843, 336806130, 337212108, 337282686,
-            337285434, 337585223, 338036037, 338298087, 338566051, 340943551,
-            341190970, 342995704, 343352124, 343912673, 344585053, 346977248,
-            347218098, 347262163, 347278576, 347438191, 347655959, 347684788,
-            347726430, 347727772, 347776035, 347776629, 349500753, 350880161,
-            350887073, 353384123, 355496998, 355906922, 355979793, 356545959,
-            358637867, 358905016, 359164318, 359247286, 359350571, 359579447,
-            365560330, 367399355, 367420285, 367510727, 368013212, 370234760,
-            370353345, 370710317, 371074566, 371122285, 371194213, 371448425,
-            371448430, 371545055, 371596922, 371758751, 371964792, 372151328,
-            376550136, 376710172, 376795771, 376826271, 376906556, 380514830,
-            380774774, 380775037, 381030322, 381136500, 381281631, 381282269,
-            381285504, 381330595, 381331422, 381335911, 381336484, 383907298,
-            383917408, 384595009, 384595013, 387799894, 387823201, 392581647,
-            392584937, 392742684, 392906485, 393003349, 400644707, 400973830,
-            404428547, 404432113, 404432865, 404469244, 404478897, 404694860,
-            406887479, 408294949, 408789955, 410022510, 410467324, 410586448,
-            410945965, 411845275, 414327152, 414327932, 414329781, 414346257,
-            414346439, 414639928, 414835998, 414894517, 414986533, 417465377,
-            417465381, 417492216, 418259232, 419310946, 420103495, 420242342,
-            420380455, 420658662, 420717432, 423183880, 424539259, 425929170,
-            425972964, 426050649, 426126450, 426142833, 426607922, 437289840,
-            437347469, 437412335, 437423943, 437455540, 437462252, 437597991,
-            437617485, 437986305, 437986507, 437986828, 437987072, 438015591,
-            438034813, 438038966, 438179623, 438347971, 438483573, 438547062,
-            438895551, 441592676, 442032555, 443548979, 447881379, 447881655,
-            447881895, 447887844, 448416189, 448445746, 448449012, 450942191,
-            452816744, 453668677, 454434495, 456610076, 456642844, 456738709,
-            457544600, 459451897, 459680944, 468058810, 468083581, 470964084,
-            471470955, 471567278, 472267822, 481177859, 481210627, 481435874,
-            481455115, 481485378, 481490218, 485105638, 486005878, 486383494,
-            487988916, 488103783, 490661867, 491574090, 491578272, 493041952,
-            493441205, 493582844, 493716979, 504577572, 504740359, 505091638,
-            505592418, 505656212, 509516275, 514998531, 515571132, 515594682,
-            518712698, 521362273, 526592419, 526807354, 527348842, 538294791,
-            539214049, 544689535, 545535009, 548544752, 548563346, 548595116,
-            551679010, 558034099, 560329411, 560356209, 560671018, 560671152,
-            560692590, 560845442, 569212097, 569474241, 572252718, 572768481,
-            575326764, 576174758, 576190819, 582099184, 582099438, 582372519,
-            582558889, 586552164, 591325418, 594231990, 594243961, 605711268,
-            615672071, 616086845, 621792370, 624879850, 627432831, 640040548,
-            654392808, 658675477, 659420283, 672891587, 694768102, 705890982,
-            725543146, 759097578, 761686526, 795383908, 843809551, 878105336,
-            908643300, 945213471, };
-
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/ElementName.java
+++ /dev/null
@@ -1,1513 +0,0 @@
-/*
- * Copyright (c) 2008 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-import java.util.Arrays;
-
-import nu.validator.htmlparser.annotation.Local;
-import nu.validator.htmlparser.annotation.NoLength;
-import nu.validator.htmlparser.annotation.Virtual;
-
-public final class ElementName
-// uncomment when regenerating self
-//        implements Comparable<ElementName> 
-{
-
-    public final static ElementName NULL_ELEMENT_NAME = new ElementName(null);
-
-    public final @Local String name;
-
-    public final @Local String camelCaseName;
-    
-    public final int group;
-
-    public final boolean special;
-
-    public final boolean scoping;
-
-    public final boolean fosterParenting;
-
-    // [NOCPP[
-    
-    public final boolean custom;
-
-    // ]NOCPP]
-    
-    static ElementName elementNameByBuffer(char[] buf, int offset, int length) {
-        int hash = ElementName.bufToHash(buf, length);
-        int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash);
-        if (index < 0) {
-            return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length));
-        } else {
-            ElementName rv = ElementName.ELEMENT_NAMES[index];
-            @Local String name = rv.name;
-            if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
-                return new ElementName(Portability.newLocalNameFromBuffer(buf,
-                        offset, length));                
-            }
-            return rv;
-        }
-    }
-
-    /**
-     * This method has to return a unique integer for each well-known
-     * lower-cased element name.
-     * 
-     * @param buf
-     * @param len
-     * @return
-     */
-    private static int bufToHash(char[] buf, int len) {
-        int hash = len;
-        hash <<= 5;
-        hash += buf[0] - 0x60;
-        int j = len;
-        for (int i = 0; i < 4 && j > 0; i++) {
-            j--;
-            hash <<= 5;
-            hash += buf[j] - 0x60;
-        }
-        return hash;
-    }
-
-    private ElementName(@Local String name, @Local String camelCaseName,
-            int group, boolean special, boolean scoping, boolean fosterParenting) {
-        this.name = name;
-        this.camelCaseName = camelCaseName;
-        this.group = group;
-        this.special = special;
-        this.scoping = scoping;
-        this.fosterParenting = fosterParenting;
-        // [NOCPP[
-        this.custom = false;
-        // ]NOCPP]
-    }
-
-    protected ElementName(@Local String name) {
-        this.name = name;
-        this.camelCaseName = name;
-        this.group = TreeBuilder.OTHER;
-        this.special = false;
-        this.scoping = false;
-        this.fosterParenting = false;
-        // [NOCPP[
-        this.custom = true;
-        // ]NOCPP]
-    }
-    
-    @Virtual void release() {
-        // No-op in Java. 
-        // Implement as delete this in subclass.
-        // Be sure to release the local name
-    }
-    
-    @SuppressWarnings("unused") private void destructor() {
-        Portability.releaseLocal(name); // this must be a no-op for static locals
-        // for non-static cases the camel case contains the same pointer as a weak reference.
-    }
-
-    // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
-
-//    /**
-//     * @see java.lang.Object#toString()
-//     */
-//    @Override public String toString() {
-//        return "(\"" + name + "\", \"" + camelCaseName + "\", TreeBuilder."
-//                + treeBuilderGroupToName() + ", "
-//                + (special ? "true" : "false") + ", "
-//                + (scoping ? "true" : "false") + ", "
-//                + (fosterParenting ? "true" : "false") + ")";
-//    }
-//
-//    private String constName() {
-//        char[] buf = new char[name.length()];
-//        for (int i = 0; i < name.length(); i++) {
-//            char c = name.charAt(i);
-//            if (c == '-') {
-//                buf[i] = '_';
-//            } else if (c >= '0' && c <= '9') {
-//                buf[i] = c;
-//            } else {
-//                buf[i] = (char) (c - 0x20);
-//            }
-//        }
-//        return new String(buf);
-//    }
-//
-//    private int hash() {
-//        return bufToHash(name.toCharArray(), name.length());
-//    }
-//
-//    public int compareTo(ElementName other) {
-//        int thisHash = this.hash();
-//        int otherHash = other.hash();
-//        if (thisHash < otherHash) {
-//            return -1;
-//        } else if (thisHash == otherHash) {
-//            return 0;
-//        } else {
-//            return 1;
-//        }
-//    }
-//
-//    private String treeBuilderGroupToName() {
-//        switch (group) {
-//            case TreeBuilder.OTHER:
-//                return "OTHER";
-//            case TreeBuilder.A:
-//                return "A";
-//            case TreeBuilder.BASE:
-//                return "BASE";
-//            case TreeBuilder.BODY:
-//                return "BODY";
-//            case TreeBuilder.BR:
-//                return "BR";
-//            case TreeBuilder.BUTTON:
-//                return "BUTTON";
-//            case TreeBuilder.CAPTION:
-//                return "CAPTION";
-//            case TreeBuilder.COL:
-//                return "COL";
-//            case TreeBuilder.COLGROUP:
-//                return "COLGROUP";
-//            case TreeBuilder.FORM:
-//                return "FORM";
-//            case TreeBuilder.FRAME:
-//                return "FRAME";
-//            case TreeBuilder.FRAMESET:
-//                return "FRAMESET";
-//            case TreeBuilder.IMAGE:
-//                return "IMAGE";
-//            case TreeBuilder.INPUT:
-//                return "INPUT";
-//            case TreeBuilder.ISINDEX:
-//                return "ISINDEX";
-//            case TreeBuilder.LI:
-//                return "LI";
-//            case TreeBuilder.LINK:
-//                return "LINK";
-//            case TreeBuilder.MATH:
-//                return "MATH";
-//            case TreeBuilder.META:
-//                return "META";
-//            case TreeBuilder.SVG:
-//                return "SVG";
-//            case TreeBuilder.HEAD:
-//                return "HEAD";
-//            case TreeBuilder.HR:
-//                return "HR";
-//            case TreeBuilder.HTML:
-//                return "HTML";
-//            case TreeBuilder.NOBR:
-//                return "NOBR";
-//            case TreeBuilder.NOFRAMES:
-//                return "NOFRAMES";
-//            case TreeBuilder.NOSCRIPT:
-//                return "NOSCRIPT";
-//            case TreeBuilder.OPTGROUP:
-//                return "OPTGROUP";
-//            case TreeBuilder.OPTION:
-//                return "OPTION";
-//            case TreeBuilder.P:
-//                return "P";
-//            case TreeBuilder.PLAINTEXT:
-//                return "PLAINTEXT";
-//            case TreeBuilder.SCRIPT:
-//                return "SCRIPT";
-//            case TreeBuilder.SELECT:
-//                return "SELECT";
-//            case TreeBuilder.STYLE:
-//                return "STYLE";
-//            case TreeBuilder.TABLE:
-//                return "TABLE";
-//            case TreeBuilder.TEXTAREA:
-//                return "TEXTAREA";
-//            case TreeBuilder.TITLE:
-//                return "TITLE";
-//            case TreeBuilder.TR:
-//                return "TR";
-//            case TreeBuilder.XMP:
-//                return "XMP";
-//            case TreeBuilder.TBODY_OR_THEAD_OR_TFOOT:
-//                return "TBODY_OR_THEAD_OR_TFOOT";
-//            case TreeBuilder.TD_OR_TH:
-//                return "TD_OR_TH";
-//            case TreeBuilder.DD_OR_DT:
-//                return "DD_OR_DT";
-//            case TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6:
-//                return "H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6";
-//            case TreeBuilder.OBJECT_OR_MARQUEE_OR_APPLET:
-//                return "OBJECT_OR_MARQUEE_OR_APPLET";
-//            case TreeBuilder.PRE_OR_LISTING:
-//                return "PRE_OR_LISTING";
-//            case TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U:
-//                return "B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U";
-//            case TreeBuilder.UL_OR_OL_OR_DL:
-//                return "UL_OR_OL_OR_DL";
-//            case TreeBuilder.IFRAME:
-//                return "IFRAME";
-//  case TreeBuilder.NOEMBED:
-//  return "NOEMBED";
-//            case TreeBuilder.EMBED_OR_IMG:
-//                return "EMBED_OR_IMG";
-//            case TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR:
-//                return "AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR";
-//            case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
-//                return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU";
-//            case TreeBuilder.FIELDSET_OR_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION:
-//                return "FIELDSET_OR_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION";
-//            case TreeBuilder.CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR:
-//                return "CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR";
-//            case TreeBuilder.RT_OR_RP:
-//                return "RT_OR_RP";
-//            case TreeBuilder.COMMAND_OR_EVENT_SOURCE:
-//                return "COMMAND_OR_EVENT_SOURCE";
-//            case TreeBuilder.PARAM_OR_SOURCE:
-//                return "PARAM_OR_SOURCE";
-//            case TreeBuilder.MGLYPH_OR_MALIGNMARK:
-//                return "MGLYPH_OR_MALIGNMARK";
-//            case TreeBuilder.MI_MO_MN_MS_MTEXT:
-//                return "MI_MO_MN_MS_MTEXT";
-//            case TreeBuilder.ANNOTATION_XML:
-//                return "ANNOTATION_XML";
-//            case TreeBuilder.FOREIGNOBJECT_OR_DESC:
-//                return "FOREIGNOBJECT_OR_DESC";
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * Regenerate self
-//     * 
-//     * @param args
-//     */
-//    public static void main(String[] args) {
-//        Arrays.sort(ELEMENT_NAMES);
-//        for (int i = 1; i < ELEMENT_NAMES.length; i++) {
-//            if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) {
-//                System.err.println("Hash collision: " + ELEMENT_NAMES[i].name
-//                        + ", " + ELEMENT_NAMES[i - 1].name);
-//                return;
-//            }
-//        }
-//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
-//            ElementName el = ELEMENT_NAMES[i];
-//            System.out.println("public static final ElementName "
-//                    + el.constName() + " = new ElementName" + el.toString()
-//                    + ";");
-//        }
-//        System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {");
-//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
-//            ElementName el = ELEMENT_NAMES[i];
-//            System.out.println(el.constName() + ",");
-//        }
-//        System.out.println("};");
-//        System.out.println("private final static int[] ELEMENT_HASHES = {");
-//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
-//            ElementName el = ELEMENT_NAMES[i];
-//            System.out.println(Integer.toString(el.hash()) + ",");
-//        }
-//        System.out.println("};");
-//    }
-
-    // START GENERATED CODE
-    public static final ElementName A = new ElementName("a", "a", TreeBuilder.A, false, false, false);
-    public static final ElementName B = new ElementName("b", "b", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName I = new ElementName("i", "i", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName P = new ElementName("p", "p", TreeBuilder.P, true, false, false);
-    public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName S = new ElementName("s", "s", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName U = new ElementName("u", "u", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR, true, false, false);
-    public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT, true, false, false);
-    public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL, true, false, false);
-    public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT, true, false, false);
-    public static final ElementName EM = new ElementName("em", "em", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
-    public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
-    public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
-    public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
-    public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
-    public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
-    public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR, true, false, false);
-    public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI, true, false, false);
-    public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
-    public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
-    public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
-    public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
-    public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL, true, false, false);
-    public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP, false, false, false);
-    public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP, false, false, false);
-    public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH, false, true, false);
-    public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH, false, true, false);
-    public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR, true, false, true);
-    public static final ElementName TT = new ElementName("tt", "tt", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL, true, false, false);
-    public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL, true, false, false);
-    public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
-    public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.EMBED_OR_IMG, true, false, false);
-    public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING, true, false, false);
-    public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
-    public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG, false, false, false);
-    public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
-    public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
-    public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
-    public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP, false, false, false);
-    public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
-    public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE, true, false, false);
-    public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY, true, false, false);
-    public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CODE = new ElementName("code", "code", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC, false, false, false);
-    public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM, true, false, false);
-    public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT, false, false, false);
-    public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD, true, false, false);
-    public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML, false, true, false);
-    public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK, true, false, false);
-    public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META, true, false, false);
-    public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH, false, false, false);
-    public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
-    public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR, false, false, false);
-    public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
-    public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
-    public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED_OR_IMG, true, false, false);
-    public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME, true, false, false);
-    public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE, true, false, false);
-    public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT, true, false, false);
-    public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OUTPUT_OR_LABEL, false, false, false);
-    public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
-    public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE, true, false, false);
-    public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE, true, false, false);
-    public static final ElementName SMALL = new ElementName("small", "small", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT, true, false, true);
-    public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE, false, true, true);
-    public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE, true, false, false);
-    public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT, true, false, true);
-    public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT, true, false, true);
-    public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET, false, true, false);
-    public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON, false, true, false);
-    public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
-    public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DIALOG = new ElementName("dialog", "dialog", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME, true, false, false);
-    public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN, true, false, false);
-    public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK, false, false, false);
-    public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION, true, false, false);
-    public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT, false, true, false);
-    public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT_OR_LABEL, false, false, false);
-    public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE, false, false, false);
-    public static final ElementName STRIKE = new ElementName("strike", "strike", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
-    public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SPACER = new ElementName("spacer", "spacer", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
-    public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT, true, false, false);
-    public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT, true, false, false);
-    public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
-    public static final ElementName COMMAND = new ElementName("command", "command", TreeBuilder.COMMAND_OR_EVENT_SOURCE, true, false, false);
-    public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION, false, true, false);
-    public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX, true, false, false);
-    public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING, true, false, false);
-    public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET, false, true, false);
-    public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED, true, false, false);
-    public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
-    public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP, true, false, false);
-    public static final ElementName DATAGRID = new ElementName("datagrid", "datagrid", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
-    public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET, true, false, false);
-    public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET, true, false, false);
-    public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES, true, false, false);
-    public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT, true, false, false);
-    public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP, true, false, false);
-    public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA, true, false, false);
-    public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT, true, false, false);
-    public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
-    public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK, false, false, false);
-    public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName EVENTSOURCE = new ElementName("eventsource", "eventsource", TreeBuilder.COMMAND_OR_EVENT_SOURCE, true, false, false);
-    public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC, false, false, false);
-    public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML, false, false, false);
-    public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER, false, false, false);
-    public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER, false, false, false);
-    private final static @NoLength ElementName[] ELEMENT_NAMES = {
-    A,
-    B,
-    G,
-    I,
-    P,
-    Q,
-    S,
-    U,
-    BR,
-    CI,
-    CN,
-    DD,
-    DL,
-    DT,
-    EM,
-    EQ,
-    FN,
-    H1,
-    H2,
-    H3,
-    H4,
-    H5,
-    H6,
-    GT,
-    HR,
-    IN,
-    LI,
-    LN,
-    LT,
-    MI,
-    MN,
-    MO,
-    MS,
-    OL,
-    OR,
-    PI,
-    RP,
-    RT,
-    TD,
-    TH,
-    TR,
-    TT,
-    UL,
-    AND,
-    ARG,
-    ABS,
-    BIG,
-    BDO,
-    CSC,
-    COL,
-    COS,
-    COT,
-    DEL,
-    DFN,
-    DIR,
-    DIV,
-    EXP,
-    GCD,
-    GEQ,
-    IMG,
-    INS,
-    INT,
-    KBD,
-    LOG,
-    LCM,
-    LEQ,
-    MTD,
-    MIN,
-    MAP,
-    MTR,
-    MAX,
-    NEQ,
-    NOT,
-    NAV,
-    PRE,
-    REM,
-    SUB,
-    SEC,
-    SVG,
-    SUM,
-    SIN,
-    SEP,
-    SUP,
-    SET,
-    TAN,
-    USE,
-    VAR,
-    WBR,
-    XMP,
-    XOR,
-    AREA,
-    ABBR,
-    BASE,
-    BVAR,
-    BODY,
-    CARD,
-    CODE,
-    CITE,
-    CSCH,
-    COSH,
-    COTH,
-    CURL,
-    DESC,
-    DIFF,
-    DEFS,
-    FORM,
-    FONT,
-    GRAD,
-    HEAD,
-    HTML,
-    LINE,
-    LINK,
-    LIST,
-    META,
-    MSUB,
-    MODE,
-    MATH,
-    MARK,
-    MASK,
-    MEAN,
-    MSUP,
-    MENU,
-    MROW,
-    NONE,
-    NOBR,
-    NEST,
-    PATH,
-    PLUS,
-    RULE,
-    REAL,
-    RELN,
-    RECT,
-    ROOT,
-    RUBY,
-    SECH,
-    SINH,
-    SPAN,
-    SAMP,
-    STOP,
-    SDEV,
-    TIME,
-    TRUE,
-    TREF,
-    TANH,
-    TEXT,
-    VIEW,
-    ASIDE,
-    AUDIO,
-    APPLY,
-    EMBED,
-    FRAME,
-    FALSE,
-    FLOOR,
-    GLYPH,
-    HKERN,
-    IMAGE,
-    IDENT,
-    INPUT,
-    LABEL,
-    LIMIT,
-    MFRAC,
-    MPATH,
-    METER,
-    MOVER,
-    MINUS,
-    MROOT,
-    MSQRT,
-    MTEXT,
-    NOTIN,
-    PIECE,
-    PARAM,
-    POWER,
-    REALS,
-    STYLE,
-    SMALL,
-    THEAD,
-    TABLE,
-    TITLE,
-    TSPAN,
-    TIMES,
-    TFOOT,
-    TBODY,
-    UNION,
-    VKERN,
-    VIDEO,
-    ARCSEC,
-    ARCCSC,
-    ARCTAN,
-    ARCSIN,
-    ARCCOS,
-    APPLET,
-    ARCCOT,
-    APPROX,
-    BUTTON,
-    CIRCLE,
-    CENTER,
-    CURSOR,
-    CANVAS,
-    DIVIDE,
-    DEGREE,
-    DIALOG,
-    DOMAIN,
-    EXISTS,
-    FETILE,
-    FIGURE,
-    FORALL,
-    FILTER,
-    FOOTER,
-    HEADER,
-    IFRAME,
-    KEYGEN,
-    LAMBDA,
-    LEGEND,
-    MSPACE,
-    MTABLE,
-    MSTYLE,
-    MGLYPH,
-    MEDIAN,
-    MUNDER,
-    MARKER,
-    MERROR,
-    MOMENT,
-    MATRIX,
-    OPTION,
-    OBJECT,
-    OUTPUT,
-    PRIMES,
-    SOURCE,
-    STRIKE,
-    STRONG,
-    SWITCH,
-    SYMBOL,
-    SPACER,
-    SELECT,
-    SUBSET,
-    SCRIPT,
-    TBREAK,
-    VECTOR,
-    ARTICLE,
-    ANIMATE,
-    ARCSECH,
-    ARCCSCH,
-    ARCTANH,
-    ARCSINH,
-    ARCCOSH,
-    ARCCOTH,
-    ACRONYM,
-    ADDRESS,
-    BGSOUND,
-    COMMAND,
-    COMPOSE,
-    CEILING,
-    CSYMBOL,
-    CAPTION,
-    DISCARD,
-    DECLARE,
-    DETAILS,
-    ELLIPSE,
-    FEFUNCA,
-    FEFUNCB,
-    FEBLEND,
-    FEFLOOD,
-    FEIMAGE,
-    FEMERGE,
-    FEFUNCG,
-    FEFUNCR,
-    HANDLER,
-    INVERSE,
-    IMPLIES,
-    ISINDEX,
-    LOGBASE,
-    LISTING,
-    MFENCED,
-    MPADDED,
-    MARQUEE,
-    MACTION,
-    MSUBSUP,
-    NOEMBED,
-    POLYGON,
-    PATTERN,
-    PRODUCT,
-    SETDIFF,
-    SECTION,
-    TENDSTO,
-    UPLIMIT,
-    ALTGLYPH,
-    BASEFONT,
-    CLIPPATH,
-    CODOMAIN,
-    COLGROUP,
-    DATAGRID,
-    EMPTYSET,
-    FACTOROF,
-    FIELDSET,
-    FRAMESET,
-    FEOFFSET,
-    GLYPHREF,
-    INTERVAL,
-    INTEGERS,
-    INFINITY,
-    LISTENER,
-    LOWLIMIT,
-    METADATA,
-    MENCLOSE,
-    MPHANTOM,
-    NOFRAMES,
-    NOSCRIPT,
-    OPTGROUP,
-    POLYLINE,
-    PREFETCH,
-    PROGRESS,
-    PRSUBSET,
-    QUOTIENT,
-    SELECTOR,
-    TEXTAREA,
-    TEXTPATH,
-    VARIANCE,
-    ANIMATION,
-    CONJUGATE,
-    CONDITION,
-    COMPLEXES,
-    FONT_FACE,
-    FACTORIAL,
-    INTERSECT,
-    IMAGINARY,
-    LAPLACIAN,
-    MATRIXROW,
-    NOTSUBSET,
-    OTHERWISE,
-    PIECEWISE,
-    PLAINTEXT,
-    RATIONALS,
-    SEMANTICS,
-    TRANSPOSE,
-    ANNOTATION,
-    BLOCKQUOTE,
-    DIVERGENCE,
-    EULERGAMMA,
-    EQUIVALENT,
-    IMAGINARYI,
-    MALIGNMARK,
-    MUNDEROVER,
-    MLABELEDTR,
-    NOTANUMBER,
-    SOLIDCOLOR,
-    ALTGLYPHDEF,
-    DETERMINANT,
-    EVENTSOURCE,
-    FEMERGENODE,
-    FECOMPOSITE,
-    FESPOTLIGHT,
-    MALIGNGROUP,
-    MPRESCRIPTS,
-    MOMENTABOUT,
-    NOTPRSUBSET,
-    PARTIALDIFF,
-    ALTGLYPHITEM,
-    ANIMATECOLOR,
-    DATATEMPLATE,
-    EXPONENTIALE,
-    FETURBULENCE,
-    FEPOINTLIGHT,
-    FEMORPHOLOGY,
-    OUTERPRODUCT,
-    ANIMATEMOTION,
-    COLOR_PROFILE,
-    FONT_FACE_SRC,
-    FONT_FACE_URI,
-    FOREIGNOBJECT,
-    FECOLORMATRIX,
-    MISSING_GLYPH,
-    MMULTISCRIPTS,
-    SCALARPRODUCT,
-    VECTORPRODUCT,
-    ANNOTATION_XML,
-    DEFINITION_SRC,
-    FONT_FACE_NAME,
-    FEGAUSSIANBLUR,
-    FEDISTANTLIGHT,
-    LINEARGRADIENT,
-    NATURALNUMBERS,
-    RADIALGRADIENT,
-    ANIMATETRANSFORM,
-    CARTESIANPRODUCT,
-    FONT_FACE_FORMAT,
-    FECONVOLVEMATRIX,
-    FEDIFFUSELIGHTING,
-    FEDISPLACEMENTMAP,
-    FESPECULARLIGHTING,
-    DOMAINOFAPPLICATION,
-    FECOMPONENTTRANSFER,
-    };
-    private final static int[] ELEMENT_HASHES = {
-    1057,
-    1090,
-    1255,
-    1321,
-    1552,
-    1585,
-    1651,
-    1717,
-    68162,
-    68899,
-    69059,
-    69764,
-    70020,
-    70276,
-    71077,
-    71205,
-    72134,
-    72232,
-    72264,
-    72296,
-    72328,
-    72360,
-    72392,
-    73351,
-    74312,
-    75209,
-    78124,
-    78284,
-    78476,
-    79149,
-    79309,
-    79341,
-    79469,
-    81295,
-    81487,
-    82224,
-    84498,
-    84626,
-    86164,
-    86292,
-    86612,
-    86676,
-    87445,
-    3183041,
-    3186241,
-    3198017,
-    3218722,
-    3226754,
-    3247715,
-    3256803,
-    3263971,
-    3264995,
-    3289252,
-    3291332,
-    3295524,
-    3299620,
-    3326725,
-    3379303,
-    3392679,
-    3448233,
-    3460553,
-    3461577,
-    3510347,
-    3546604,
-    3552364,
-    3556524,
-    3576461,
-    3586349,
-    3588141,
-    3590797,
-    3596333,
-    3622062,
-    3625454,
-    3627054,
-    3675728,
-    3749042,
-    3771059,
-    3771571,
-    3776211,
-    3782323,
-    3782963,
-    3784883,
-    3785395,
-    3788979,
-    3815476,
-    3839605,
-    3885110,
-    3917911,
-    3948984,
-    3951096,
-    135304769,
-    135858241,
-    136498210,
-    136906434,
-    137138658,
-    137512995,
-    137531875,
-    137548067,
-    137629283,
-    137645539,
-    137646563,
-    137775779,
-    138529956,
-    138615076,
-    139040932,
-    140954086,
-    141179366,
-    141690439,
-    142738600,
-    143013512,
-    146979116,
-    147175724,
-    147475756,
-    147902637,
-    147936877,
-    148017645,
-    148131885,
-    148228141,
-    148229165,
-    148309165,
-    148395629,
-    148551853,
-    148618829,
-    149076462,
-    149490158,
-    149572782,
-    151277616,
-    151639440,
-    153268914,
-    153486514,
-    153563314,
-    153750706,
-    153763314,
-    153914034,
-    154406067,
-    154417459,
-    154600979,
-    154678323,
-    154680979,
-    154866835,
-    155366708,
-    155375188,
-    155391572,
-    155465780,
-    155869364,
-    158045494,
-    168988979,
-    169321621,
-    169652752,
-    173151309,
-    174240818,
-    174247297,
-    174669292,
-    175391532,
-    176638123,
-    177380397,
-    177879204,
-    177886734,
-    180753473,
-    181020073,
-    181503558,
-    181686320,
-    181999237,
-    181999311,
-    182048201,
-    182074866,
-    182078003,
-    182083764,
-    182920847,
-    184716457,
-    184976961,
-    185145071,
-    187281445,
-    187872052,
-    188100653,
-    188875944,
-    188919873,
-    188920457,
-    189203987,
-    189371817,
-    189414886,
-    189567458,
-    190266670,
-    191318187,
-    191337609,
-    202479203,
-    202493027,
-    202835587,
-    202843747,
-    203013219,
-    203036048,
-    203045987,
-    203177552,
-    203898516,
-    204648562,
-    205067918,
-    205078130,
-    205096654,
-    205689142,
-    205690439,
-    205766017,
-    205988909,
-    207213161,
-    207794484,
-    207800999,
-    208023602,
-    208213644,
-    208213647,
-    210310273,
-    210940978,
-    213325049,
-    213946445,
-    214055079,
-    215125040,
-    215134273,
-    215135028,
-    215237420,
-    215418148,
-    215553166,
-    215553394,
-    215563858,
-    215627949,
-    215754324,
-    217529652,
-    217713834,
-    217732628,
-    218731945,
-    221417045,
-    221424946,
-    221493746,
-    221515401,
-    221658189,
-    221844577,
-    221908140,
-    221910626,
-    221921586,
-    222659762,
-    225001091,
-    236105833,
-    236113965,
-    236194995,
-    236195427,
-    236206132,
-    236206387,
-    236211683,
-    236212707,
-    236381647,
-    236571826,
-    237124271,
-    238172205,
-    238210544,
-    238270764,
-    238435405,
-    238501172,
-    239224867,
-    239257644,
-    239710497,
-    240307721,
-    241208789,
-    241241557,
-    241318060,
-    241319404,
-    241343533,
-    241344069,
-    241405397,
-    241765845,
-    243864964,
-    244502085,
-    244946220,
-    245109902,
-    247647266,
-    247707956,
-    248648814,
-    248648836,
-    248682161,
-    248986932,
-    249058914,
-    249697357,
-    252132601,
-    252135604,
-    252317348,
-    255007012,
-    255278388,
-    256365156,
-    257566121,
-    269763372,
-    271202790,
-    271863856,
-    272049197,
-    272127474,
-    272770631,
-    274339449,
-    274939471,
-    275388004,
-    275388005,
-    275388006,
-    275977800,
-    278267602,
-    278513831,
-    278712622,
-    281613765,
-    281683369,
-    282120228,
-    282250732,
-    282508942,
-    283743649,
-    283787570,
-    284710386,
-    285391148,
-    285478533,
-    285854898,
-    285873762,
-    286931113,
-    288964227,
-    289445441,
-    289689648,
-    291671489,
-    303512884,
-    305319975,
-    305610036,
-    305764101,
-    308448294,
-    308675890,
-    312085683,
-    312264750,
-    315032867,
-    316391000,
-    317331042,
-    317902135,
-    318950711,
-    319447220,
-    321499182,
-    322538804,
-    323145200,
-    337067316,
-    337826293,
-    339905989,
-    340833697,
-    341457068,
-    345302593,
-    349554733,
-    349771471,
-    349786245,
-    350819405,
-    356072847,
-    370349192,
-    373962798,
-    374509141,
-    375558638,
-    375574835,
-    376053993,
-    383276530,
-    383373833,
-    383407586,
-    384439906,
-    386079012,
-    404133513,
-    404307343,
-    407031852,
-    408072233,
-    409112005,
-    409608425,
-    409771500,
-    419040932,
-    437730612,
-    439529766,
-    442616365,
-    442813037,
-    443157674,
-    443295316,
-    450118444,
-    450482697,
-    456789668,
-    459935396,
-    471217869,
-    474073645,
-    476230702,
-    476665218,
-    476717289,
-    483014825,
-    485083298,
-    489306281,
-    538364390,
-    540675748,
-    543819186,
-    543958612,
-    576960820,
-    577242548,
-    610515252,
-    642202932,
-    644420819,
-    };
-
-
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/HtmlAttributes.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * Copyright (c) 2007 Henri Sivonen
- * Copyright (c) 2008-2009 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-import nu.validator.htmlparser.annotation.IdType;
-import nu.validator.htmlparser.annotation.Local;
-import nu.validator.htmlparser.annotation.NsUri;
-import nu.validator.htmlparser.annotation.Prefix;
-import nu.validator.htmlparser.annotation.QName;
-import nu.validator.htmlparser.common.XmlViolationPolicy;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * Be careful with this class. QName is the name in from HTML tokenization.
- * Otherwise, please refer to the interface doc.
- * 
- * @version $Id: AttributesImpl.java 206 2008-03-20 14:09:29Z hsivonen $
- * @author hsivonen
- */
-public final class HtmlAttributes implements Attributes {
-
-    // [NOCPP[
-
-    private static final AttributeName[] EMPTY_ATTRIBUTENAMES = new AttributeName[0];
-
-    private static final String[] EMPTY_STRINGS = new String[0];
-
-    // ]NOCPP]
-
-    public static final HtmlAttributes EMPTY_ATTRIBUTES = new HtmlAttributes(
-            AttributeName.HTML);
-
-    private int mode;
-
-    private int length;
-
-    private AttributeName[] names;
-
-    private String[] values; // XXX perhaps make this @NoLength?
-
-    // [NOCPP[
-
-    private String idValue;
-
-    private int xmlnsLength;
-
-    private AttributeName[] xmlnsNames;
-
-    private String[] xmlnsValues;
-
-    // ]NOCPP]
-
-    public HtmlAttributes(int mode) {
-        this.mode = mode;
-        this.length = 0;
-        this.names = new AttributeName[5]; // covers 98.3% of elements
-                                            // according to
-        // Hixie
-        this.values = new String[5];
-
-        // [NOCPP[
-
-        this.idValue = null;
-
-        this.xmlnsLength = 0;
-
-        this.xmlnsNames = HtmlAttributes.EMPTY_ATTRIBUTENAMES;
-
-        this.xmlnsValues = HtmlAttributes.EMPTY_STRINGS;
-
-        // ]NOCPP]
-    }
-    /*
-    public HtmlAttributes(HtmlAttributes other) {
-        this.mode = other.mode;
-        this.length = other.length;
-        this.names = new AttributeName[other.length];
-        this.values = new String[other.length];
-        // [NOCPP[
-        this.idValue = other.idValue;
-        this.xmlnsLength = other.xmlnsLength;
-        this.xmlnsNames = new AttributeName[other.xmlnsLength];
-        this.xmlnsValues = new String[other.xmlnsLength];
-        // ]NOCPP]
-    }
-    */
-
-    void destructor() {
-        clear(0);
-        Portability.releaseArray(names);
-        Portability.releaseArray(values);
-    }
-    
-    /**
-     * Only use with a static argument
-     * 
-     * @param name
-     * @return
-     */
-    public int getIndex(AttributeName name) {
-        for (int i = 0; i < length; i++) {
-            if (names[i] == name) {
-                return i;
-            }
-        }
-        return -1;
-    }
-
-    // [NOCPP[
-    
-    public int getIndex(String qName) {
-        for (int i = 0; i < length; i++) {
-            if (names[i].getQName(mode).equals(qName)) {
-                return i;
-            }
-        }
-        return -1;
-    }
-    
-    public int getIndex(String uri, String localName) {
-        for (int i = 0; i < length; i++) {
-            if (names[i].getLocal(mode).equals(localName)
-                    && names[i].getUri(mode).equals(uri)) {
-                return i;
-            }
-        }
-        return -1;
-    }
-
-    public @IdType String getType(String qName) {
-        int index = getIndex(qName);
-        if (index == -1) {
-            return null;
-        } else {
-            return getType(index);
-        }
-    }
-
-    public @IdType String getType(String uri, String localName) {
-        int index = getIndex(uri, localName);
-        if (index == -1) {
-            return null;
-        } else {
-            return getType(index);
-        }
-    }
-    
-    public String getValue(String qName) {
-        int index = getIndex(qName);
-        if (index == -1) {
-            return null;
-        } else {
-            return getValue(index);
-        }
-    }
-
-    public String getValue(String uri, String localName) {
-        int index = getIndex(uri, localName);
-        if (index == -1) {
-            return null;
-        } else {
-            return getValue(index);
-        }
-    }
-    
-    // ]NOCPP]
-    
-    public int getLength() {
-        return length;
-    }
-
-    public @Local String getLocalName(int index) {
-        if (index < length && index >= 0) {
-            return names[index].getLocal(mode);
-        } else {
-            return null;
-        }
-    }
-
-    // [NOCPP[
-    
-    public @QName String getQName(int index) {
-        if (index < length && index >= 0) {
-            return names[index].getQName(mode);
-        } else {
-            return null;
-        }
-    }
-
-    public @IdType String getType(int index) {
-        if (index < length && index >= 0) {
-            return names[index].getType(mode);
-        } else {
-            return null;
-        }
-    }
-
-    // ]NOCPP]
-    
-    public AttributeName getAttributeName(int index) {
-        if (index < length && index >= 0) {
-            return names[index];
-        } else {
-            return null;
-        }
-    }
-
-    public @NsUri String getURI(int index) {
-        if (index < length && index >= 0) {
-            return names[index].getUri(mode);
-        } else {
-            return null;
-        }
-    }
-
-    public @Prefix String getPrefix(int index) {
-        if (index < length && index >= 0) {
-            return names[index].getPrefix(mode);
-        } else {
-            return null;
-        }
-    }
-
-    public String getValue(int index) {
-        if (index < length && index >= 0) {
-            return values[index];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Only use with static argument.
-     * 
-     * @see org.xml.sax.Attributes#getValue(java.lang.String)
-     */
-    public String getValue(AttributeName name) {
-        int index = getIndex(name);
-        if (index == -1) {
-            return null;
-        } else {
-            return getValue(index);
-        }
-    }
-    
-    // [NOCPP[
-
-    public String getId() {
-        return idValue;
-    }
-
-    public int getXmlnsLength() {
-        return xmlnsLength;
-    }
-
-    public @Local String getXmlnsLocalName(int index) {
-        if (index < xmlnsLength && index >= 0) {
-            return xmlnsNames[index].getLocal(mode);
-        } else {
-            return null;
-        }
-    }
-
-    public @NsUri String getXmlnsURI(int index) {
-        if (index < xmlnsLength && index >= 0) {
-            return xmlnsNames[index].getUri(mode);
-        } else {
-            return null;
-        }
-    }
-
-    public String getXmlnsValue(int index) {
-        if (index < xmlnsLength && index >= 0) {
-            return xmlnsValues[index];
-        } else {
-            return null;
-        }
-    }
-    
-    public int getXmlnsIndex(AttributeName name) {
-        for (int i = 0; i < xmlnsLength; i++) {
-            if (xmlnsNames[i] == name) {
-                return i;
-            }
-        }
-        return -1;
-    }
-    
-    public String getXmlnsValue(AttributeName name) {
-        int index = getXmlnsIndex(name);
-        if (index == -1) {
-            return null;
-        } else {
-            return getXmlnsValue(index);
-        }
-    }
-    
-    public AttributeName getXmlnsAttributeName(int index) {
-        if (index < xmlnsLength && index >= 0) {
-            return xmlnsNames[index];
-        } else {
-            return null;
-        }
-    }
-
-    // ]NOCPP]
-
-    void addAttribute(AttributeName name, String value
-            // [NOCPP[
-            , XmlViolationPolicy xmlnsPolicy
-    // ]NOCPP]        
-    ) throws SAXException {
-        // [NOCPP[
-        if (name == AttributeName.ID) {
-            idValue = value;
-        }
-
-        if (name.isXmlns()) {
-            if (xmlnsNames.length == xmlnsLength) {
-                int newLen = xmlnsLength == 0 ? 2 : xmlnsLength << 1;
-                AttributeName[] newNames = new AttributeName[newLen];
-                System.arraycopy(xmlnsNames, 0, newNames, 0, xmlnsNames.length);
-                xmlnsNames = newNames;
-                String[] newValues = new String[newLen];
-                System.arraycopy(xmlnsValues, 0, newValues, 0, xmlnsValues.length);
-                xmlnsValues = newValues;
-            }
-            xmlnsNames[xmlnsLength] = name;
-            xmlnsValues[xmlnsLength] = value;
-            xmlnsLength++;
-            switch (xmlnsPolicy) {
-                case FATAL:
-                    // this is ugly
-                    throw new SAXException("Saw an xmlns attribute.");
-                case ALTER_INFOSET:
-                    return;
-                case ALLOW:
-                    // fall through
-            }
-        }
-
-        // ]NOCPP]
-
-        if (names.length == length) {
-            int newLen = length << 1; // The first growth covers virtually
-            // 100% of elements according to
-            // Hixie
-            AttributeName[] newNames = new AttributeName[newLen];
-            System.arraycopy(names, 0, newNames, 0, names.length);
-            Portability.releaseArray(names);
-            names = newNames;
-            String[] newValues = new String[newLen];
-            System.arraycopy(values, 0, newValues, 0, values.length);
-            Portability.releaseArray(values);
-            values = newValues;
-        }
-        names[length] = name;
-        values[length] = value;
-        length++;
-    }
-
-    void clear(int m) {
-        for (int i = 0; i < length; i++) {
-            names[i].release();
-            names[i] = null;
-            Portability.releaseString(values[i]);
-            values[i] = null;
-        }
-        length = 0;
-        mode = m;
-        // [NOCPP[
-        idValue = null;
-        for (int i = 0; i < xmlnsLength; i++) {
-            xmlnsNames[i] = null;
-            xmlnsValues[i] = null;
-        }
-        xmlnsLength = 0;
-        // ]NOCPP]
-    }
-    
-    /**
-     * This is used in C++ to release special <code>isindex</code>
-     * attribute values whose ownership is not transferred.
-     */
-    void releaseValue(int i) {
-        Portability.releaseString(values[i]);        
-    }
-    
-    /**
-     * This is only used for <code>AttributeName</code> ownership transfer
-     * in the isindex case to avoid freeing custom names twice in C++.
-     */
-    void clearWithoutReleasingContents() {
-        for (int i = 0; i < length; i++) {
-            names[i] = null;
-            values[i] = null;
-        }
-        length = 0;
-    }
-
-    boolean contains(AttributeName name) {
-        for (int i = 0; i < length; i++) {
-            if (name.equalsAnother(names[i])) {
-                return true;
-            }
-        }
-        // [NOCPP[
-        for (int i = 0; i < xmlnsLength; i++) {
-            if (name.equalsAnother(xmlnsNames[i])) {
-                return true;
-            }
-        }
-        // ]NOCPP]
-        return false;
-    }
-
-    public void adjustForMath() {
-        mode = AttributeName.MATHML;
-    }
-
-    public void adjustForSvg() {
-        mode = AttributeName.SVG;
-    }
-
-    // [NOCPP[
-    
-    void processNonNcNames(TreeBuilder<?> treeBuilder, XmlViolationPolicy namePolicy) throws SAXException {
-        for (int i = 0; i < length; i++) {
-            AttributeName attName = names[i];
-            if (!attName.isNcName(mode)) {
-                String name = attName.getLocal(mode);
-                switch (namePolicy) {
-                    case ALTER_INFOSET:
-                        names[i] = AttributeName.create(NCName.escapeName(name));
-                        // fall through
-                    case ALLOW:
-                        if (attName != AttributeName.XML_LANG) {
-                            treeBuilder.warn("Attribute \u201C" + name + "\u201D is not serializable as XML 1.0.");
-                        }
-                        break;
-                    case FATAL:
-                        treeBuilder.fatal("Attribute \u201C" + name + "\u201D is not serializable as XML 1.0.");
-                        break;
-                }
-            }
-        }
-    }
-    
-    public void merge(HtmlAttributes attributes) throws SAXException {
-        int len = attributes.getLength();
-        for (int i = 0; i < len; i++) {
-            AttributeName name = attributes.getAttributeName(i);
-            if (!contains(name)) {
-                addAttribute(name, attributes.getValue(i), XmlViolationPolicy.ALLOW);
-            }
-        }
-    }
-
-    // ]NOCPP]
-    
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/MetaScanner.java
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
- * Copyright (c) 2007 Henri Sivonen
- * Copyright (c) 2008-2009 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-import java.io.IOException;
-
-import nu.validator.htmlparser.annotation.NoLength;
-import nu.validator.htmlparser.common.ByteReadable;
-
-import org.xml.sax.SAXException;
-
-public abstract class MetaScanner {
-
-    private static final @NoLength char[] CHARSET = "charset".toCharArray();
-    
-    private static final @NoLength char[] CONTENT = "content".toCharArray();
-
-    private static final int NO = 0;
-
-    private static final int M = 1;
-    
-    private static final int E = 2;
-    
-    private static final int T = 3;
-
-    private static final int A = 4;
-    
-    private static final int DATA = 0;
-
-    private static final int TAG_OPEN = 1;
-
-    private static final int SCAN_UNTIL_GT = 2;
-
-    private static final int TAG_NAME = 3;
-
-    private static final int BEFORE_ATTRIBUTE_NAME = 4;
-
-    private static final int ATTRIBUTE_NAME = 5;
-
-    private static final int AFTER_ATTRIBUTE_NAME = 6;
-
-    private static final int BEFORE_ATTRIBUTE_VALUE = 7;
-
-    private static final int ATTRIBUTE_VALUE_DOUBLE_QUOTED = 8;
-
-    private static final int ATTRIBUTE_VALUE_SINGLE_QUOTED = 9;
-
-    private static final int ATTRIBUTE_VALUE_UNQUOTED = 10;
-
-    private static final int AFTER_ATTRIBUTE_VALUE_QUOTED = 11;
-
-    private static final int MARKUP_DECLARATION_OPEN = 13;
-    
-    private static final int MARKUP_DECLARATION_HYPHEN = 14;
-
-    private static final int COMMENT_START = 15;
-
-    private static final int COMMENT_START_DASH = 16;
-
-    private static final int COMMENT = 17;
-
-    private static final int COMMENT_END_DASH = 18;
-
-    private static final int COMMENT_END = 19;
-    
-    private static final int SELF_CLOSING_START_TAG = 20;
-    
-    protected ByteReadable readable;
-    
-    private int metaState = NO;
-
-    private int contentIndex = -1;
-    
-    private int charsetIndex = -1;
-
-    protected int stateSave = DATA;
-
-    private int strBufLen;
-
-    private char[] strBuf;
-    
-    // [NOCPP[
-    
-    /**
-     * @param source
-     * @param errorHandler
-     * @param publicId
-     * @param systemId
-     */
-    public MetaScanner() {
-        this.readable = null;
-        this.metaState = NO;
-        this.contentIndex = -1;
-        this.charsetIndex = -1;
-        this.stateSave = DATA;
-        strBufLen = 0;
-        strBuf = new char[36];
-    }
-    
-    /**
-     * -1 means end.
-     * @return
-     * @throws IOException
-     */
-    protected int read() throws IOException {
-        return readable.readByte();
-    }
-
-    // ]NOCPP]
-
-    // WARNING When editing this, makes sure the bytecode length shown by javap
-    // stays under 8000 bytes!
-    protected final void stateLoop(int state)
-            throws SAXException, IOException {
-        int c = -1;
-        boolean reconsume = false;
-        stateloop: for (;;) {
-            switch (state) {
-                case DATA:
-                    dataloop: for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            c = read();
-                        }
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '<':
-                                state = MetaScanner.TAG_OPEN;
-                                break dataloop; // FALL THROUGH continue
-                            // stateloop;
-                            default:
-                                continue;
-                        }
-                    }
-                    // WARNING FALLTHRU CASE TRANSITION: DON'T REORDER
-                case TAG_OPEN:
-                    tagopenloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case 'm':
-                            case 'M':
-                                metaState = M;
-                                state = MetaScanner.TAG_NAME;
-                                break tagopenloop;
-                                // continue stateloop;                                
-                            case '!':
-                                state = MetaScanner.MARKUP_DECLARATION_OPEN;
-                                continue stateloop;
-                            case '?':
-                            case '/':
-                                state = MetaScanner.SCAN_UNTIL_GT;
-                                continue stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
-                                    metaState = NO;
-                                    state = MetaScanner.TAG_NAME;
-                                    break tagopenloop;
-                                    // continue stateloop;
-                                }
-                                state = MetaScanner.DATA;
-                                reconsume = true;
-                                continue stateloop;
-                        }
-                    }
-                    // FALL THROUGH DON'T REORDER
-                case TAG_NAME:
-                    tagnameloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-                            case '\u000C':
-                                state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
-                                break tagnameloop;
-                            // continue stateloop;
-                            case '/':
-                                state = MetaScanner.SELF_CLOSING_START_TAG;
-                                continue stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            case 'e':
-                            case 'E':
-                                if (metaState == M) {
-                                    metaState = E;
-                                } else {
-                                    metaState = NO;
-                                }
-                                continue;
-                            case 't':
-                            case 'T':
-                                if (metaState == E) {
-                                    metaState = T;
-                                } else {
-                                    metaState = NO;
-                                }
-                                continue;
-                            case 'a':
-                            case 'A':
-                                if (metaState == T) {
-                                    metaState = A;
-                                } else {
-                                    metaState = NO;
-                                }
-                                continue;
-                            default:
-                                metaState = NO;
-                                continue;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case BEFORE_ATTRIBUTE_NAME:
-                    beforeattributenameloop: for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            c = read();
-                        }
-                        /*
-                         * Consume the next input character:
-                         */
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-                            case '\u000C':
-                                continue;
-                            case '/':
-                                state = MetaScanner.SELF_CLOSING_START_TAG;
-                                continue stateloop;
-                            case '>':
-                                state = DATA;
-                                continue stateloop;
-                            case 'c':
-                            case 'C':
-                                contentIndex = 0;
-                                charsetIndex = 0;
-                                state = MetaScanner.ATTRIBUTE_NAME;
-                                break beforeattributenameloop;                                
-                            default:
-                                contentIndex = -1;
-                                charsetIndex = -1;
-                                state = MetaScanner.ATTRIBUTE_NAME;
-                                break beforeattributenameloop;
-                            // continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case ATTRIBUTE_NAME:
-                    attributenameloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-                            case '\u000C':
-                                state = MetaScanner.AFTER_ATTRIBUTE_NAME;
-                                continue stateloop;
-                            case '/':
-                                state = MetaScanner.SELF_CLOSING_START_TAG;
-                                continue stateloop;
-                            case '=':
-                                strBufLen = 0;
-                                state = MetaScanner.BEFORE_ATTRIBUTE_VALUE;
-                                break attributenameloop;
-                            // continue stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                if (metaState == A) {
-                                    if (c >= 'A' && c <= 'Z') {
-                                        c += 0x20;
-                                    }
-                                    if (contentIndex == 6) {
-                                        contentIndex = -1;
-                                    } else if (contentIndex > -1
-                                            && contentIndex < 6
-                                            && (c == CONTENT[contentIndex + 1])) {
-                                        contentIndex++;
-                                    }
-                                    if (charsetIndex == 6) {
-                                        charsetIndex = -1;
-                                    } else if (charsetIndex > -1
-                                            && charsetIndex < 6
-                                            && (c == CHARSET[charsetIndex + 1])) {
-                                        charsetIndex++;
-                                    }
-                                }
-                                continue;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case BEFORE_ATTRIBUTE_VALUE:
-                    beforeattributevalueloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-                            case '\u000C':
-                                continue;
-                            case '"':
-                                state = MetaScanner.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
-                                break beforeattributevalueloop;
-                            // continue stateloop;
-                            case '\'':
-                                state = MetaScanner.ATTRIBUTE_VALUE_SINGLE_QUOTED;
-                                continue stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                if (charsetIndex == 6 || contentIndex == 6) {
-                                    addToBuffer(c);
-                                }
-                                state = MetaScanner.ATTRIBUTE_VALUE_UNQUOTED;
-                                continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case ATTRIBUTE_VALUE_DOUBLE_QUOTED:
-                    attributevaluedoublequotedloop: for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            c = read();
-                        }
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '"':
-                                if (tryCharset()) {
-                                    break stateloop;
-                                }
-                                state = MetaScanner.AFTER_ATTRIBUTE_VALUE_QUOTED;
-                                break attributevaluedoublequotedloop;
-                            // continue stateloop;
-                            default:
-                                if (metaState == A && (contentIndex == 6 || charsetIndex == 6)) {
-                                    addToBuffer(c);
-                                }
-                                continue;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case AFTER_ATTRIBUTE_VALUE_QUOTED:
-                    afterattributevaluequotedloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-                            case '\u000C':
-                                state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
-                                continue stateloop;
-                            case '/':
-                                state = MetaScanner.SELF_CLOSING_START_TAG;
-                                break afterattributevaluequotedloop;
-                            // continue stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
-                                reconsume = true;
-                                continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case SELF_CLOSING_START_TAG:
-                    c = read();
-                    switch (c) {
-                        case -1:
-                            break stateloop;
-                        case '>':
-                            state = MetaScanner.DATA;
-                            continue stateloop;
-                        default:
-                            state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
-                            reconsume = true;
-                            continue stateloop;
-                    }
-                    // XXX reorder point
-                case ATTRIBUTE_VALUE_UNQUOTED:
-                    for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            c = read();
-                        }
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-
-                            case '\u000C':
-                                if (tryCharset()) {
-                                    break stateloop;
-                                }
-                                state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
-                                continue stateloop;
-                            case '>':
-                                if (tryCharset()) {
-                                    break stateloop;
-                                }
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                if (metaState == A && (contentIndex == 6 || charsetIndex == 6)) {
-                                    addToBuffer(c);
-                                }
-                                continue;
-                        }
-                    }
-                    // XXX reorder point
-                case AFTER_ATTRIBUTE_NAME:
-                    for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case ' ':
-                            case '\t':
-                            case '\n':
-                            case '\u000C':
-                                continue;
-                            case '/':
-                                if (tryCharset()) {
-                                    break stateloop;
-                                }
-                                state = MetaScanner.SELF_CLOSING_START_TAG;
-                                continue stateloop;
-                            case '=':
-                                state = MetaScanner.BEFORE_ATTRIBUTE_VALUE;
-                                continue stateloop;
-                            case '>':
-                                if (tryCharset()) {
-                                    break stateloop;
-                                }
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            case 'c':
-                            case 'C':
-                                contentIndex = 0;
-                                charsetIndex = 0;
-                                state = MetaScanner.ATTRIBUTE_NAME;
-                                continue stateloop;
-                            default:
-                                contentIndex = -1;
-                                charsetIndex = -1;
-                                state = MetaScanner.ATTRIBUTE_NAME;
-                                continue stateloop;
-                        }
-                    }
-                    // XXX reorder point
-                case MARKUP_DECLARATION_OPEN:
-                    markupdeclarationopenloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '-':
-                                state = MetaScanner.MARKUP_DECLARATION_HYPHEN;
-                                break markupdeclarationopenloop;
-                            // continue stateloop;
-                            default:
-                                state = MetaScanner.SCAN_UNTIL_GT;
-                                reconsume = true;
-                                continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case MARKUP_DECLARATION_HYPHEN:
-                    markupdeclarationhyphenloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '-':
-                                state = MetaScanner.COMMENT_START;
-                                break markupdeclarationhyphenloop;
-                            // continue stateloop;
-                            default:
-                                state = MetaScanner.SCAN_UNTIL_GT;
-                                reconsume = true;
-                                continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case COMMENT_START:
-                    commentstartloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '-':
-                                state = MetaScanner.COMMENT_START_DASH;
-                                continue stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                state = MetaScanner.COMMENT;
-                                break commentstartloop;
-                            // continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case COMMENT:
-                    commentloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '-':
-                                state = MetaScanner.COMMENT_END_DASH;
-                                break commentloop;
-                            // continue stateloop;
-                            default:
-                                continue;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case COMMENT_END_DASH:
-                    commentenddashloop: for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '-':
-                                state = MetaScanner.COMMENT_END;
-                                break commentenddashloop;
-                            // continue stateloop;
-                            default:
-                                state = MetaScanner.COMMENT;
-                                continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case COMMENT_END:
-                    for (;;) {
-                        c = read();
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            case '-':
-                                continue;
-                            default:
-                                state = MetaScanner.COMMENT;
-                                continue stateloop;
-                        }
-                    }
-                    // XXX reorder point
-                case COMMENT_START_DASH:
-                    c = read();
-                    switch (c) {
-                        case -1:
-                            break stateloop;
-                        case '-':
-                            state = MetaScanner.COMMENT_END;
-                            continue stateloop;
-                        case '>':
-                            state = MetaScanner.DATA;
-                            continue stateloop;
-                        default:
-                            state = MetaScanner.COMMENT;
-                            continue stateloop;
-                    }
-                    // XXX reorder point
-                case ATTRIBUTE_VALUE_SINGLE_QUOTED:
-                    for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            c = read();
-                        }
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '\'':
-                                if (tryCharset()) {
-                                    break stateloop;
-                                }
-                                state = MetaScanner.AFTER_ATTRIBUTE_VALUE_QUOTED;
-                                continue stateloop;
-                            default:
-                                if (metaState == A && (contentIndex == 6 || charsetIndex == 6)) {
-                                    addToBuffer(c);
-                                }
-                                continue;
-                        }
-                    }
-                    // XXX reorder point
-                case SCAN_UNTIL_GT:
-                    for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            c = read();
-                        }
-                        switch (c) {
-                            case -1:
-                                break stateloop;
-                            case '>':
-                                state = MetaScanner.DATA;
-                                continue stateloop;
-                            default:
-                                continue;
-                        }
-                    }
-            }
-        }
-        stateSave  = state;
-    }
-
-    private void addToBuffer(int c) {
-        if (strBufLen == strBuf.length) {
-            char[] newBuf = new char[strBuf.length + (strBuf.length << 1)];
-            System.arraycopy(strBuf, 0, newBuf, 0, strBuf.length);
-            Portability.releaseArray(strBuf);
-            strBuf = newBuf;
-        }
-        strBuf[strBufLen++] = (char)c;
-    }
-
-    private boolean tryCharset() throws SAXException {
-        if (metaState != A || !(contentIndex == 6 || charsetIndex == 6)) {
-            return false;
-        }
-        String attVal = Portability.newStringFromBuffer(strBuf, 0, strBufLen);
-        String candidateEncoding;
-        if (contentIndex == 6) {
-            candidateEncoding = TreeBuilder.extractCharsetFromContent(attVal);
-            Portability.releaseString(attVal);
-        } else {
-            candidateEncoding = attVal;
-        }
-        if (candidateEncoding == null) {
-            return false;
-        }
-        boolean rv = tryCharset(candidateEncoding);
-        Portability.releaseString(candidateEncoding);
-        contentIndex = -1;
-        charsetIndex = -1;
-        return rv;
-    }
-    
-    protected abstract boolean tryCharset(String encoding) throws SAXException;
-
-    
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/Portability.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-import nu.validator.htmlparser.annotation.Literal;
-import nu.validator.htmlparser.annotation.Local;
-import nu.validator.htmlparser.annotation.NoLength;
-
-public final class Portability {
-
-    // Allocating methods
-
-    /**
-     * Allocates a new local name object. In C++, the refcount must be set up in such a way that 
-     * calling <code>releaseLocal</code> on the return value balances the refcount set by this method.
-     */
-    public static @Local String newLocalNameFromBuffer(@NoLength char[] buf, int offset, int length) {
-        return new String(buf, offset, length).intern();
-    }
-
-    public static String newStringFromBuffer(@NoLength char[] buf, int offset, int length) {
-        return new String(buf, offset, length);
-    }
-
-    public static String newEmptyString() {
-        return "";
-    }
-
-    public static String newStringFromLiteral(@Literal String literal) {
-        return literal;
-    }
-    
-    // XXX get rid of this
-    public static char[] newCharArrayFromLocal(@Local String local) {
-        return local.toCharArray();
-    }
-
-    public static char[] newCharArrayFromString(String string) {
-        return string.toCharArray();
-    }
-    
-    // Deallocation methods
-    
-    public static void releaseString(String str) {
-        // No-op in Java
-    }
-    
-    public static void retainLocal(@Local String local) {
-        // No-op in Java
-    }
-
-    /**
-     * This MUST be a no-op on locals that are known at compile time.
-     * @param local
-     */
-    public static void releaseLocal(@Local String local) {
-        // No-op in Java
-    }
-    
-    /**
-     * Releases a Java array. This method is magically replaced by a macro in C++.
-     * @param arr
-     */
-    public static void releaseArray(Object arr) {
-        // No-op in Java
-    }    
-    
-    public static void retainElement(Object elt) {
-        // No-op in Java
-    }
-
-    public static void releaseElement(Object elt) {
-        // No-op in Java
-    }
-    
-    // Comparison methods
-    
-    public static boolean localEqualsBuffer(@Local String local, @NoLength char[] buf, int offset, int length) {
-        if (local.length() != length) {
-            return false;
-        }
-        for (int i = 0; i < length; i++) {
-            if (local.charAt(i) != buf[offset + i]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public static boolean lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(@Literal String lowerCaseLiteral,
-            String string) {
-        if (string == null) {
-            return false;
-        }
-        if (lowerCaseLiteral.length() > string.length()) {
-            return false;
-        }
-        for (int i = 0; i < lowerCaseLiteral.length(); i++) {
-            char c0 = lowerCaseLiteral.charAt(i);
-            char c1 = string.charAt(i);
-            if (c1 >= 'A' && c1 <= 'Z') {
-                c1 += 0x20;
-            }
-            if (c0 != c1) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    public static boolean lowerCaseLiteralEqualsIgnoreAsciiCaseString(@Literal String lowerCaseLiteral,
-            String string) {
-        if (string == null) {
-            return false;
-        }
-        if (lowerCaseLiteral.length() != string.length()) {
-            return false;
-        }
-        for (int i = 0; i < lowerCaseLiteral.length(); i++) {
-            char c0 = lowerCaseLiteral.charAt(i);
-            char c1 = string.charAt(i);
-            if (c1 >= 'A' && c1 <= 'Z') {
-                c1 += 0x20;
-            }
-            if (c0 != c1) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    public static boolean literalEqualsString(@Literal String literal, String string) {
-        return literal.equals(string);
-    }
-
-    public static char[] isIndexPrompt() {
-        return "This is a searchable index. Insert your search keywords here: ".toCharArray();
-    }
-
-    public static void delete(Object o) {
-        
-    }
-
-    public static void deleteArray(Object o) {
-        
-    }
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/README.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-The *.java files in this directory are the source files from which the 
-corresponding nsHtml5*.cpp and nsHtml5*.h files were generated in
-../src/.
-
-You can obtain the full Java version of the parser and the translator
-program from
-svn co http://svn.versiondude.net/whattf/htmlparser/trunk/ htmlparser
-
-See run-cpp-translate.sh at the top level of the SVN checkout.
deleted file mode 100644
--- a/content/html/parser/javasrc/StackNode.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2007 Henri Sivonen
- * Copyright (c) 2007-2009 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-import nu.validator.htmlparser.annotation.Local;
-import nu.validator.htmlparser.annotation.NsUri;
-
-final class StackNode<T> {
-    final int group;
-
-    final @Local String name;
-
-    final @Local String popName;
-
-    final @NsUri String ns;
-
-    final T node;
-
-    final boolean scoping;
-
-    final boolean special;
-
-    final boolean fosterParenting;
-    
-    private int refcount = 1;
-
-    /**
-     * @param group
-     *            TODO
-     * @param name
-     * @param node
-     * @param scoping
-     * @param special
-     * @param popName
-     *            TODO
-     */
-    StackNode(int group, final @NsUri String ns, final @Local String name, final T node,
-            final boolean scoping, final boolean special,
-            final boolean fosterParenting, final @Local String popName) {
-        this.group = group;
-        this.name = name;
-        this.popName = popName;
-        this.ns = ns;
-        this.node = node;
-        this.scoping = scoping;
-        this.special = special;
-        this.fosterParenting = fosterParenting;
-        this.refcount = 1;
-        Portability.retainLocal(name);
-        Portability.retainLocal(popName);
-        Portability.retainElement(node);
-        // not retaining namespace for now        
-    }
-
-    /**
-     * @param elementName
-     *            TODO
-     * @param node
-     */
-    StackNode(final @NsUri String ns, ElementName elementName, final T node) {
-        this.group = elementName.group;
-        this.name = elementName.name;
-        this.popName = elementName.name;
-        this.ns = ns;
-        this.node = node;
-        this.scoping = elementName.scoping;
-        this.special = elementName.special;
-        this.fosterParenting = elementName.fosterParenting;
-        this.refcount = 1;
-        Portability.retainLocal(name);
-        Portability.retainLocal(popName);
-        Portability.retainElement(node);
-        // not retaining namespace for now        
-    }
-
-    StackNode(final @NsUri String ns, ElementName elementName, final T node, @Local String popName) {
-        this.group = elementName.group;
-        this.name = elementName.name;
-        this.popName = popName;
-        this.ns = ns;
-        this.node = node;
-        this.scoping = elementName.scoping;
-        this.special = elementName.special;
-        this.fosterParenting = elementName.fosterParenting;
-        this.refcount = 1;
-        Portability.retainLocal(name);
-        Portability.retainLocal(popName);
-        Portability.retainElement(node);
-        // not retaining namespace for now        
-    }
-
-    StackNode(final @NsUri String ns, ElementName elementName, final T node, @Local String popName, boolean scoping) {
-        this.group = elementName.group;
-        this.name = elementName.name;
-        this.popName = popName;
-        this.ns = ns;
-        this.node = node;
-        this.scoping = scoping;
-        this.special = false;
-        this.fosterParenting = false;
-        this.refcount = 1;
-        Portability.retainLocal(name);
-        Portability.retainLocal(popName);
-        Portability.retainElement(node);
-        // not retaining namespace for now        
-    }
-    
-    @SuppressWarnings("unused") private void destructor() {
-        Portability.releaseLocal(name);
-        Portability.releaseLocal(popName);
-        Portability.releaseElement(node);
-        // not releasing namespace for now        
-    }
-    
-    // [NOCPP[
-    /**
-     * @see java.lang.Object#toString()
-     */
-    @Override public @Local String toString() {
-        return name;
-    }
-    // ]NOCPP]
-    
-    public void retain() {   
-        refcount++;
-    }
-    
-    public void release() {
-        refcount--;
-        if (refcount == 0) {
-            Portability.delete(this);
-        }
-    }
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/StateSnapshot.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2009 Mozilla Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-package nu.validator.htmlparser.impl;
-
-
-public class StateSnapshot<T> {
-
-    /**
-     * @param stack
-     * @param listOfActiveFormattingElements
-     * @param formPointer
-     */
-    StateSnapshot(StackNode<T>[] stack,
-            StackNode<T>[] listOfActiveFormattingElements, T formPointer) {
-        this.stack = stack;
-        this.listOfActiveFormattingElements = listOfActiveFormattingElements;
-        this.formPointer = formPointer;
-    }
-
-    final StackNode<T>[] stack;
-
-    final StackNode<T>[] listOfActiveFormattingElements;
-
-    final T formPointer;
-    
-    @SuppressWarnings("unused") private void destructor() {
-        for (int i = 0; i < stack.length; i++) {
-            stack[i].release();
-        }
-        Portability.releaseArray(stack);
-        for (int i = 0; i < listOfActiveFormattingElements.length; i++) {
-            if (listOfActiveFormattingElements[i] != null) {
-                listOfActiveFormattingElements[i].release();                
-            }
-        }
-        Portability.releaseArray(listOfActiveFormattingElements);
-        Portability.retainElement(formPointer);
-    }
-}
deleted file mode 100644
--- a/content/html/parser/javasrc/Tokenizer.java
+++ /dev/null
@@ -1,5709 +0,0 @@
-/*
- * Copyright (c) 2005-2007 Henri Sivonen
- * Copyright (c) 2007-2009 Mozilla Foundation
- * Portions of comments Copyright 2004-2008 Apple Computer, Inc., Mozilla 
- * Foundation, and Opera Software ASA.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The comments following this one that use the same comment syntax as this 
- * comment are quotes from the WHATWG HTML 5 spec as of 2 June 2007 
- * amended as of June 18 2008.
- * That document came with this statement:
- * "© Copyright 2004-2008 Apple Computer, Inc., Mozilla Foundation, and 
- * Opera Software ASA. You are granted a license to use, reproduce and 
- * create derivative works of this document."
- */
-
-package nu.validator.htmlparser.impl;
-
-import nu.validator.htmlparser.annotation.Inline;
-import nu.validator.htmlparser.annotation.Local;
-import nu.validator.htmlparser.annotation.NoLength;
-import nu.validator.htmlparser.common.EncodingDeclarationHandler;
-import nu.validator.htmlparser.common.TokenHandler;
-import nu.validator.htmlparser.common.XmlViolationPolicy;
-
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * An implementation of
- * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html
- * 
- * This class implements the <code>Locator</code> interface. This is not an
- * incidental implementation detail: Users of this class are encouraged to make
- * use of the <code>Locator</code> nature.
- * 
- * By default, the tokenizer may report data that XML 1.0 bans. The tokenizer
- * can be configured to treat these conditions as fatal or to coerce the infoset
- * to something that XML 1.0 allows.
- * 
- * @version $Id: Tokenizer.java 555 2009-06-25 07:17:28Z hsivonen $
- * @author hsivonen
- */
-public class Tokenizer implements Locator {
-
-    public static final int DATA = 0;
-
-    public static final int RCDATA = 1;
-
-    public static final int CDATA = 2;
-
-    public static final int PLAINTEXT = 3;
-
-    private static final int TAG_OPEN = 49;
-
-    private static final int CLOSE_TAG_OPEN_PCDATA = 50;
-
-    private static final int TAG_NAME = 58;
-
-    private static final int BEFORE_ATTRIBUTE_NAME = 4;
-
-    private static final int ATTRIBUTE_NAME = 5;
-
-    private static final int AFTER_ATTRIBUTE_NAME = 6;
-
-    private static final int BEFORE_ATTRIBUTE_VALUE = 7;
-
-    private static final int ATTRIBUTE_VALUE_DOUBLE_QUOTED = 8;
-
-    private static final int ATTRIBUTE_VALUE_SINGLE_QUOTED = 9;
-
-    private static final int ATTRIBUTE_VALUE_UNQUOTED = 10;
-
-    private static final int AFTER_ATTRIBUTE_VALUE_QUOTED = 11;
-
-    private static final int BOGUS_COMMENT = 12;
-
-    private static final int MARKUP_DECLARATION_OPEN = 13;
-
-    private static final int DOCTYPE = 14;
-
-    private static final int BEFORE_DOCTYPE_NAME = 15;
-
-    private static final int DOCTYPE_NAME = 16;
-
-    private static final int AFTER_DOCTYPE_NAME = 17;
-
-    private static final int BEFORE_DOCTYPE_PUBLIC_IDENTIFIER = 18;
-
-    private static final int DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED = 19;
-
-    private static final int DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED = 20;
-
-    private static final int AFTER_DOCTYPE_PUBLIC_IDENTIFIER = 21;
-
-    private static final int BEFORE_DOCTYPE_SYSTEM_IDENTIFIER = 22;
-
-    private static final int DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED = 23;
-
-    private static final int DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED = 24;
-
-    private static final int AFTER_DOCTYPE_SYSTEM_IDENTIFIER = 25;
-
-    private static final int BOGUS_DOCTYPE = 26;
-
-    private static final int COMMENT_START = 27;
-
-    private static final int COMMENT_START_DASH = 28;
-
-    private static final int COMMENT = 29;
-
-    private static final int COMMENT_END_DASH = 30;
-
-    private static final int COMMENT_END = 31;
-
-    private static final int CLOSE_TAG_OPEN_NOT_PCDATA = 32;
-
-    private static final int MARKUP_DECLARATION_HYPHEN = 33;
-
-    private static final int MARKUP_DECLARATION_OCTYPE = 34;
-
-    private static final int DOCTYPE_UBLIC = 35;
-
-    private static final int DOCTYPE_YSTEM = 36;
-
-    private static final int CONSUME_CHARACTER_REFERENCE = 37;
-
-    private static final int CONSUME_NCR = 38;
-
-    private static final int CHARACTER_REFERENCE_LOOP = 39;
-
-    private static final int HEX_NCR_LOOP = 41;
-
-    private static final int DECIMAL_NRC_LOOP = 42;
-
-    private static final int HANDLE_NCR_VALUE = 43;
-
-    private static final int SELF_CLOSING_START_TAG = 44;
-
-    private static final int CDATA_START = 45;
-
-    private static final int CDATA_SECTION = 46;
-
-    private static final int CDATA_RSQB = 47;
-
-    private static final int CDATA_RSQB_RSQB = 48;
-
-    private static final int TAG_OPEN_NON_PCDATA = 51;
-
-    private static final int ESCAPE_EXCLAMATION = 52;
-
-    private static final int ESCAPE_EXCLAMATION_HYPHEN = 53;
-
-    private static final int ESCAPE = 54;
-
-    private static final int ESCAPE_HYPHEN = 55;
-
-    private static final int ESCAPE_HYPHEN_HYPHEN = 56;
-
-    private static final int BOGUS_COMMENT_HYPHEN = 57;
-
-    /**
-     * Magic value for UTF-16 operations.
-     */
-    private static final int LEAD_OFFSET = (0xD800 - (0x10000 >> 10));
-
-    /**
-     * UTF-16 code unit array containing less than and greater than for emitting
-     * those characters on certain parse errors.
-     */
-    private static final @NoLength char[] LT_GT = { '<', '>' };
-
-    /**
-     * UTF-16 code unit array containing less than and solidus for emitting
-     * those characters on certain parse errors.
-     */
-    private static final @NoLength char[] LT_SOLIDUS = { '<', '/' };
-
-    /**
-     * UTF-16 code unit array containing ]] for emitting those characters on
-     * state transitions.
-     */
-    private static final @NoLength char[] RSQB_RSQB = { ']', ']' };
-
-    /**
-     * Array version of U+FFFD.
-     */
-    private static final @NoLength char[] REPLACEMENT_CHARACTER = { '\uFFFD' };
-
-    // [NOCPP[
-
-    /**
-     * Array version of space.
-     */
-    private static final @NoLength char[] SPACE = { ' ' };
-
-    // ]NOCPP]
-
-    /**
-     * Array version of line feed.
-     */
-    private static final @NoLength char[] LF = { '\n' };
-
-    /**
-     * Buffer growth parameter.
-     */
-    private static final int BUFFER_GROW_BY = 1024;
-
-    /**
-     * "CDATA[" as <code>char[]</code>
-     */
-    private static final @NoLength char[] CDATA_LSQB = "CDATA[".toCharArray();
-
-    /**
-     * "octype" as <code>char[]</code>
-     */
-    private static final @NoLength char[] OCTYPE = "octype".toCharArray();
-
-    /**
-     * "ublic" as <code>char[]</code>
-     */
-    private static final @NoLength char[] UBLIC = "ublic".toCharArray();
-
-    /**
-     * "ystem" as <code>char[]</code>
-     */
-    private static final @NoLength char[] YSTEM = "ystem".toCharArray();
-
-    private static final char[] TITLE_ARR = { 't', 'i', 't', 'l', 'e' };
-
-    private static final char[] SCRIPT_ARR = { 's', 'c', 'r', 'i', 'p', 't' };
-
-    private static final char[] STYLE_ARR = { 's', 't', 'y', 'l', 'e' };
-
-    private static final char[] PLAINTEXT_ARR = { 'p', 'l', 'a', 'i', 'n', 't',
-            'e', 'x', 't' };
-
-    private static final char[] XMP_ARR = { 'x', 'm', 'p' };
-
-    private static final char[] TEXTAREA_ARR = { 't', 'e', 'x', 't', 'a', 'r',
-            'e', 'a' };
-
-    private static final char[] IFRAME_ARR = { 'i', 'f', 'r', 'a', 'm', 'e' };
-
-    private static final char[] NOEMBED_ARR = { 'n', 'o', 'e', 'm', 'b', 'e',
-            'd' };
-
-    private static final char[] NOSCRIPT_ARR = { 'n', 'o', 's', 'c', 'r', 'i',
-            'p', 't' };
-
-    private static final char[] NOFRAMES_ARR = { 'n', 'o', 'f', 'r', 'a', 'm',
-            'e', 's' };
-
-    /**
-     * The token handler.
-     */
-    protected final TokenHandler tokenHandler;
-
-    protected EncodingDeclarationHandler encodingDeclarationHandler;
-
-    // [NOCPP[
-
-    /**
-     * The error handler.
-     */
-    protected ErrorHandler errorHandler;
-
-    // ]NOCPP]
-
-    /**
-     * Whether the previous char read was CR.
-     */
-    protected boolean lastCR;
-
-    protected int stateSave;
-
-    private int returnStateSave;
-
-    protected int index;
-
-    private boolean forceQuirks;
-
-    private char additional;
-
-    private int entCol;
-
-    private int lo;
-
-    private int hi;
-
-    private int candidate;
-
-    private int strBufMark;
-
-    private int prevValue;
-
-    protected int value;
-
-    private boolean seenDigits;
-
-    protected int cstart;
-
-    /**
-     * The SAX public id for the resource being tokenized. (Only passed to back
-     * as part of locator data.)
-     */
-    private String publicId;
-
-    /**
-     * The SAX system id for the resource being tokenized. (Only passed to back
-     * as part of locator data.)
-     */
-    private String systemId;
-
-    /**
-     * Buffer for short identifiers.
-     */
-    private char[] strBuf;
-
-    /**
-     * Number of significant <code>char</code>s in <code>strBuf</code>.
-     */
-    private int strBufLen;
-
-    /**
-     * <code>-1</code> to indicate that <code>strBuf</code> is used or otherwise
-     * an offset to the main buffer.
-     */
-    // private int strBufOffset = -1;
-    /**
-     * Buffer for long strings.
-     */
-    private char[] longStrBuf;
-
-    /**
-     * Number of significant <code>char</code>s in <code>longStrBuf</code>.
-     */
-    private int longStrBufLen;
-
-    /**
-     * <code>-1</code> to indicate that <code>longStrBuf</code> is used or
-     * otherwise an offset to the main buffer.
-     */
-    // private int longStrBufOffset = -1;
-    /**
-     * The attribute holder.
-     */
-    private HtmlAttributes attributes;
-
-    /**
-     * Buffer for expanding NCRs falling into the Basic Multilingual Plane.
-     */
-    private final char[] bmpChar;
-
-    /**
-     * Buffer for expanding astral NCRs.
-     */
-    private final char[] astralChar;
-
-    /**
-     * The element whose end tag closes the current CDATA or RCDATA element.
-     */
-    protected ElementName contentModelElement = null;
-
-    private char[] contentModelElementNameAsArray;
-
-    /**
-     * <code>true</code> if tokenizing an end tag
-     */
-    protected boolean endTag;
-
-    /**
-     * The current tag token name.
-     */
-    private ElementName tagName = null;
-
-    /**
-     * The current attribute name.
-     */
-    protected AttributeName attributeName = null;
-
-    // [NOCPP[
-
-    /**
-     * Whether comment tokens are emitted.
-     */
-    private boolean wantsComments = false;
-
-    /**
-     * <code>true</code> when HTML4-specific additional errors are requested.
-     */
-    protected boolean html4;
-
-    /**
-     * Whether the stream is past the first 512 bytes.
-     */
-    private boolean metaBoundaryPassed;
-
-    // ]NOCPP]
-
-    /**
-     * The name of the current doctype token.
-     */
-    private @Local String doctypeName;
-
-    /**
-     * The public id of the current doctype token.
-     */
-    private String publicIdentifier;
-
-    /**
-     * The system id of the current doctype token.
-     */
-    private String systemIdentifier;
-
-    // [NOCPP[
-
-    /**
-     * The policy for vertical tab and form feed.
-     */
-    private XmlViolationPolicy contentSpacePolicy = XmlViolationPolicy.ALTER_INFOSET;
-
-    /**
-     * The policy for comments.
-     */
-    private XmlViolationPolicy commentPolicy = XmlViolationPolicy.ALTER_INFOSET;
-
-    private XmlViolationPolicy xmlnsPolicy = XmlViolationPolicy.ALTER_INFOSET;
-
-    private XmlViolationPolicy namePolicy = XmlViolationPolicy.ALTER_INFOSET;
-
-    private boolean html4ModeCompatibleWithXhtml1Schemata;
-
-    private final boolean newAttributesEachTime;
-
-    // ]NOCPP]
-
-    private int mappingLangToXmlLang;
-
-    private boolean shouldSuspend;
-
-    protected boolean confident;
-    
-    private int line;
-
-    // [NOCPP[
-
-    protected LocatorImpl ampersandLocation;
-
-    public Tokenizer(TokenHandler tokenHandler,
-            boolean newAttributesEachTime) {
-        this.tokenHandler = tokenHandler;
-        this.encodingDeclarationHandler = null;
-        this.newAttributesEachTime = newAttributesEachTime;
-        this.bmpChar = new char[1];
-        this.astralChar = new char[2];
-    }
-
-    // ]NOCPP]
-
-    /**
-     * The constructor.
-     * 
-     * @param tokenHandler
-     *            the handler for receiving tokens
-     */
-    public Tokenizer(TokenHandler tokenHandler) {
-        this.tokenHandler = tokenHandler;
-        this.encodingDeclarationHandler = null;
-        // [NOCPP[
-        this.newAttributesEachTime = false;
-        // ]NOCPP]
-        this.bmpChar = new char[1];
-        this.astralChar = new char[2];
-    }
-
-    public void initLocation(String newPublicId, String newSystemId) {
-        this.systemId = newSystemId;
-        this.publicId = newPublicId;
-
-    }
-
-    void destructor() {
-        Portability.releaseArray(bmpChar);
-        Portability.releaseArray(astralChar);
-    }
-
-    // [NOCPP[
-
-    /**
-     * Returns the mappingLangToXmlLang.
-     * 
-     * @return the mappingLangToXmlLang
-     */
-    public boolean isMappingLangToXmlLang() {
-        return mappingLangToXmlLang == AttributeName.HTML_LANG;
-    }
-
-    /**
-     * Sets the mappingLangToXmlLang.
-     * 
-     * @param mappingLangToXmlLang
-     *            the mappingLangToXmlLang to set
-     */
-    public void setMappingLangToXmlLang(boolean mappingLangToXmlLang) {
-        this.mappingLangToXmlLang = mappingLangToXmlLang ? AttributeName.HTML_LANG
-                : AttributeName.HTML;
-    }
-
-    /**
-     * Sets the error handler.
-     * 
-     * @see org.xml.sax.XMLReader#setErrorHandler(org.xml.sax.ErrorHandler)
-     */
-    public void setErrorHandler(ErrorHandler eh) {
-        this.errorHandler = eh;
-    }
-
-    public ErrorHandler getErrorHandler() {
-        return this.errorHandler;
-    }
-
-    /**
-     * Sets the commentPolicy.
-     * 
-     * @param commentPolicy
-     *            the commentPolicy to set
-     */
-    public void setCommentPolicy(XmlViolationPolicy commentPolicy) {
-        this.commentPolicy = commentPolicy;
-    }
-
-    /**
-     * Sets the contentNonXmlCharPolicy.
-     * 
-     * @param contentNonXmlCharPolicy
-     *            the contentNonXmlCharPolicy to set
-     */
-    public void setContentNonXmlCharPolicy(
-            XmlViolationPolicy contentNonXmlCharPolicy) {
-        if (contentNonXmlCharPolicy != XmlViolationPolicy.ALLOW) {
-            throw new IllegalArgumentException("Must use ErrorReportingTokenizer to set contentNonXmlCharPolicy to non-ALLOW.");
-        }
-    }
-
-    /**
-     * Sets the contentSpacePolicy.
-     * 
-     * @param contentSpacePolicy
-     *            the contentSpacePolicy to set
-     */
-    public void setContentSpacePolicy(XmlViolationPolicy contentSpacePolicy) {
-        this.contentSpacePolicy = contentSpacePolicy;
-    }
-
-    /**
-     * Sets the xmlnsPolicy.
-     * 
-     * @param xmlnsPolicy
-     *            the xmlnsPolicy to set
-     */
-    public void setXmlnsPolicy(XmlViolationPolicy xmlnsPolicy) {
-        if (xmlnsPolicy == XmlViolationPolicy.FATAL) {
-            throw new IllegalArgumentException("Can't use FATAL here.");
-        }
-        this.xmlnsPolicy = xmlnsPolicy;
-    }
-
-    public void setNamePolicy(XmlViolationPolicy namePolicy) {
-        this.namePolicy = namePolicy;
-    }
-
-    /**
-     * Sets the html4ModeCompatibleWithXhtml1Schemata.
-     * 
-     * @param html4ModeCompatibleWithXhtml1Schemata
-     *            the html4ModeCompatibleWithXhtml1Schemata to set
-     */
-    public void setHtml4ModeCompatibleWithXhtml1Schemata(
-            boolean html4ModeCompatibleWithXhtml1Schemata) {
-        this.html4ModeCompatibleWithXhtml1Schemata = html4ModeCompatibleWithXhtml1Schemata;
-    }
-
-    // ]NOCPP]
-
-    // For the token handler to call
-    /**
-     * Sets the content model flag and the associated element name.
-     * 
-     * @param contentModelFlag
-     *            the flag
-     * @param contentModelElement
-     *            the element causing the flag to be set
-     */
-    public void setContentModelFlag(int contentModelFlag,
-            @Local String contentModelElement) {
-        this.stateSave = contentModelFlag;
-        if (contentModelFlag == Tokenizer.DATA) {
-            return;
-        }
-        // XXX does this make any sense?
-        char[] asArray = Portability.newCharArrayFromLocal(contentModelElement);
-        this.contentModelElement = ElementName.elementNameByBuffer(asArray, 0,
-                asArray.length);
-        Portability.releaseArray(asArray);
-        contentModelElementToArray();
-    }
-
-    /**
-     * Sets the content model flag and the associated element name.
-     * 
-     * @param contentModelFlag
-     *            the flag
-     * @param contentModelElement
-     *            the element causing the flag to be set
-     */
-    public void setContentModelFlag(int contentModelFlag,
-            ElementName contentModelElement) {
-        this.stateSave = contentModelFlag;
-        this.contentModelElement = contentModelElement;
-        contentModelElementToArray();
-    }
-
-    private void contentModelElementToArray() {
-        switch (contentModelElement.group) {
-            case TreeBuilder.TITLE:
-                contentModelElementNameAsArray = TITLE_ARR;
-                return;
-            case TreeBuilder.SCRIPT:
-                contentModelElementNameAsArray = SCRIPT_ARR;
-                return;
-            case TreeBuilder.STYLE:
-                contentModelElementNameAsArray = STYLE_ARR;
-                return;
-            case TreeBuilder.PLAINTEXT:
-                contentModelElementNameAsArray = PLAINTEXT_ARR;
-                return;
-            case TreeBuilder.XMP:
-                contentModelElementNameAsArray = XMP_ARR;
-                return;
-            case TreeBuilder.TEXTAREA:
-                contentModelElementNameAsArray = TEXTAREA_ARR;
-                return;
-            case TreeBuilder.IFRAME:
-                contentModelElementNameAsArray = IFRAME_ARR;
-                return;
-            case TreeBuilder.NOEMBED:
-                contentModelElementNameAsArray = NOEMBED_ARR;
-                return;
-            case TreeBuilder.NOSCRIPT:
-                contentModelElementNameAsArray = NOSCRIPT_ARR;
-                return;
-            case TreeBuilder.NOFRAMES:
-                contentModelElementNameAsArray = NOFRAMES_ARR;
-                return;
-            default:
-                assert false;
-                return;
-        }
-    }
-
-    /**
-     * For C++ use only.
-     */
-    public void setLineNumber(int line) {
-        this.line = line;
-    }
-    
-    // start Locator impl
-
-    /**
-     * @see org.xml.sax.Locator#getLineNumber()
-     */
-    @Inline public int getLineNumber() {
-        return line;
-    }
-
-    // [NOCPP[
-
-    /**
-     * @see org.xml.sax.Locator#getColumnNumber()
-     */
-    @Inline public int getColumnNumber() {
-        return -1;
-    }
-
-    /**
-     * @see org.xml.sax.Locator#getPublicId()
-     */
-    public String getPublicId() {
-        return publicId;
-    }
-
-    /**
-     * @see org.xml.sax.Locator#getSystemId()
-     */
-    public String getSystemId() {
-        return systemId;
-    }
-
-    // end Locator impl
-
-    // end public API
-
-
-    public void notifyAboutMetaBoundary() {
-        metaBoundaryPassed = true;
-    }
-
-    void turnOnAdditionalHtml4Errors() {
-        html4 = true;
-    }
-
-    // ]NOCPP]
-
-    HtmlAttributes emptyAttributes() {
-        // [NOCPP[
-        if (newAttributesEachTime) {
-            return new HtmlAttributes(mappingLangToXmlLang);
-        } else {
-            // ]NOCPP]
-            return HtmlAttributes.EMPTY_ATTRIBUTES;
-            // [NOCPP[
-        }
-        // ]NOCPP]
-    }
-
-    private void clearStrBufAndAppendCurrentC(char c) {
-        strBuf[0] = c;
-
-        strBufLen = 1;
-        // strBufOffset = pos;
-    }
-
-    private void clearStrBufAndAppendForceWrite(char c) {
-        strBuf[0] = c; // test
-
-        strBufLen = 1;
-        // strBufOffset = pos;
-        // buf[pos] = c;
-    }
-
-    private void clearStrBufForNextState() {
-        strBufLen = 0;
-        // strBufOffset = pos + 1;
-    }
-
-    /**
-     * Appends to the smaller buffer.
-     * 
-     * @param c
-     *            the UTF-16 code unit to append
-     */
-    private void appendStrBuf(char c) {
-        // if (strBufOffset != -1) {
-        // strBufLen++;
-        // } else {
-        if (strBufLen == strBuf.length) {
-            char[] newBuf = new char[strBuf.length + Tokenizer.BUFFER_GROW_BY];
-            System.arraycopy(strBuf, 0, newBuf, 0, strBuf.length);
-            Portability.releaseArray(strBuf);
-            strBuf = newBuf;
-        }
-        strBuf[strBufLen++] = c;
-        // }
-    }
-
-    /**
-     * Appends to the smaller buffer.
-     * 
-     * @param c
-     *            the UTF-16 code unit to append
-     */
-    private void appendStrBufForceWrite(char c) {
-        // if (strBufOffset != -1) {
-        // strBufLen++;
-        // buf[pos] = c;
-        // } else {
-        if (strBufLen == strBuf.length) {
-            char[] newBuf = new char[strBuf.length + Tokenizer.BUFFER_GROW_BY];
-            System.arraycopy(strBuf, 0, newBuf, 0, strBuf.length);
-            Portability.releaseArray(strBuf);
-            strBuf = newBuf;
-        }
-        strBuf[strBufLen++] = c;
-        // }
-    }
-
-    /**
-     * The smaller buffer as a String. Currently only used for error reporting.
-     * 
-     * <p>
-     * C++ memory note: The return value must be released.
-     * 
-     * @return the smaller buffer as a string
-     */
-    protected String strBufToString() {
-        // if (strBufOffset != -1) {
-        // return Portability.newStringFromBuffer(buf, strBufOffset, strBufLen);
-        // } else {
-        return Portability.newStringFromBuffer(strBuf, 0, strBufLen);
-        // }
-    }
-
-    /**
-     * Returns the short buffer as a local name. The return value is released in
-     * emitDoctypeToken().
-     * 
-     * @return the smaller buffer as local name
-     */
-    private void strBufToDoctypeName() {
-        doctypeName = Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen);
-    }
-
-    /**
-     * Emits the smaller buffer as character tokens.
-     * 
-     * @throws SAXException
-     *             if the token handler threw
-     */
-    private void emitStrBuf() throws SAXException {
-        if (strBufLen > 0) {
-            // if (strBufOffset != -1) {
-            // tokenHandler.characters(buf, strBufOffset, strBufLen);
-            // } else {
-            tokenHandler.characters(strBuf, 0, strBufLen);
-            // }
-        }
-    }
-
-    private void clearLongStrBufForNextState() {
-        // longStrBufOffset = pos + 1;
-        longStrBufLen = 0;
-    }
-
-    private void clearLongStrBuf() {
-        // longStrBufOffset = pos;
-        longStrBufLen = 0;
-    }
-
-    private void clearLongStrBufAndAppendCurrentC(char c) {
-        longStrBuf[0] = c;
-        longStrBufLen = 1;
-        // longStrBufOffset = pos;
-    }
-
-    private void clearLongStrBufAndAppendToComment(char c) {
-        longStrBuf[0] = c;
-        // longStrBufOffset = pos;
-        longStrBufLen = 1;
-    }
-
-    /**
-     * Appends to the larger buffer.
-     * 
-     * @param c
-     *            the UTF-16 code unit to append
-     */
-    private void appendLongStrBuf(char c) {
-        // if (longStrBufOffset != -1) {
-        // longStrBufLen++;
-        // } else {
-        if (longStrBufLen == longStrBuf.length) {
-            char[] newBuf = new char[longStrBufLen + (longStrBufLen >> 1)];
-            System.arraycopy(longStrBuf, 0, newBuf, 0, longStrBuf.length);
-            Portability.releaseArray(longStrBuf);
-            longStrBuf = newBuf;
-        }
-        longStrBuf[longStrBufLen++] = c;
-        // }
-    }
-
-    private void appendSecondHyphenToBogusComment() throws SAXException {
-        // [NOCPP[
-        switch (commentPolicy) {
-            case ALTER_INFOSET:
-                // detachLongStrBuf();
-                appendLongStrBuf(' ');
-                // FALLTHROUGH
-            case ALLOW:
-                warn("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
-                // ]NOCPP]
-                appendLongStrBuf('-');
-                // [NOCPP[
-                break;
-            case FATAL:
-                fatal("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
-                break;
-        }
-        // ]NOCPP]
-    }
-
-    // [NOCPP[
-    private void maybeAppendSpaceToBogusComment() throws SAXException {
-        switch (commentPolicy) {
-            case ALTER_INFOSET:
-                // detachLongStrBuf();
-                appendLongStrBuf(' ');
-                // FALLTHROUGH
-            case ALLOW:
-                warn("The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.");
-                break;
-            case FATAL:
-                fatal("The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.");
-                break;
-        }
-    }
-
-    // ]NOCPP]
-
-    private void adjustDoubleHyphenAndAppendToLongStrBuf(char c)
-            throws SAXException {
-        errConsecutiveHyphens();
-        // [NOCPP[
-        switch (commentPolicy) {
-            case ALTER_INFOSET:
-                // detachLongStrBuf();
-                longStrBufLen--;
-                appendLongStrBuf(' ');
-                appendLongStrBuf('-');
-                // FALLTHROUGH
-            case ALLOW:
-                warn("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
-                // ]NOCPP]
-                appendLongStrBuf(c);
-                // [NOCPP[
-                break;
-            case FATAL:
-                fatal("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
-                break;
-        }
-        // ]NOCPP]
-    }
-
-    private void appendLongStrBuf(char[] buffer, int offset, int length) {
-        int reqLen = longStrBufLen + length;
-        if (longStrBuf.length < reqLen) {
-            char[] newBuf = new char[reqLen + (reqLen >> 1)];
-            System.arraycopy(longStrBuf, 0, newBuf, 0, longStrBuf.length);
-            Portability.releaseArray(longStrBuf);
-            longStrBuf = newBuf;
-        }
-        System.arraycopy(buffer, offset, longStrBuf, longStrBufLen, length);
-        longStrBufLen = reqLen;
-    }
-
-    /**
-     * Appends to the larger buffer.
-     * 
-     * @param arr
-     *            the UTF-16 code units to append
-     */
-    private void appendLongStrBuf(char[] arr) {
-        // assert longStrBufOffset == -1;
-        appendLongStrBuf(arr, 0, arr.length);
-    }
-
-    /**
-     * Append the contents of the smaller buffer to the larger one.
-     */
-    private void appendStrBufToLongStrBuf() {
-        // assert longStrBufOffset == -1;
-        // if (strBufOffset != -1) {
-        // appendLongStrBuf(buf, strBufOffset, strBufLen);
-        // } else {
-        appendLongStrBuf(strBuf, 0, strBufLen);
-        // }
-    }
-
-    /**
-     * The larger buffer as a string.
-     * 
-     * <p>
-     * C++ memory note: The return value must be released.
-     * 
-     * @return the larger buffer as a string
-     */
-    private String longStrBufToString() {
-        // if (longStrBufOffset != -1) {
-        // return Portability.newStringFromBuffer(buf, longStrBufOffset,
-        // longStrBufLen);
-        // } else {
-        return Portability.newStringFromBuffer(longStrBuf, 0, longStrBufLen);
-        // }
-    }
-
-    /**
-     * Emits the current comment token.
-     * @param pos TODO
-     * 
-     * @throws SAXException
-     */
-    private void emitComment(int provisionalHyphens, int pos) throws SAXException {
-        // [NOCPP[
-        if (wantsComments) {
-            // ]NOCPP]
-            // if (longStrBufOffset != -1) {
-            // tokenHandler.comment(buf, longStrBufOffset, longStrBufLen
-            // - provisionalHyphens);
-            // } else {
-            tokenHandler.comment(longStrBuf, 0, longStrBufLen
-                    - provisionalHyphens);
-            // }
-            // [NOCPP[
-        }
-        // ]NOCPP]
-        cstart = pos + 1;
-    }
-
-    /**
-     * Flushes coalesced character tokens.
-     * @param buf TODO
-     * @param pos TODO
-     * 
-     * @throws SAXException
-     */
-    protected void flushChars(@NoLength char[] buf, int pos) throws SAXException {
-        if (pos > cstart) {
-            tokenHandler.characters(buf, cstart, pos - cstart);
-        }
-        cstart = 0x7fffffff;
-    }
-
-    /**
-     * Reports an condition that would make the infoset incompatible with XML
-     * 1.0 as fatal.
-     * 
-     * @param message
-     *            the message
-     * @throws SAXException
-     * @throws SAXParseException
-     */
-    public void fatal(String message) throws SAXException {
-        SAXParseException spe = new SAXParseException(message, this);
-        if (errorHandler != null) {
-            errorHandler.fatalError(spe);
-        }
-        throw spe;
-    }
-
-    /**
-     * Reports a Parse Error.
-     * 
-     * @param message
-     *            the message
-     * @throws SAXException
-     */
-    public void err(String message) throws SAXException {
-        if (errorHandler == null) {
-            return;
-        }
-        SAXParseException spe = new SAXParseException(message, this);
-        errorHandler.error(spe);
-    }
-
-    public void errTreeBuilder(String message) throws SAXException {
-        ErrorHandler eh = null;
-        if (tokenHandler instanceof TreeBuilder<?>) {
-            TreeBuilder<?> treeBuilder = (TreeBuilder<?>) tokenHandler;
-            eh = treeBuilder.getErrorHandler();
-        }
-        if (eh == null) {
-            eh = errorHandler;
-        }
-        if (eh == null) {
-            return;
-        }
-        SAXParseException spe = new SAXParseException(message, this);
-        eh.error(spe);
-    }
-
-    /**
-     * Reports a warning
-     * 
-     * @param message
-     *            the message
-     * @throws SAXException
-     */
-    public void warn(String message) throws SAXException {
-        if (errorHandler == null) {
-            return;
-        }
-        SAXParseException spe = new SAXParseException(message, this);
-        errorHandler.warning(spe);
-    }
-
-    /**
-     * 
-     */
-    private void resetAttributes() {
-        // [NOCPP[
-        if (newAttributesEachTime) {
-            attributes = null;
-        } else {
-            // ]NOCPP]
-            attributes.clear(mappingLangToXmlLang);
-            // [NOCPP[
-        }
-        // ]NOCPP]
-    }
-
-    private void strBufToElementNameString() {
-        // if (strBufOffset != -1) {
-        // return ElementName.elementNameByBuffer(buf, strBufOffset, strBufLen);
-        // } else {
-        tagName = ElementName.elementNameByBuffer(strBuf, 0, strBufLen);
-        // }
-    }
-
-    private int emitCurrentTagToken(boolean selfClosing, int pos) throws SAXException {
-        cstart = pos + 1;
-        maybeErrSlashInEndTag(selfClosing);
-        stateSave = Tokenizer.DATA;
-        HtmlAttributes attrs = (attributes == null ? HtmlAttributes.EMPTY_ATTRIBUTES
-                : attributes);
-        if (endTag) {
-            /*
-             * When an end tag token is emitted, the content model flag must be
-             * switched to the PCDATA state.
-             */
-            maybeErrAttributesOnEndTag(attrs);
-            tokenHandler.endTag(tagName);
-        } else {
-            tokenHandler.startTag(tagName, attrs, selfClosing);
-        }
-        resetAttributes();
-        return stateSave;
-    }
-
-    private void attributeNameComplete() throws SAXException {
-        // if (strBufOffset != -1) {
-        // attributeName = AttributeName.nameByBuffer(buf, strBufOffset,
-        // strBufLen, namePolicy != XmlViolationPolicy.ALLOW);
-        // } else {
-        attributeName = AttributeName.nameByBuffer(strBuf, 0, strBufLen
-        // [NOCPP[
-                , namePolicy != XmlViolationPolicy.ALLOW
-        // ]NOCPP]
-        );
-        // }
-
-        // [NOCPP[
-        if (attributes == null) {
-            attributes = new HtmlAttributes(mappingLangToXmlLang);
-        }
-        // ]NOCPP]
-
-        /*
-         * When the user agent leaves the attribute name state (and before
-         * emitting the tag token, if appropriate), the complete attribute's
-         * name must be compared to the other attributes on the same token; if
-         * there is already an attribute on the token with the exact same name,
-         * then this is a parse error and the new attribute must be dropped,
-         * along with the value that gets associated with it (if any).
-         */
-        if (attributes.contains(attributeName)) {
-            errDuplicateAttribute();
-            attributeName.release();
-            attributeName = null;
-        }
-    }
-
-    private void addAttributeWithoutValue() throws SAXException {
-        // [NOCPP[
-        if (metaBoundaryPassed && AttributeName.CHARSET == attributeName
-                && ElementName.META == tagName) {
-            err("A \u201Ccharset\u201D attribute on a \u201Cmeta\u201D element found after the first 512 bytes.");
-        }
-        // ]NOCPP]
-        if (attributeName != null) {
-            // [NOCPP[
-            if (html4) {
-                if (attributeName.isBoolean()) {
-                    if (html4ModeCompatibleWithXhtml1Schemata) {
-                        attributes.addAttribute(attributeName,
-                                attributeName.getLocal(AttributeName.HTML),
-                                xmlnsPolicy);
-                    } else {
-                        attributes.addAttribute(attributeName, "", xmlnsPolicy);
-                    }
-                } else {
-                    err("Attribute value omitted for a non-boolean attribute. (HTML4-only error.)");
-                    attributes.addAttribute(attributeName, "", xmlnsPolicy);
-                }
-            } else {
-                if (AttributeName.SRC == attributeName
-                        || AttributeName.HREF == attributeName) {
-                    warn("Attribute \u201C"
-                            + attributeName.getLocal(AttributeName.HTML)
-                            + "\u201D without an explicit value seen. The attribute may be dropped by IE7.");
-                }
-                // ]NOCPP]
-                attributes.addAttribute(attributeName,
-                        Portability.newEmptyString()
-                        // [NOCPP[
-                        , xmlnsPolicy
-                // ]NOCPP]
-                );
-                // [NOCPP[
-            }
-            // ]NOCPP]
-        }
-    }
-
-    private void addAttributeWithValue() throws SAXException {
-        // [NOCPP[
-        if (metaBoundaryPassed && ElementName.META == tagName
-                && AttributeName.CHARSET == attributeName) {
-            err("A \u201Ccharset\u201D attribute on a \u201Cmeta\u201D element found after the first 512 bytes.");
-        }
-        // ]NOCPP]
-        if (attributeName != null) {
-            String value = longStrBufToString(); // Ownership transferred to
-            // HtmlAttributes
-            // [NOCPP[
-            if (!endTag && html4 && html4ModeCompatibleWithXhtml1Schemata
-                    && attributeName.isCaseFolded()) {
-                value = newAsciiLowerCaseStringFromString(value);
-            }
-            // ]NOCPP]
-            attributes.addAttribute(attributeName, value
-            // [NOCPP[
-                    , xmlnsPolicy
-            // ]NOCPP]
-            );
-        }
-    }
-
-    // [NOCPP[
-
-    private static String newAsciiLowerCaseStringFromString(String str) {
-        if (str == null) {
-            return null;
-        }
-        char[] buf = new char[str.length()];
-        for (int i = 0; i < str.length(); i++) {
-            char c = str.charAt(i);
-            if (c >= 'A' && c <= 'Z') {
-                c += 0x20;
-            }
-            buf[i] = c;
-        }
-        return new String(buf);
-    }
-
-    // ]NOCPP]
-    
-    protected void startErrorReporting() throws SAXException {
-
-    }
-
-    public void start() throws SAXException {
-        confident = false;
-        strBuf = new char[64];
-        strBufLen = 0;
-        longStrBuf = new char[1024];
-        longStrBufLen = 0;
-        stateSave = Tokenizer.DATA;
-        line = 1;
-        lastCR = false;
-        // [NOCPP[
-        html4 = false;
-        metaBoundaryPassed = false;
-        // ]NOCPP]
-        tokenHandler.startTokenization(this);
-        // [NOCPP[
-        wantsComments = tokenHandler.wantsComments();
-        // ]NOCPP]
-        index = 0;
-        forceQuirks = false;
-        additional = '\u0000';
-        entCol = -1;
-        lo = 0;
-        hi = (NamedCharacters.NAMES.length - 1);
-        candidate = -1;
-        strBufMark = 0;
-        prevValue = -1;
-        value = 0;
-        seenDigits = false;
-        shouldSuspend = false;
-        // [NOCPP[
-        if (!newAttributesEachTime) {
-            // ]NOCPP]
-            attributes = new HtmlAttributes(mappingLangToXmlLang);
-            // [NOCPP[
-        }
-        startErrorReporting();
-        // ]NOCPP]
-    }
-
-    public boolean tokenizeBuffer(UTF16Buffer buffer) throws SAXException {
-        int state = stateSave;
-        int returnState = returnStateSave;
-        char c = '\u0000';
-        shouldSuspend = false;
-        lastCR = false;
-
-        int start = buffer.getStart();
-        /**
-         * The index of the last <code>char</code> read from <code>buf</code>.
-         */
-        int pos = start - 1;
-
-        /**
-         * The index of the first <code>char</code> in <code>buf</code> that is
-         * part of a coalesced run of character tokens or
-         * <code>Integer.MAX_VALUE</code> if there is not a current run being
-         * coalesced.
-         */
-        switch (state) {
-            case DATA:
-            case RCDATA:
-            case CDATA:
-            case PLAINTEXT:
-            case CDATA_SECTION:
-            case ESCAPE:
-            case ESCAPE_EXCLAMATION:
-            case ESCAPE_EXCLAMATION_HYPHEN:
-            case ESCAPE_HYPHEN:
-            case ESCAPE_HYPHEN_HYPHEN:
-                cstart = start;
-                break;
-            default:
-                cstart = Integer.MAX_VALUE;
-                break;
-        }
-
-        /**
-         * The number of <code>char</code>s in <code>buf</code> that have
-         * meaning. (The rest of the array is garbage and should not be
-         * examined.)
-         */
-        pos = stateLoop(state, c, pos, buffer.getBuffer(), false, returnState, buffer.getEnd());
-        if (pos == buffer.getEnd()) {
-            // exiting due to end of buffer
-            buffer.setStart(pos);
-        } else {
-            buffer.setStart(pos + 1);
-        }
-        return lastCR;
-    }
-
-    // WARNING When editing this, makes sure the bytecode length shown by javap
-    // stays under 8000 bytes!
-    private int stateLoop(int state, char c, int pos, @NoLength char[] buf, boolean reconsume, int returnState, int endPos)
-            throws SAXException {
-        stateloop: for (;;) {
-            switch (state) {
-                case DATA:
-                    dataloop: for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            if (++pos == endPos) {
-                                break stateloop;
-                            }
-                            c = checkChar(buf, pos);
-                        }
-                        switch (c) {
-                            case '&':
-                                /*
-                                 * U+0026 AMPERSAND (&) When the content model
-                                 * flag is set to one of the PCDATA or RCDATA
-                                 * states and the escape flag is false: switch
-                                 * to the character reference data state.
-                                 * Otherwise: treat it as per the "anything
-                                 * else" entry below.
-                                 */
-                                flushChars(buf, pos);
-                                clearStrBufAndAppendCurrentC(c);
-                                rememberAmpersandLocation('\u0000');
-                                returnState = state;
-                                state = Tokenizer.CONSUME_CHARACTER_REFERENCE;
-                                continue stateloop;
-                            case '<':
-                                /*
-                                 * U+003C LESS-THAN SIGN (<) When the content
-                                 * model flag is set to the PCDATA state: switch
-                                 * to the tag open state. When the content model
-                                 * flag is set to either the RCDATA state or the
-                                 * CDATA state, and the escape flag is false:
-                                 * switch to the tag open state. Otherwise:
-                                 * treat it as per the "anything else" entry
-                                 * below.
-                                 */
-                                flushChars(buf, pos);
-
-                                state = Tokenizer.TAG_OPEN;
-                                break dataloop; // FALL THROUGH continue
-                            // stateloop;
-                            case '\u0000':
-                                emitReplacementCharacter(buf, pos);
-                                continue;
-                            case '\r':
-                                emitCarriageReturn(buf, pos);
-                                break stateloop;
-                            case '\n':
-                                silentLineFeed();
-                            default:
-                                /*
-                                 * Anything else Emit the input character as a
-                                 * character token.
-                                 */
-                                /*
-                                 * Stay in the data state.
-                                 */
-                                continue;
-                        }
-                    }
-                    // WARNING FALLTHRU CASE TRANSITION: DON'T REORDER
-                case TAG_OPEN:
-                    tagopenloop: for (;;) {
-                        /*
-                         * The behavior of this state depends on the content
-                         * model flag.
-                         */
-                        if (++pos == endPos) {
-                            break stateloop;
-                        }
-                        c = checkChar(buf, pos);
-                        /*
-                         * If the content model flag is set to the PCDATA state
-                         * Consume the next input character:
-                         */
-                        if (c >= 'A' && c <= 'Z') {
-                            /*
-                             * U+0041 LATIN CAPITAL LETTER A through to U+005A
-                             * LATIN CAPITAL LETTER Z Create a new start tag
-                             * token,
-                             */
-                            endTag = false;
-                            /*
-                             * set its tag name to the lowercase version of the
-                             * input character (add 0x0020 to the character's
-                             * code point),
-                             */
-                            clearStrBufAndAppendForceWrite((char) (c + 0x20));
-                            /* then switch to the tag name state. */
-                            state = Tokenizer.TAG_NAME;
-                            /*
-                             * (Don't emit the token yet; further details will
-                             * be filled in before it is emitted.)
-                             */
-                            break tagopenloop;
-                            // continue stateloop;
-                        } else if (c >= 'a' && c <= 'z') {
-                            /*
-                             * U+0061 LATIN SMALL LETTER A through to U+007A
-                             * LATIN SMALL LETTER Z Create a new start tag
-                             * token,
-                             */
-                            endTag = false;
-                            /*
-                             * set its tag name to the input character,
-                             */
-                            clearStrBufAndAppendCurrentC(c);
-                            /* then switch to the tag name state. */
-                            state = Tokenizer.TAG_NAME;
-                            /*
-                             * (Don't emit the token yet; further details will
-                             * be filled in before it is emitted.)
-                             */
-                            break tagopenloop;
-                            // continue stateloop;
-                        }
-                        switch (c) {
-                            case '!':
-                                /*
-                                 * U+0021 EXCLAMATION MARK (!) Switch to the
-                                 * markup declaration open state.
-                                 */
-                                state = Tokenizer.MARKUP_DECLARATION_OPEN;
-                                continue stateloop;
-                            case '/':
-                                /*
-                                 * U+002F SOLIDUS (/) Switch to the close tag
-                                 * open state.
-                                 */
-                                state = Tokenizer.CLOSE_TAG_OPEN_PCDATA;
-                                continue stateloop;
-                            case '?':
-                                /*
-                                 * U+003F QUESTION MARK (?) Parse error.
-                                 */
-                                errProcessingInstruction();
-                                /*
-                                 * Switch to the bogus comment state.
-                                 */
-                                clearLongStrBufAndAppendToComment(c);
-                                state = Tokenizer.BOGUS_COMMENT;
-                                continue stateloop;
-                            case '>':
-                                /*
-                                 * U+003E GREATER-THAN SIGN (>) Parse error.
-                                 */
-                                errLtGt();
-                                /*
-                                 * Emit a U+003C LESS-THAN SIGN character token
-                                 * and a U+003E GREATER-THAN SIGN character
-                                 * token.
-                                 */
-                                tokenHandler.characters(Tokenizer.LT_GT, 0, 2);
-                                /* Switch to the data state. */
-                                cstart = pos + 1;
-                                state = Tokenizer.DATA;
-                                continue stateloop;
-                            default:
-                                /*
-                                 * Anything else Parse error.
-                                 */
-                                errBadCharAfterLt(c);
-                                /*
-                                 * Emit a U+003C LESS-THAN SIGN character token
-                                 */
-                                tokenHandler.characters(Tokenizer.LT_GT, 0, 1);
-                                /*
-                                 * and reconsume the current input character in
-                                 * the data state.
-                                 */
-                                cstart = pos;
-                                state = Tokenizer.DATA;
-                                reconsume = true;
-                                continue stateloop;
-                        }
-                    }
-                    // FALL THROUGH DON'T REORDER
-                case TAG_NAME:
-                    tagnameloop: for (;;) {
-                        if (++pos == endPos) {
-                            break stateloop;
-                        }
-                        c = checkChar(buf, pos);
-                        /*
-                         * Consume the next input character:
-                         */
-                        switch (c) {
-                            case '\r':
-                                silentCarriageReturn();
-                                strBufToElementNameString();
-                                state = Tokenizer.BEFORE_ATTRIBUTE_NAME;
-                                break stateloop;
-                            case '\n':
-                                silentLineFeed();
-                            case ' ':
-                            case '\t':
-                            case '\u000C':
-                                /*
-                                 * U+0009 CHARACTER TABULATION U+000A LINE FEED
-                                 * (LF) U+000C FORM FEED (FF) U+0020 SPACE
-                                 * Switch to the before attribute name state.
-                                 */
-                                strBufToElementNameString();
-                                state = Tokenizer.BEFORE_ATTRIBUTE_NAME;
-                                break tagnameloop;
-                            // continue stateloop;
-                            case '/':
-                                /*
-                                 * U+002F SOLIDUS (/) Switch to the self-closing
-                                 * start tag state.
-                                 */
-                                strBufToElementNameString();
-                                state = Tokenizer.SELF_CLOSING_START_TAG;
-                                continue stateloop;
-                            case '>':
-                                /*
-                                 * U+003E GREATER-THAN SIGN (>) Emit the current
-                                 * tag token.
-                                 */
-                                strBufToElementNameString();
-                                state = emitCurrentTagToken(false, pos);
-                                if (shouldSuspend) {
-                                    break stateloop;
-                                }
-                                /*
-                                 * Switch to the data state.
-                                 */
-                                continue stateloop;
-                            case '\u0000':
-                                c = '\uFFFD';
-                                // fall thru
-                            default:
-                                if (c >= 'A' && c <= 'Z') {
-                                    /*
-                                     * U+0041 LATIN CAPITAL LETTER A through to
-                                     * U+005A LATIN CAPITAL LETTER Z Append the
-                                     * lowercase version of the current input
-                                     * character (add 0x0020 to the character's
-                                     * code point) to the current tag token's
-                                     * tag name.
-                                     */
-                                    c += 0x20;
-                                }
-                                /*
-                                 * Anything else Append the current input
-                                 * character to the current tag token's tag
-                                 * name.
-                                 */
-                                appendStrBuf(c);
-                                /*
-                                 * Stay in the tag name state.
-                                 */
-                                continue;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case BEFORE_ATTRIBUTE_NAME:
-                    beforeattributenameloop: for (;;) {
-                        if (reconsume) {
-                            reconsume = false;
-                        } else {
-                            if (++pos == endPos) {
-                                break stateloop;
-                            }
-                            c = checkChar(buf, pos);
-                        }
-                        /*
-                         * Consume the next input character:
-                         */
-                        switch (c) {
-                            case '\r':
-                                silentCarriageReturn();
-                                break stateloop;
-                            case '\n':
-                                silentLineFeed();
-                                // fall thru
-                            case ' ':
-                            case '\t':
-                            case '\u000C':
-                                /*
-                                 * U+0009 CHARACTER TABULATION U+000A LINE FEED
-                                 * (LF) U+000C FORM FEED (FF) U+0020 SPACE Stay
-                                 * in the before attribute name state.
-                                 */
-                                continue;
-                            case '/':
-                                /*
-                                 * U+002F SOLIDUS (/) Switch to the self-closing
-                                 * start tag state.
-                                 */
-                                state = Tokenizer.SELF_CLOSING_START_TAG;
-                                continue stateloop;
-                            case '>':
-                                /*
-                                 * U+003E GREATER-THAN SIGN (>) Emit the current
-                                 * tag token.
-                                 */
-                                state = emitCurrentTagToken(false, pos);
-                                if (shouldSuspend) {
-                                    break stateloop;
-                                }
-                                /*
-                                 * Switch to the data state.
-                                 */
-                                continue stateloop;
-                            case '\u0000':
-                                c = '\uFFFD';
-                                // fall thru
-                            case '\"':
-                            case '\'':
-                            case '=':
-                                /*
-                                 * U+0022 QUOTATION MARK (") U+0027 APOSTROPHE
-                                 * (') U+003D EQUALS SIGN (=) Parse error.
-                                 */
-                                errBadCharBeforeAttributeNameOrNull(c);
-                                /*
-                                 * Treat it as per the "anything else" entry
-                                 * below.
-                                 */
-                            default:
-                                /*
-                                 * Anything else Start a new attribute in the
-                                 * current tag token.
-                                 */
-                                if (c >= 'A' && c <= 'Z') {
-                                    /*
-                                     * U+0041 LATIN CAPITAL LETTER A through to
-                                     * U+005A LATIN CAPITAL LETTER Z Set that
-                                     * attribute's name to the lowercase version
-                                     * of the current input character (add
-                                     * 0x0020 to the character's code point)
-                                     */
-                                    c += 0x20;
-                                }
-                                /*
-                                 * Set that attribute's name to the current
-                                 * input character,
-                                 */
-                                clearStrBufAndAppendCurrentC(c);
-                                /*
-                                 * and its value to the empty string.
-                                 */
-                                // Will do later.
-                                /*
-                                 * Switch to the attribute name state.
-                                 */
-                                state = Tokenizer.ATTRIBUTE_NAME;
-                                break beforeattributenameloop;
-                            // continue stateloop;
-                        }
-                    }
-                    // FALLTHRU DON'T REORDER
-                case ATTRIBUTE_NAME:
-                    attributenameloop: for (;;) {
-                        if (++pos == endPos) {
-                            break stateloop;
-                        }
-                        c = checkChar(buf, pos);
-                        /*
-                         * Consume the next input character:
-                         */
-                        switch (c) {
-                            case '\r':
-                                silentCarriageReturn();
-                                attributeNameComplete();
-                                state = Tokenizer.AFTER_ATTRIBUTE