Move xfa_document to cxfa_document

This moves the code to match the actual class name.

Review-Url: https://codereview.chromium.org/2163133004
diff --git a/BUILD.gn b/BUILD.gn
index 7372cb8..0ebdb7f 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1370,6 +1370,8 @@
       "xfa/fxfa/parser/cxfa_corner.h",
       "xfa/fxfa/parser/cxfa_data.cpp",
       "xfa/fxfa/parser/cxfa_data.h",
+      "xfa/fxfa/parser/cxfa_document.cpp",
+      "xfa/fxfa/parser/cxfa_document.h",
       "xfa/fxfa/parser/cxfa_document_parser.cpp",
       "xfa/fxfa/parser/cxfa_document_parser.h",
       "xfa/fxfa/parser/cxfa_edge.h",
@@ -1441,10 +1443,8 @@
       "xfa/fxfa/parser/xfa_basic_data_element_script.cpp",
       "xfa/fxfa/parser/xfa_basic_data_enum.cpp",
       "xfa/fxfa/parser/xfa_basic_data_packets.cpp",
-      "xfa/fxfa/parser/xfa_document.h",
       "xfa/fxfa/parser/xfa_document_datamerger_imp.cpp",
       "xfa/fxfa/parser/xfa_document_datamerger_imp.h",
-      "xfa/fxfa/parser/xfa_document_imp.cpp",
       "xfa/fxfa/parser/xfa_document_serialize.cpp",
       "xfa/fxfa/parser/xfa_document_serialize.h",
       "xfa/fxfa/parser/xfa_layout_appadapter.cpp",
diff --git a/xfa.gyp b/xfa.gyp
index caefb9b..050f5ec 100644
--- a/xfa.gyp
+++ b/xfa.gyp
@@ -475,6 +475,8 @@
         "xfa/fxfa/parser/cxfa_contentlayoutitem.h",
         "xfa/fxfa/parser/cxfa_data.cpp",
         "xfa/fxfa/parser/cxfa_data.h",
+        "xfa/fxfa/parser/cxfa_document.cpp",
+        "xfa/fxfa/parser/cxfa_document.h",
         "xfa/fxfa/parser/cxfa_document_parser.cpp",
         "xfa/fxfa/parser/cxfa_document_parser.h",
         "xfa/fxfa/parser/cxfa_edge.h",
@@ -546,10 +548,8 @@
         "xfa/fxfa/parser/xfa_basic_data_enum.cpp",
         "xfa/fxfa/parser/xfa_basic_data_packets.cpp",
         "xfa/fxfa/parser/xfa_basic_data.h",
-        "xfa/fxfa/parser/xfa_document.h",
         "xfa/fxfa/parser/xfa_document_datamerger_imp.cpp",
         "xfa/fxfa/parser/xfa_document_datamerger_imp.h",
-        "xfa/fxfa/parser/xfa_document_imp.cpp",
         "xfa/fxfa/parser/xfa_document_serialize.cpp",
         "xfa/fxfa/parser/xfa_document_serialize.h",
         "xfa/fxfa/parser/xfa_layout_appadapter.cpp",
