diff --git a/xfa/fxfa/parser/xfa_document_imp.cpp b/xfa/fxfa/parser/xfa_document_imp.cpp
index 4c8b4db..382fd7d 100644
--- a/xfa/fxfa/parser/xfa_document_imp.cpp
+++ b/xfa/fxfa/parser/xfa_document_imp.cpp
@@ -160,8 +160,9 @@
 
   const XFA_ELEMENTINFO* pElement = XFA_GetElementByID(eElement);
   if (pElement && (pElement->dwPackets & pPacket->eName)) {
-    CXFA_Node* pNode = new CXFA_Node(this, pPacket->eName,
-                                     pElement->eObjectType, pElement->eName);
+    CXFA_Node* pNode =
+        new CXFA_Node(this, pPacket->eName, pElement->eObjectType,
+                      pElement->eName, pElement->pName);
     AddPurgeNode(pNode);
     return pNode;
   }
diff --git a/xfa/fxfa/parser/xfa_object.h b/xfa/fxfa/parser/xfa_object.h
index 268d5c4..08eedee 100644
--- a/xfa/fxfa/parser/xfa_object.h
+++ b/xfa/fxfa/parser/xfa_object.h
@@ -48,7 +48,8 @@
  public:
   CXFA_Object(CXFA_Document* pDocument,
               XFA_ObjectType objectType,
-              XFA_Element eType);
+              XFA_Element eType,
+              const CFX_WideStringC& elementName);
   ~CXFA_Object() override;
 
   CXFA_Document* GetDocument() const { return m_pDocument; }
@@ -95,6 +96,9 @@
   CXFA_Document* const m_pDocument;
   const XFA_ObjectType m_objectType;
   const XFA_Element m_elementType;
+
+  const uint32_t m_elementNameHash;
+  const CFX_WideStringC m_elementName;
 };
 using CXFA_ObjArray = CFX_ArrayTemplate<CXFA_Object*>;
 
@@ -619,7 +623,8 @@
   CXFA_Node(CXFA_Document* pDoc,
             uint16_t ePacket,
             XFA_ObjectType oType,
-            XFA_Element eType);
+            XFA_Element eType,
+            const CFX_WideStringC& elementName);
   ~CXFA_Node() override;
 
   bool HasFlag(XFA_NodeFlag dwFlag) const;
diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp
index e3d9f6b..a9a5b29 100644
--- a/xfa/fxfa/parser/xfa_object_imp.cpp
+++ b/xfa/fxfa/parser/xfa_object_imp.cpp
@@ -53,19 +53,22 @@
 
 CXFA_Object::CXFA_Object(CXFA_Document* pDocument,
                          XFA_ObjectType objectType,
-                         XFA_Element elementType)
+                         XFA_Element elementType,
+                         const CFX_WideStringC& elementName)
     : m_pDocument(pDocument),
       m_objectType(objectType),
-      m_elementType(elementType) {}
+      m_elementType(elementType),
+      m_elementNameHash(FX_HashCode_GetW(elementName, false)),
+      m_elementName(elementName) {}
 
 CXFA_Object::~CXFA_Object() {}
 
 CFX_WideStringC CXFA_Object::GetClassName() const {
-  return XFA_GetElementByID(GetElementType())->pName;
+  return m_elementName;
 }
 
 uint32_t CXFA_Object::GetClassHashCode() const {
-  return XFA_GetElementByID(GetElementType())->uHash;
+  return m_elementNameHash;
 }
 
 XFA_Element CXFA_Object::GetElementType() const {
@@ -105,8 +108,9 @@
 CXFA_Node::CXFA_Node(CXFA_Document* pDoc,
                      uint16_t ePacket,
                      XFA_ObjectType oType,
-                     XFA_Element eType)
-    : CXFA_Object(pDoc, oType, eType),
+                     XFA_Element eType,
+                     const CFX_WideStringC& elementName)
+    : CXFA_Object(pDoc, oType, eType, elementName),
       m_pNext(nullptr),
       m_pChild(nullptr),
       m_pLastChild(nullptr),