diff --git a/xfa/fxfa/app/xfa_ffdoc.cpp b/xfa/fxfa/app/xfa_ffdoc.cpp
index 2948391..6ca1704 100644
--- a/xfa/fxfa/app/xfa_ffdoc.cpp
+++ b/xfa/fxfa/app/xfa_ffdoc.cpp
@@ -21,7 +21,7 @@
 #include "xfa/fxfa/include/xfa_ffdocview.h"
 #include "xfa/fxfa/include/xfa_ffwidget.h"
 #include "xfa/fxfa/include/xfa_fontmgr.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_document_serialize.h"
 
 namespace {
diff --git a/xfa/fxfa/app/xfa_ffnotify.h b/xfa/fxfa/app/xfa_ffnotify.h
index 322caa3..07e5419 100644
--- a/xfa/fxfa/app/xfa_ffnotify.h
+++ b/xfa/fxfa/app/xfa_ffnotify.h
@@ -8,7 +8,7 @@
 #define XFA_FXFA_APP_XFA_FFNOTIFY_H_
 
 #include "xfa/fxfa/include/cxfa_eventparam.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 
 class CXFA_FFWidgetHandler;
 
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
index 357fd7e..4afcb32 100644
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
@@ -15,8 +15,8 @@
 #include "xfa/fgas/localization/fgas_locale.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/fm2js/xfa_program.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localevalue.h"
 
 namespace {
diff --git a/xfa/fxfa/include/xfa_ffdoc.h b/xfa/fxfa/include/xfa_ffdoc.h
index 0f32c43..ddbc004 100644
--- a/xfa/fxfa/include/xfa_ffdoc.h
+++ b/xfa/fxfa/include/xfa_ffdoc.h
@@ -11,8 +11,8 @@
 #include <memory>
 
 #include "xfa/fxfa/include/fxfa.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_document_parser.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 
 class CXFA_ChecksumContext;
 class CXFA_FFApp;
diff --git a/xfa/fxfa/include/xfa_ffwidgethandler.h b/xfa/fxfa/include/xfa_ffwidgethandler.h
index 1cd28ce..40447f7 100644
--- a/xfa/fxfa/include/xfa_ffwidgethandler.h
+++ b/xfa/fxfa/include/xfa_ffwidgethandler.h
@@ -11,7 +11,7 @@
 
 #include "xfa/fxfa/include/cxfa_eventparam.h"
 #include "xfa/fxfa/include/fxfa.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 
 class CXFA_FFDocView;
 enum class FWL_WidgetHit;
diff --git a/xfa/fxfa/parser/cscript_datawindow.cpp b/xfa/fxfa/parser/cscript_datawindow.cpp
index 9378b20..fbf9704 100644
--- a/xfa/fxfa/parser/cscript_datawindow.cpp
+++ b/xfa/fxfa/parser/cscript_datawindow.cpp
@@ -7,7 +7,7 @@
 #include "xfa/fxfa/parser/cscript_datawindow.h"
 
 #include "fxjs/include/cfxjse_arguments.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/cscript_eventpseudomodel.cpp b/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
index 16b2586..c961164 100644
--- a/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_eventpseudomodel.cpp
@@ -10,8 +10,8 @@
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/include/cxfa_eventparam.h"
 #include "xfa/fxfa/include/xfa_ffwidgethandler.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/cscript_hostpseudomodel.cpp b/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
index a648735..4448180 100644
--- a/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_hostpseudomodel.cpp
@@ -8,9 +8,9 @@
 
 #include "fxjs/include/cfxjse_arguments.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
diff --git a/xfa/fxfa/parser/cscript_hostpseudomodel.h b/xfa/fxfa/parser/cscript_hostpseudomodel.h
index f07ba95..0cfb4f8 100644
--- a/xfa/fxfa/parser/cscript_hostpseudomodel.h
+++ b/xfa/fxfa/parser/cscript_hostpseudomodel.h
@@ -8,7 +8,7 @@
 #define XFA_FXFA_PARSER_CSCRIPT_HOSTPSEUDOMODEL_H_
 
 #include "fxjs/include/cfxjse_arguments.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 
 class CScript_HostPseudoModel : public CXFA_Object {
diff --git a/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp b/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
index 227a207..492e8d9 100644
--- a/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_layoutpseudomodel.cpp
@@ -13,11 +13,11 @@
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/parser/cxfa_containerlayoutitem.h"
 #include "xfa/fxfa/parser/cxfa_contentlayoutitem.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_layoutitem.h"
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_layout_appadapter.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
diff --git a/xfa/fxfa/parser/cscript_logpseudomodel.cpp b/xfa/fxfa/parser/cscript_logpseudomodel.cpp
index 247a81d..96c61a9 100644
--- a/xfa/fxfa/parser/cscript_logpseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_logpseudomodel.cpp
@@ -7,7 +7,7 @@
 #include "xfa/fxfa/parser/cscript_logpseudomodel.h"
 
 #include "fxjs/include/cfxjse_arguments.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp b/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
index 0e7cf65..071ae39 100644
--- a/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
+++ b/xfa/fxfa/parser/cscript_signaturepseudomodel.cpp
@@ -8,8 +8,8 @@
 
 #include "fxjs/include/cfxjse_arguments.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/xfa_document_imp.cpp b/xfa/fxfa/parser/cxfa_document.cpp
similarity index 89%
rename from xfa/fxfa/parser/xfa_document_imp.cpp
rename to xfa/fxfa/parser/cxfa_document.cpp
index 633e2e2..346690b 100644
--- a/xfa/fxfa/parser/xfa_document_imp.cpp
+++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -12,15 +12,77 @@
 #include "xfa/fxfa/parser/cscript_layoutpseudomodel.h"
 #include "xfa/fxfa/parser/cscript_logpseudomodel.h"
 #include "xfa/fxfa/parser/cscript_signaturepseudomodel.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_document_parser.h"
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
+namespace {
+
+void MergeNodeRecurse(CXFA_Document* pDocument,
+                      CXFA_Node* pDestNodeParent,
+                      CXFA_Node* pProtoNode) {
+  CXFA_Node* pExistingNode = nullptr;
+  for (CXFA_Node* pFormChild =
+           pDestNodeParent->GetNodeItem(XFA_NODEITEM_FirstChild);
+       pFormChild;
+       pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
+    if (pFormChild->GetElementType() == pProtoNode->GetElementType() &&
+        pFormChild->GetNameHash() == pProtoNode->GetNameHash() &&
+        pFormChild->IsUnusedNode()) {
+      pFormChild->ClearFlag(XFA_NodeFlag_UnusedNode);
+      pExistingNode = pFormChild;
+      break;
+    }
+  }
+
+  if (pExistingNode) {
+    pExistingNode->SetTemplateNode(pProtoNode);
+    for (CXFA_Node* pTemplateChild =
+             pProtoNode->GetNodeItem(XFA_NODEITEM_FirstChild);
+         pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem(
+                             XFA_NODEITEM_NextSibling)) {
+      MergeNodeRecurse(pDocument, pExistingNode, pTemplateChild);
+    }
+    return;
+  }
+  CXFA_Node* pNewNode = pProtoNode->Clone(TRUE);
+  pNewNode->SetTemplateNode(pProtoNode);
+  pDestNodeParent->InsertChild(pNewNode, nullptr);
+}
+
+void MergeNode(CXFA_Document* pDocument,
+               CXFA_Node* pDestNode,
+               CXFA_Node* pProtoNode) {
+  {
+    CXFA_NodeIterator sIterator(pDestNode);
+    for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
+         pNode = sIterator.MoveToNext()) {
+      pNode->SetFlag(XFA_NodeFlag_UnusedNode, true);
+    }
+  }
+  pDestNode->SetTemplateNode(pProtoNode);
+  for (CXFA_Node* pTemplateChild =
+           pProtoNode->GetNodeItem(XFA_NODEITEM_FirstChild);
+       pTemplateChild;
+       pTemplateChild = pTemplateChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
+    MergeNodeRecurse(pDocument, pDestNode, pTemplateChild);
+  }
+  {
+    CXFA_NodeIterator sIterator(pDestNode);
+    for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
+         pNode = sIterator.MoveToNext()) {
+      pNode->ClearFlag(XFA_NodeFlag_UnusedNode);
+    }
+  }
+}
+
+}  // namespace
+
 CXFA_Document::CXFA_Document(CXFA_DocumentParser* pParser)
     : m_pParser(pParser),
       m_pScriptContext(nullptr),
@@ -37,6 +99,7 @@
       m_dwDocFlags(0) {
   ASSERT(m_pParser);
 }
+
 CXFA_Document::~CXFA_Document() {
   delete m_pRootNode;
   PurgeNodes();
@@ -64,9 +127,9 @@
 }
 
 void CXFA_Document::SetRoot(CXFA_Node* pNewRoot) {
-  if (m_pRootNode) {
+  if (m_pRootNode)
     AddPurgeNode(m_pRootNode);
-  }
+
   m_pRootNode = pNewRoot;
   RemovePurgeNode(pNewRoot);
 }
@@ -83,28 +146,26 @@
   switch (dwNodeNameHash) {
     case XFA_HASHCODE_Data: {
       CXFA_Node* pDatasetsNode = ToNode(GetXFAObject(XFA_HASHCODE_Datasets));
-      if (!pDatasetsNode) {
+      if (!pDatasetsNode)
         return nullptr;
-      }
+
       for (CXFA_Node* pDatasetsChild =
                pDatasetsNode->GetFirstChildByClass(XFA_Element::DataGroup);
            pDatasetsChild;
            pDatasetsChild = pDatasetsChild->GetNextSameClassSibling(
                XFA_Element::DataGroup)) {
-        if (pDatasetsChild->GetNameHash() != XFA_HASHCODE_Data) {
+        if (pDatasetsChild->GetNameHash() != XFA_HASHCODE_Data)
           continue;
-        }
+
         CFX_WideString wsNamespaceURI;
-        if (!pDatasetsChild->TryNamespace(wsNamespaceURI)) {
+        if (!pDatasetsChild->TryNamespace(wsNamespaceURI))
           continue;
-        }
+
         CFX_WideString wsDatasetsURI;
-        if (!pDatasetsNode->TryNamespace(wsDatasetsURI)) {
+        if (!pDatasetsNode->TryNamespace(wsDatasetsURI))
           continue;
-        }
-        if (wsNamespaceURI == wsDatasetsURI) {
+        if (wsNamespaceURI == wsDatasetsURI)
           return pDatasetsChild;
-        }
       }
       return nullptr;
     }
@@ -147,6 +208,7 @@
       return m_pRootNode->GetFirstChildByName(dwNodeNameHash);
   }
 }
+
 CXFA_Node* CXFA_Document::CreateNode(uint32_t dwPacket, XFA_Element eElement) {
   return CreateNode(XFA_GetPacketByID(dwPacket), eElement);
 }
@@ -184,29 +246,29 @@
 }
 
 void CXFA_Document::SetFlag(uint32_t dwFlag, FX_BOOL bOn) {
-  if (bOn) {
+  if (bOn)
     m_dwDocFlags |= dwFlag;
-  } else {
+  else
     m_dwDocFlags &= ~dwFlag;
-  }
 }
+
 FX_BOOL CXFA_Document::IsInteractive() {
-  if (m_dwDocFlags & XFA_DOCFLAG_HasInteractive) {
+  if (m_dwDocFlags & XFA_DOCFLAG_HasInteractive)
     return !!(m_dwDocFlags & XFA_DOCFLAG_Interactive);
-  }
+
   CXFA_Node* pConfig = ToNode(GetXFAObject(XFA_HASHCODE_Config));
-  if (!pConfig) {
+  if (!pConfig)
     return FALSE;
-  }
+
   CFX_WideString wsInteractive;
   CXFA_Node* pPresent = pConfig->GetFirstChildByClass(XFA_Element::Present);
-  if (!pPresent) {
+  if (!pPresent)
     return FALSE;
-  }
+
   CXFA_Node* pPDF = pPresent->GetFirstChildByClass(XFA_Element::Pdf);
-  if (!pPDF) {
+  if (!pPDF)
     return FALSE;
-  }
+
   CXFA_Node* pInteractive = pPDF->GetChild(0, XFA_Element::Interactive);
   if (pInteractive) {
     m_dwDocFlags |= XFA_DOCFLAG_HasInteractive;
@@ -218,6 +280,7 @@
   }
   return FALSE;
 }