@@ -5066,7 +5070,8 @@
 CXFA_ThisProxy::CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode)
     : CXFA_Object(pThisNode->GetDocument(),
                   XFA_ObjectType::VariablesThis,
-                  XFA_Element::Unknown),
+                  XFA_Element::Unknown,
+                  CFX_WideStringC()),
       m_pThisNode(nullptr),
       m_pScriptNode(nullptr) {
   m_pThisNode = pThisNode;
@@ -5084,7 +5089,10 @@
 }
 
 CXFA_NodeList::CXFA_NodeList(CXFA_Document* pDocument)
-    : CXFA_Object(pDocument, XFA_ObjectType::NodeList, XFA_Element::NodeList) {
+    : CXFA_Object(pDocument,
+                  XFA_ObjectType::NodeList,
+                  XFA_Element::NodeList,
+                  CFX_WideStringC(L"nodeList")) {
   m_pDocument->GetScriptContext()->AddToCacheList(
       std::unique_ptr<CXFA_NodeList>(this));
 }
diff --git a/xfa/fxfa/parser/xfa_script_datawindow.cpp b/xfa/fxfa/parser/xfa_script_datawindow.cpp
index e953206..aa399b7 100644
--- a/xfa/fxfa/parser/xfa_script_datawindow.cpp
+++ b/xfa/fxfa/parser/xfa_script_datawindow.cpp
@@ -15,7 +15,10 @@
 #include "xfa/fxfa/parser/xfa_utils.h"
 
 CScript_DataWindow::CScript_DataWindow(CXFA_Document* pDocument)
-    : CXFA_Object(pDocument, XFA_ObjectType::Object, XFA_Element::DataWindow) {}
+    : CXFA_Object(pDocument,
+                  XFA_ObjectType::Object,
+                  XFA_Element::DataWindow,
+                  CFX_WideStringC(L"dataWindow")) {}
 
 CScript_DataWindow::~CScript_DataWindow() {}
 
diff --git a/xfa/fxfa/parser/xfa_script_eventpseudomodel.cpp b/xfa/fxfa/parser/xfa_script_eventpseudomodel.cpp
index 507aef3..de4b7ae 100644
--- a/xfa/fxfa/parser/xfa_script_eventpseudomodel.cpp
+++ b/xfa/fxfa/parser/xfa_script_eventpseudomodel.cpp
@@ -51,7 +51,8 @@
 CScript_EventPseudoModel::CScript_EventPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
-                  XFA_Element::EventPseudoModel) {}
+                  XFA_Element::EventPseudoModel,
+                  CFX_WideStringC(L"eventPseudoModel")) {}
 
 CScript_EventPseudoModel::~CScript_EventPseudoModel() {}
 
diff --git a/xfa/fxfa/parser/xfa_script_hostpseudomodel.cpp b/xfa/fxfa/parser/xfa_script_hostpseudomodel.cpp
index 2ede85e..9153761 100644
--- a/xfa/fxfa/parser/xfa_script_hostpseudomodel.cpp
+++ b/xfa/fxfa/parser/xfa_script_hostpseudomodel.cpp
@@ -28,8 +28,11 @@
 CScript_HostPseudoModel::CScript_HostPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
-                  XFA_Element::HostPseudoModel) {}
+                  XFA_Element::HostPseudoModel,
+                  CFX_WideStringC(L"hostPseudoModel")) {}
+
 CScript_HostPseudoModel::~CScript_HostPseudoModel() {}
+
 void CScript_HostPseudoModel::LoadString(CFXJSE_Value* pValue,
                                          CXFA_FFNotify* pNotify,
                                          uint32_t dwFlag) {
diff --git a/xfa/fxfa/parser/xfa_script_layoutpseudomodel.cpp b/xfa/fxfa/parser/xfa_script_layoutpseudomodel.cpp
index 977b83f..4a64af9 100644
--- a/xfa/fxfa/parser/xfa_script_layoutpseudomodel.cpp
+++ b/xfa/fxfa/parser/xfa_script_layoutpseudomodel.cpp
@@ -24,8 +24,11 @@
 CScript_LayoutPseudoModel::CScript_LayoutPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
-                  XFA_Element::LayoutPseudoModel) {}
+                  XFA_Element::LayoutPseudoModel,
+                  CFX_WideStringC(L"layoutPseudoModel")) {}
+
 CScript_LayoutPseudoModel::~CScript_LayoutPseudoModel() {}