+
 CXFA_LocaleMgr* CXFA_Document::GetLocalMgr() {
   if (!m_pLocalMgr) {
     CFX_WideString wsLanguage;
@@ -227,17 +290,20 @@
   }
   return m_pLocalMgr;
 }
+
 CXFA_ScriptContext* CXFA_Document::InitScriptContext(v8::Isolate* pIsolate) {
   if (!m_pScriptContext)
     m_pScriptContext = new CXFA_ScriptContext(this);
   m_pScriptContext->Initialize(pIsolate);
   return m_pScriptContext;
 }
+
 CXFA_ScriptContext* CXFA_Document::GetScriptContext() {
   if (!m_pScriptContext)
     m_pScriptContext = new CXFA_ScriptContext(this);
   return m_pScriptContext;
 }
+
 XFA_VERSION CXFA_Document::RecognizeXFAVersionNumber(
     CFX_WideString& wsTemplateNS) {
   CFX_WideStringC wsTemplateURIPrefix =
@@ -248,98 +314,44 @@
     return XFA_VERSION_UNKNOWN;
   }
   FX_STRSIZE nDotPos = wsTemplateNS.Find('.', nPrefixLength);
-  if (nDotPos == (FX_STRSIZE)-1) {
+  if (nDotPos == (FX_STRSIZE)-1)
     return XFA_VERSION_UNKNOWN;
-  }
+
   int8_t iMajor = FXSYS_wtoi(
       wsTemplateNS.Mid(nPrefixLength, nDotPos - nPrefixLength).c_str());
   int8_t iMinor = FXSYS_wtoi(
       wsTemplateNS.Mid(nDotPos + 1, wsTemplateNS.GetLength() - nDotPos - 2)
           .c_str());
   XFA_VERSION eVersion = (XFA_VERSION)((int32_t)iMajor * 100 + iMinor);
-  if (eVersion < XFA_VERSION_MIN || eVersion > XFA_VERSION_MAX) {
+  if (eVersion < XFA_VERSION_MIN || eVersion > XFA_VERSION_MAX)
     return XFA_VERSION_UNKNOWN;
-  }
+
   m_eCurVersionMode = eVersion;
   return eVersion;
 }
+
 CXFA_Node* CXFA_Document::GetNodeByID(CXFA_Node* pRoot,
                                       const CFX_WideStringC& wsID) {
-  if (!pRoot || wsID.IsEmpty()) {
+  if (!pRoot || wsID.IsEmpty())
     return nullptr;
-  }
+
   CXFA_NodeIterator sIterator(pRoot);
   for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
        pNode = sIterator.MoveToNext()) {
     CFX_WideStringC wsIDVal;
     if (pNode->TryCData(XFA_ATTRIBUTE_Id, wsIDVal) && !wsIDVal.IsEmpty()) {
-      if (wsIDVal == wsID) {
+      if (wsIDVal == wsID)
         return pNode;
-      }
     }
   }
   return nullptr;
 }
-static void XFA_ProtoMerge_MergeNodeRecurse(CXFA_Document* pDocument,
-                                            CXFA_Node* pDestNodeParent,
-                                            CXFA_Node* pProtoNode) {
-  CXFA_Node* pExistingNode = nullptr;
-  for (CXFA_Node* pFormChild =
-           pDestNodeParent->GetNodeItem(XFA_NODEITEM_FirstChild);
-       pFormChild;
-       pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
-    if (pFormChild->GetElementType() == pProtoNode->GetElementType() &&
-        pFormChild->GetNameHash() == pProtoNode->GetNameHash() &&
-        pFormChild->IsUnusedNode()) {
-      pFormChild->ClearFlag(XFA_NodeFlag_UnusedNode);
-      pExistingNode = pFormChild;
-      break;
-    }
-  }
-  if (pExistingNode) {
-    pExistingNode->SetTemplateNode(pProtoNode);
-    for (CXFA_Node* pTemplateChild =
-             pProtoNode->GetNodeItem(XFA_NODEITEM_FirstChild);
-         pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem(
-                             XFA_NODEITEM_NextSibling)) {
-      XFA_ProtoMerge_MergeNodeRecurse(pDocument, pExistingNode, pTemplateChild);
-    }
-    return;
-  }
-  CXFA_Node* pNewNode = pProtoNode->Clone(TRUE);
-  pNewNode->SetTemplateNode(pProtoNode);
-  pDestNodeParent->InsertChild(pNewNode, nullptr);
-}
-static void XFA_ProtoMerge_MergeNode(CXFA_Document* pDocument,
-                                     CXFA_Node* pDestNode,
-                                     CXFA_Node* pProtoNode) {
-  {
-    CXFA_NodeIterator sIterator(pDestNode);
-    for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
-         pNode = sIterator.MoveToNext()) {
-      pNode->SetFlag(XFA_NodeFlag_UnusedNode, true);
-    }
-  }
-  pDestNode->SetTemplateNode(pProtoNode);
-  for (CXFA_Node* pTemplateChild =
-           pProtoNode->GetNodeItem(XFA_NODEITEM_FirstChild);
-       pTemplateChild;
-       pTemplateChild = pTemplateChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
-    XFA_ProtoMerge_MergeNodeRecurse(pDocument, pDestNode, pTemplateChild);
-  }
-  {
-    CXFA_NodeIterator sIterator(pDestNode);
-    for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
-         pNode = sIterator.MoveToNext()) {
-      pNode->ClearFlag(XFA_NodeFlag_UnusedNode);
-    }
-  }
-}
+
 void CXFA_Document::DoProtoMerge() {
   CXFA_Node* pTemplateRoot = ToNode(GetXFAObject(XFA_HASHCODE_Template));
-  if (!pTemplateRoot) {
+  if (!pTemplateRoot)
     return;
-  }
+
   CFX_MapPtrTemplate<uint32_t, CXFA_Node*> mIDMap;
   CXFA_NodeSet sUseNodes;
   CXFA_NodeIterator sIterator(pTemplateRoot);
@@ -357,6 +369,7 @@
       sUseNodes.insert(pNode);
     }
   }
+
   for (CXFA_Node* pUseHrefNode : sUseNodes) {
     CFX_WideString wsUseVal;
     CFX_WideStringC wsURI, wsID, wsSOM;
@@ -381,15 +394,15 @@
       }
     } else if (pUseHrefNode->TryCData(XFA_ATTRIBUTE_Use, wsUseVal) &&
                !wsUseVal.IsEmpty()) {
-      if (wsUseVal[0] == '#') {
+      if (wsUseVal[0] == '#')
         wsID = CFX_WideStringC(wsUseVal.c_str() + 1, wsUseVal.GetLength() - 1);
-      } else {
+      else
         wsSOM = CFX_WideStringC(wsUseVal.c_str(), wsUseVal.GetLength());
-      }
     }