+
 void CScript_LayoutPseudoModel::Ready(CFXJSE_Value* pValue,
                                       FX_BOOL bSetting,
                                       XFA_ATTRIBUTE eAttribute) {
diff --git a/xfa/fxfa/parser/xfa_script_logpseudomodel.cpp b/xfa/fxfa/parser/xfa_script_logpseudomodel.cpp
index 57909cd..4abed33 100644
--- a/xfa/fxfa/parser/xfa_script_logpseudomodel.cpp
+++ b/xfa/fxfa/parser/xfa_script_logpseudomodel.cpp
@@ -17,10 +17,17 @@
 CScript_LogPseudoModel::CScript_LogPseudoModel(CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
-                  XFA_Element::LogPseudoModel) {}
+                  XFA_Element::LogPseudoModel,
+                  CFX_WideStringC(L"logPseudoModel")) {}
+
 CScript_LogPseudoModel::~CScript_LogPseudoModel() {}
+
 void CScript_LogPseudoModel::Message(CFXJSE_Arguments* pArguments) {}
+
 void CScript_LogPseudoModel::TraceEnabled(CFXJSE_Arguments* pArguments) {}
+
 void CScript_LogPseudoModel::TraceActivate(CFXJSE_Arguments* pArguments) {}
+
 void CScript_LogPseudoModel::TraceDeactivate(CFXJSE_Arguments* pArguments) {}
+
 void CScript_LogPseudoModel::Trace(CFXJSE_Arguments* pArguments) {}
diff --git a/xfa/fxfa/parser/xfa_script_signaturepseudomodel.cpp b/xfa/fxfa/parser/xfa_script_signaturepseudomodel.cpp
index 0341fc1..95b9a36 100644
--- a/xfa/fxfa/parser/xfa_script_signaturepseudomodel.cpp
+++ b/xfa/fxfa/parser/xfa_script_signaturepseudomodel.cpp
@@ -20,8 +20,11 @@
     CXFA_Document* pDocument)
     : CXFA_Object(pDocument,
                   XFA_ObjectType::Object,
-                  XFA_Element::SignaturePseudoModel) {}
+                  XFA_Element::SignaturePseudoModel,
+                  CFX_WideStringC(L"signaturePseudoModel")) {}
+
 CScript_SignaturePseudoModel::~CScript_SignaturePseudoModel() {}
+
 void CScript_SignaturePseudoModel::Verify(CFXJSE_Arguments* pArguments) {
   int32_t iLength = pArguments->GetLength();
   if (iLength < 1 || iLength > 4) {
@@ -42,6 +45,7 @@
   if (pValue)
     pValue->SetInteger(bVerify);
 }
+
 void CScript_SignaturePseudoModel::Sign(CFXJSE_Arguments* pArguments) {
   int32_t iLength = pArguments->GetLength();
   if (iLength < 3 || iLength > 7) {
@@ -73,6 +77,7 @@
   if (pValue)
     pValue->SetBoolean(bSign);
 }
+
 void CScript_SignaturePseudoModel::Enumerate(CFXJSE_Arguments* pArguments) {
   int32_t iLength = pArguments->GetLength();
   if (iLength != 0) {
@@ -90,6 +95,7 @@
   pArguments->GetReturnValue()->Assign(
       m_pDocument->GetScriptContext()->GetJSValueFromMap(pList));
 }
+
 void CScript_SignaturePseudoModel::Clear(CFXJSE_Arguments* pArguments) {
   int32_t iLength = pArguments->GetLength();
   if (iLength < 1 || iLength > 2) {