-    if (!wsURI.IsEmpty() && wsURI != FX_WSTRC(L".")) {
+
+    if (!wsURI.IsEmpty() && wsURI != FX_WSTRC(L"."))
       continue;
-    }
+
     CXFA_Node* pProtoNode = nullptr;
     if (!wsSOM.IsEmpty()) {
       uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes |
@@ -406,9 +419,9 @@
         continue;
       }
     }
-    if (!pProtoNode) {
+    if (!pProtoNode)
       continue;
-    }
-    XFA_ProtoMerge_MergeNode(this, pUseHrefNode, pProtoNode);
+
+    MergeNode(this, pUseHrefNode, pProtoNode);
   }
 }
diff --git a/xfa/fxfa/parser/xfa_document.h b/xfa/fxfa/parser/cxfa_document.h
similarity index 96%
rename from xfa/fxfa/parser/xfa_document.h
rename to xfa/fxfa/parser/cxfa_document.h
index fbc027a..8258ab1 100644
--- a/xfa/fxfa/parser/xfa_document.h
+++ b/xfa/fxfa/parser/cxfa_document.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FXFA_PARSER_XFA_DOCUMENT_H_
-#define XFA_FXFA_PARSER_XFA_DOCUMENT_H_
+#ifndef XFA_FXFA_PARSER_CXFA_DOCUMENT_H_
+#define XFA_FXFA_PARSER_CXFA_DOCUMENT_H_
 
 #include "xfa/fxfa/include/fxfa.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
@@ -123,4 +123,4 @@
   uint32_t m_dwDocFlags;
 };
 
-#endif  // XFA_FXFA_PARSER_XFA_DOCUMENT_H_
+#endif  // XFA_FXFA_PARSER_CXFA_DOCUMENT_H_
diff --git a/xfa/fxfa/parser/cxfa_document_parser.cpp b/xfa/fxfa/parser/cxfa_document_parser.cpp
index ff54fb3..daf5221 100644
--- a/xfa/fxfa/parser/cxfa_document_parser.cpp
+++ b/xfa/fxfa/parser/cxfa_document_parser.cpp
@@ -7,7 +7,7 @@
 #include "xfa/fxfa/parser/cxfa_document_parser.h"
 
 #include "xfa/fxfa/include/fxfa.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 
 CXFA_DocumentParser::CXFA_DocumentParser(CXFA_FFNotify* pNotify)
     : m_nodeParser(nullptr, TRUE), m_pNotify(pNotify) {}
diff --git a/xfa/fxfa/parser/cxfa_layoutitem.h b/xfa/fxfa/parser/cxfa_layoutitem.h
index 785272b..c8b2981 100644
--- a/xfa/fxfa/parser/cxfa_layoutitem.h
+++ b/xfa/fxfa/parser/cxfa_layoutitem.h
@@ -7,7 +7,7 @@
 #ifndef XFA_FXFA_PARSER_CXFA_LAYOUTITEM_H_
 #define XFA_FXFA_PARSER_CXFA_LAYOUTITEM_H_
 
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 
 class CXFA_ContainerLayoutItem;
 class CXFA_ContentLayoutItem;
diff --git a/xfa/fxfa/parser/cxfa_layoutprocessor.cpp b/xfa/fxfa/parser/cxfa_layoutprocessor.cpp
index 7ebe528..89ea0ce 100644
--- a/xfa/fxfa/parser/cxfa_layoutprocessor.cpp
+++ b/xfa/fxfa/parser/cxfa_layoutprocessor.cpp
@@ -6,8 +6,8 @@
 
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h"
 #include "xfa/fxfa/parser/xfa_layout_appadapter.h"
 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h"
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 800ada4..fd18577 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -17,13 +17,13 @@
 #include "xfa/fgas/crt/fgas_system.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/include/cxfa_eventparam.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_occur.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
 #include "xfa/fxfa/parser/cxfa_simple_parser.h"
 #include "xfa/fxfa/parser/xfa_basic_data.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 
 namespace {
 
diff --git a/xfa/fxfa/parser/cxfa_nodehelper.cpp b/xfa/fxfa/parser/cxfa_nodehelper.cpp
index f5b4c04..4fc6830 100644
--- a/xfa/fxfa/parser/cxfa_nodehelper.cpp
+++ b/xfa/fxfa/parser/cxfa_nodehelper.cpp
@@ -7,8 +7,8 @@
 #include "xfa/fxfa/parser/cxfa_nodehelper.h"
 
 #include "core/fxcrt/include/fx_ext.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
diff --git a/xfa/fxfa/parser/cxfa_nodelist.cpp b/xfa/fxfa/parser/cxfa_nodelist.cpp
index 61e5091..86575e6 100644
--- a/xfa/fxfa/parser/cxfa_nodelist.cpp
+++ b/xfa/fxfa/parser/cxfa_nodelist.cpp
@@ -7,8 +7,8 @@
 #include "xfa/fxfa/parser/xfa_object.h"
 
 #include "core/fxcrt/include/fx_ext.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 
 CXFA_NodeList::CXFA_NodeList(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
diff --git a/xfa/fxfa/parser/cxfa_object.cpp b/xfa/fxfa/parser/cxfa_object.cpp
index fd553dd..78f39ee 100644
--- a/xfa/fxfa/parser/cxfa_object.cpp
+++ b/xfa/fxfa/parser/cxfa_object.cpp
@@ -9,7 +9,7 @@
 #include "core/fxcrt/include/fx_ext.h"
 #include "fxjs/include/cfxjse_value.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 
 CXFA_Object::CXFA_Object(CXFA_Document* pDocument,
                          XFA_ObjectType objectType,
diff --git a/xfa/fxfa/parser/cxfa_resolveprocessor.cpp b/xfa/fxfa/parser/cxfa_resolveprocessor.cpp
index 578c2dc..2a281f9 100644
--- a/xfa/fxfa/parser/cxfa_resolveprocessor.cpp
+++ b/xfa/fxfa/parser/cxfa_resolveprocessor.cpp
@@ -7,9 +7,9 @@
 #include "xfa/fxfa/parser/cxfa_resolveprocessor.h"
 
 #include "core/fxcrt/include/fx_ext.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_nodehelper.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
diff --git a/xfa/fxfa/parser/cxfa_scriptcontext.cpp b/xfa/fxfa/parser/cxfa_scriptcontext.cpp
index 24c3e50..e91e350 100644
--- a/xfa/fxfa/parser/cxfa_scriptcontext.cpp
+++ b/xfa/fxfa/parser/cxfa_scriptcontext.cpp
@@ -12,10 +12,10 @@
 #include "fxjs/include/cfxjse_value.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/include/cxfa_eventparam.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_nodehelper.h"
 #include "xfa/fxfa/parser/cxfa_resolveprocessor.h"
 #include "xfa/fxfa/parser/xfa_basic_data.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
diff --git a/xfa/fxfa/parser/cxfa_scriptcontext.h b/xfa/fxfa/parser/cxfa_scriptcontext.h
index f062790..a6737e6 100644
--- a/xfa/fxfa/parser/cxfa_scriptcontext.h
+++ b/xfa/fxfa/parser/cxfa_scriptcontext.h
@@ -14,7 +14,7 @@
 #include "fxjs/include/cfxjse_arguments.h"
 #include "xfa/fxfa/fm2js/xfa_fm2jscontext.h"
 #include "xfa/fxfa/include/cxfa_eventparam.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
 
 #define XFA_RESOLVENODE_TagName 0x0002
diff --git a/xfa/fxfa/parser/cxfa_simple_parser.cpp b/xfa/fxfa/parser/cxfa_simple_parser.cpp
index 043c56a..1a773d6 100644
--- a/xfa/fxfa/parser/cxfa_simple_parser.cpp
+++ b/xfa/fxfa/parser/cxfa_simple_parser.cpp
@@ -10,10 +10,10 @@
 #include "xfa/fgas/crt/fgas_codepage.h"
 #include "xfa/fxfa/include/fxfa.h"
 #include "xfa/fxfa/include/xfa_checksum.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_widetextread.h"
 #include "xfa/fxfa/parser/cxfa_xml_parser.h"
 #include "xfa/fxfa/parser/xfa_basic_data.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
 namespace {
diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp
index ae3fece..07f0ebb 100644
--- a/xfa/fxfa/parser/cxfa_widgetdata.cpp
+++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp
@@ -9,9 +9,9 @@
 #include "core/fxcrt/include/fx_ext.h"
 #include "xfa/fxbarcode/include/BC_Library.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_event.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localevalue.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 
diff --git a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
index 19b0698..11a44b9 100644
--- a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
+++ b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
@@ -8,10 +8,10 @@
 
 #include "core/fxcrt/include/fx_ext.h"
 #include "xfa/fde/xml/fde_xml_imp.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 #include "xfa/fxfa/parser/cxfa_occur.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
diff --git a/xfa/fxfa/parser/xfa_document_serialize.cpp b/xfa/fxfa/parser/xfa_document_serialize.cpp
index a524c73..ae30165 100644
--- a/xfa/fxfa/parser/xfa_document_serialize.cpp
+++ b/xfa/fxfa/parser/xfa_document_serialize.cpp
@@ -8,8 +8,8 @@
 
 #include "xfa/fde/xml/fde_xml_imp.h"
 #include "xfa/fgas/crt/fgas_codepage.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_simple_parser.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/xfa_layout_appadapter.cpp b/xfa/fxfa/parser/xfa_layout_appadapter.cpp
index 3dc9b5f..fdf9a27 100644
--- a/xfa/fxfa/parser/xfa_layout_appadapter.cpp
+++ b/xfa/fxfa/parser/xfa_layout_appadapter.cpp
@@ -7,7 +7,7 @@
 #include "xfa/fxfa/parser/xfa_layout_appadapter.h"
 
 #include "xfa/fxfa/app/xfa_ffnotify.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h"
 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
diff --git a/xfa/fxfa/parser/xfa_layout_itemlayout.cpp b/xfa/fxfa/parser/xfa_layout_itemlayout.cpp
index 99432d8..2a467a5 100644
--- a/xfa/fxfa/parser/xfa_layout_itemlayout.cpp
+++ b/xfa/fxfa/parser/xfa_layout_itemlayout.cpp
@@ -10,9 +10,9 @@
 #include <memory>
 
 #include "xfa/fxfa/app/xfa_ffnotify.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_occur.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_layout_appadapter.h"
 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
diff --git a/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp b/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp
index 779e783..914ce6f 100644
--- a/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp
+++ b/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp
@@ -7,11 +7,11 @@
 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
 
 #include "xfa/fxfa/app/xfa_ffnotify.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
 #include "xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h"
 #include "xfa/fxfa/parser/xfa_layout_appadapter.h"
 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h"
diff --git a/xfa/fxfa/parser/xfa_locale.cpp b/xfa/fxfa/parser/xfa_locale.cpp
index 48e0f1e..67a9760 100644
--- a/xfa/fxfa/parser/xfa_locale.cpp
+++ b/xfa/fxfa/parser/xfa_locale.cpp
@@ -7,7 +7,7 @@
 #include "xfa/fxfa/parser/xfa_locale.h"
 
 #include "core/fxcrt/include/fx_xml.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/xfa_localemgr.cpp b/xfa/fxfa/parser/xfa_localemgr.cpp
index 4b80f3e..24f240d 100644
--- a/xfa/fxfa/parser/xfa_localemgr.cpp
+++ b/xfa/fxfa/parser/xfa_localemgr.cpp
@@ -9,7 +9,7 @@
 #include "core/fxcodec/include/fx_codec.h"
 #include "core/fxcrt/include/fx_xml.h"
 #include "core/fxge/include/fx_ge.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_locale.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/xfa_localevalue.cpp b/xfa/fxfa/parser/xfa_localevalue.cpp
index 0ec38d5..0324c56 100644
--- a/xfa/fxfa/parser/xfa_localevalue.cpp
+++ b/xfa/fxfa/parser/xfa_localevalue.cpp
@@ -8,7 +8,7 @@
 
 #include "core/fxcrt/include/fx_ext.h"
 #include "xfa/fgas/localization/fgas_localeimp.h"
-#include "xfa/fxfa/parser/xfa_document.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_object.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/xfa_utils_imp.cpp b/xfa/fxfa/parser/xfa_utils_imp.cpp
index 064ef6c..da5b685 100644
--- a/xfa/fxfa/parser/xfa_utils_imp.cpp
+++ b/xfa/fxfa/parser/xfa_utils_imp.cpp
@@ -8,9 +8,9 @@
 
 #include "core/fxcrt/include/fx_ext.h"
 #include "xfa/fde/xml/fde_xml_imp.h"
+#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_measurement.h"
 #include "xfa/fxfa/parser/xfa_basic_data.h"
-#include "xfa/fxfa/parser/xfa_document.h"
 #include "xfa/fxfa/parser/xfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_localevalue.h"
 #include "xfa/fxfa/parser/xfa_object.h"