diff --git a/fxjs/BUILD.gn b/fxjs/BUILD.gn
index cb0dd1b..cf5f732 100644
--- a/fxjs/BUILD.gn
+++ b/fxjs/BUILD.gn
@@ -139,20 +139,10 @@
         "xfa/cfxjse_value.h",
         "xfa/cjx_boolean.cpp",
         "xfa/cjx_boolean.h",
-        "xfa/cjx_comb.cpp",
-        "xfa/cjx_comb.h",
         "xfa/cjx_container.cpp",
         "xfa/cjx_container.h",
-        "xfa/cjx_datavalue.cpp",
-        "xfa/cjx_datavalue.h",
         "xfa/cjx_datawindow.cpp",
         "xfa/cjx_datawindow.h",
-        "xfa/cjx_date.cpp",
-        "xfa/cjx_date.h",
-        "xfa/cjx_datetime.cpp",
-        "xfa/cjx_datetime.h",
-        "xfa/cjx_decimal.cpp",
-        "xfa/cjx_decimal.h",
         "xfa/cjx_delta.cpp",
         "xfa/cjx_delta.h",
         "xfa/cjx_desc.cpp",
@@ -165,14 +155,10 @@
         "xfa/cjx_eventpseudomodel.h",
         "xfa/cjx_exclgroup.cpp",
         "xfa/cjx_exclgroup.h",
-        "xfa/cjx_exdata.cpp",
-        "xfa/cjx_exdata.h",
         "xfa/cjx_extras.cpp",
         "xfa/cjx_extras.h",
         "xfa/cjx_field.cpp",
         "xfa/cjx_field.h",
-        "xfa/cjx_float.cpp",
-        "xfa/cjx_float.h",
         "xfa/cjx_form.cpp",
         "xfa/cjx_form.h",
         "xfa/cjx_handler.cpp",
@@ -181,8 +167,6 @@
         "xfa/cjx_hostpseudomodel.h",
         "xfa/cjx_instancemanager.cpp",
         "xfa/cjx_instancemanager.h",
-        "xfa/cjx_integer.cpp",
-        "xfa/cjx_integer.h",
         "xfa/cjx_layoutpseudomodel.cpp",
         "xfa/cjx_layoutpseudomodel.h",
         "xfa/cjx_list.cpp",
@@ -201,8 +185,6 @@
         "xfa/cjx_occur.h",
         "xfa/cjx_packet.cpp",
         "xfa/cjx_packet.h",
-        "xfa/cjx_picture.cpp",
-        "xfa/cjx_picture.h",
         "xfa/cjx_script.cpp",
         "xfa/cjx_script.h",
         "xfa/cjx_signaturepseudomodel.cpp",
@@ -215,18 +197,12 @@
         "xfa/cjx_subformset.h",
         "xfa/cjx_template.cpp",
         "xfa/cjx_template.h",
-        "xfa/cjx_text.cpp",
-        "xfa/cjx_text.h",
         "xfa/cjx_textnode.cpp",
         "xfa/cjx_textnode.h",
-        "xfa/cjx_time.cpp",
-        "xfa/cjx_time.h",
         "xfa/cjx_tree.cpp",
         "xfa/cjx_tree.h",
         "xfa/cjx_treelist.cpp",
         "xfa/cjx_treelist.h",
-        "xfa/cjx_value.cpp",
-        "xfa/cjx_value.h",
         "xfa/cjx_wsdlconnection.cpp",
         "xfa/cjx_wsdlconnection.h",
         "xfa/cjx_xfa.cpp",
diff --git a/fxjs/xfa/cjx_comb.cpp b/fxjs/xfa/cjx_comb.cpp
deleted file mode 100644
index 2541822..0000000
--- a/fxjs/xfa/cjx_comb.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_comb.h"
-
-#include "xfa/fxfa/parser/cxfa_comb.h"
-
-CJX_Comb::CJX_Comb(CXFA_Comb* node) : CJX_Node(node) {}
-
-CJX_Comb::~CJX_Comb() = default;
-
-bool CJX_Comb::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Comb::numberOfCells(CFXJSE_Value* pValue,
-                             bool bSetting,
-                             XFA_Attribute eAttribute) {
-  ScriptAttributeInteger(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_comb.h b/fxjs/xfa/cjx_comb.h
deleted file mode 100644
index d7573ff..0000000
--- a/fxjs/xfa/cjx_comb.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_COMB_H_
-#define FXJS_XFA_CJX_COMB_H_
-
-#include "fxjs/xfa/cjx_node.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Comb;
-
-class CJX_Comb final : public CJX_Node {
- public:
-  explicit CJX_Comb(CXFA_Comb* node);
-  ~CJX_Comb() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(numberOfCells);
-
- private:
-  using Type__ = CJX_Comb;
-  using ParentType__ = CJX_Node;
-
-  static const TypeTag static_type__ = TypeTag::Comb;
-};
-
-#endif  // FXJS_XFA_CJX_COMB_H_
diff --git a/fxjs/xfa/cjx_datavalue.cpp b/fxjs/xfa/cjx_datavalue.cpp
deleted file mode 100644
index 0d92ec4..0000000
--- a/fxjs/xfa/cjx_datavalue.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_datavalue.h"
-
-#include "xfa/fxfa/parser/cxfa_datavalue.h"
-
-CJX_DataValue::CJX_DataValue(CXFA_DataValue* node) : CJX_Node(node) {}
-
-CJX_DataValue::~CJX_DataValue() = default;
-
-bool CJX_DataValue::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_DataValue::defaultValue(CFXJSE_Value* pValue,
-                                 bool bSetting,
-                                 XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_DataValue::value(CFXJSE_Value* pValue,
-                          bool bSetting,
-                          XFA_Attribute eAttribute) {
-  defaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_DataValue::isNull(CFXJSE_Value* pValue,
-                           bool bSetting,
-                           XFA_Attribute eAttribute) {
-  ScriptAttributeBool(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_datavalue.h b/fxjs/xfa/cjx_datavalue.h
deleted file mode 100644
index 3ff1a48..0000000
--- a/fxjs/xfa/cjx_datavalue.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_DATAVALUE_H_
-#define FXJS_XFA_CJX_DATAVALUE_H_
-
-#include "fxjs/xfa/cjx_node.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_DataValue;
-
-class CJX_DataValue final : public CJX_Node {
- public:
-  explicit CJX_DataValue(CXFA_DataValue* node);
-  ~CJX_DataValue() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(isNull);
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_DataValue;
-  using ParentType__ = CJX_Node;
-
-  static const TypeTag static_type__ = TypeTag::DataValue;
-};
-
-#endif  // FXJS_XFA_CJX_DATAVALUE_H_
diff --git a/fxjs/xfa/cjx_date.cpp b/fxjs/xfa/cjx_date.cpp
deleted file mode 100644
index 45df800..0000000
--- a/fxjs/xfa/cjx_date.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_date.h"
-
-#include "xfa/fxfa/parser/cxfa_date.h"
-
-CJX_Date::CJX_Date(CXFA_Date* node) : CJX_Object(node) {}
-
-CJX_Date::~CJX_Date() = default;
-
-bool CJX_Date::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Date::defaultValue(CFXJSE_Value* pValue,
-                            bool bSetting,
-                            XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Date::value(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  defaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_date.h b/fxjs/xfa/cjx_date.h
deleted file mode 100644
index f8dd60f..0000000
--- a/fxjs/xfa/cjx_date.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_DATE_H_
-#define FXJS_XFA_CJX_DATE_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Date;
-
-class CJX_Date final : public CJX_Object {
- public:
-  explicit CJX_Date(CXFA_Date* node);
-  ~CJX_Date() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Date;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::Date;
-};
-
-#endif  // FXJS_XFA_CJX_DATE_H_
diff --git a/fxjs/xfa/cjx_datetime.cpp b/fxjs/xfa/cjx_datetime.cpp
deleted file mode 100644
index 252386f..0000000
--- a/fxjs/xfa/cjx_datetime.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_datetime.h"
-
-#include "xfa/fxfa/parser/cxfa_datetime.h"
-
-CJX_DateTime::CJX_DateTime(CXFA_DateTime* node) : CJX_Node(node) {}
-
-CJX_DateTime::~CJX_DateTime() = default;
-
-bool CJX_DateTime::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_DateTime::defaultValue(CFXJSE_Value* pValue,
-                                bool bSetting,
-                                XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_DateTime::value(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_datetime.h b/fxjs/xfa/cjx_datetime.h
deleted file mode 100644
index a070fe5..0000000
--- a/fxjs/xfa/cjx_datetime.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_DATETIME_H_
-#define FXJS_XFA_CJX_DATETIME_H_
-
-#include "fxjs/xfa/cjx_node.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_DateTime;
-
-class CJX_DateTime final : public CJX_Node {
- public:
-  explicit CJX_DateTime(CXFA_DateTime* node);
-  ~CJX_DateTime() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_DateTime;
-  using ParentType__ = CJX_Node;
-
-  static const TypeTag static_type__ = TypeTag::DateTime;
-};
-
-#endif  // FXJS_XFA_CJX_DATETIME_H_
diff --git a/fxjs/xfa/cjx_decimal.cpp b/fxjs/xfa/cjx_decimal.cpp
deleted file mode 100644
index 1539fc6..0000000
--- a/fxjs/xfa/cjx_decimal.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_decimal.h"
-
-#include "xfa/fxfa/parser/cxfa_decimal.h"
-
-CJX_Decimal::CJX_Decimal(CXFA_Decimal* node) : CJX_Object(node) {}
-
-CJX_Decimal::~CJX_Decimal() = default;
-
-bool CJX_Decimal::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Decimal::defaultValue(CFXJSE_Value* pValue,
-                               bool bSetting,
-                               XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Decimal::value(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_decimal.h b/fxjs/xfa/cjx_decimal.h
deleted file mode 100644
index f756147..0000000
--- a/fxjs/xfa/cjx_decimal.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_DECIMAL_H_
-#define FXJS_XFA_CJX_DECIMAL_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Decimal;
-
-class CJX_Decimal final : public CJX_Object {
- public:
-  explicit CJX_Decimal(CXFA_Decimal* node);
-  ~CJX_Decimal() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Decimal;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::Decimal;
-};
-
-#endif  // FXJS_XFA_CJX_DECIMAL_H_
diff --git a/fxjs/xfa/cjx_exdata.cpp b/fxjs/xfa/cjx_exdata.cpp
deleted file mode 100644
index 68ed582..0000000
--- a/fxjs/xfa/cjx_exdata.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_exdata.h"
-
-#include "xfa/fxfa/parser/cxfa_exdata.h"
-
-CJX_ExData::CJX_ExData(CXFA_ExData* node) : CJX_Object(node) {}
-
-CJX_ExData::~CJX_ExData() = default;
-
-bool CJX_ExData::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_ExData::defaultValue(CFXJSE_Value* pValue,
-                              bool bSetting,
-                              XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_exdata.h b/fxjs/xfa/cjx_exdata.h
deleted file mode 100644
index 9a5c2f3..0000000
--- a/fxjs/xfa/cjx_exdata.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_EXDATA_H_
-#define FXJS_XFA_CJX_EXDATA_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_ExData;
-
-class CJX_ExData final : public CJX_Object {
- public:
-  explicit CJX_ExData(CXFA_ExData* node);
-  ~CJX_ExData() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-
- private:
-  using Type__ = CJX_ExData;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::ExData;
-};
-
-#endif  // FXJS_XFA_CJX_EXDATA_H_
diff --git a/fxjs/xfa/cjx_float.cpp b/fxjs/xfa/cjx_float.cpp
deleted file mode 100644
index 27670dc..0000000
--- a/fxjs/xfa/cjx_float.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_float.h"
-
-#include "xfa/fxfa/parser/cxfa_float.h"
-
-CJX_Float::CJX_Float(CXFA_Float* node) : CJX_Object(node) {}
-
-CJX_Float::~CJX_Float() = default;
-
-bool CJX_Float::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Float::defaultValue(CFXJSE_Value* pValue,
-                             bool bSetting,
-                             XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Float::value(CFXJSE_Value* pValue,
-                      bool bSetting,
-                      XFA_Attribute eAttribute) {
-  defaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_float.h b/fxjs/xfa/cjx_float.h
deleted file mode 100644
index da10465..0000000
--- a/fxjs/xfa/cjx_float.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_FLOAT_H_
-#define FXJS_XFA_CJX_FLOAT_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Float;
-
-class CJX_Float final : public CJX_Object {
- public:
-  explicit CJX_Float(CXFA_Float* node);
-  ~CJX_Float() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Float;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::Float;
-};
-
-#endif  // FXJS_XFA_CJX_FLOAT_H_
diff --git a/fxjs/xfa/cjx_integer.cpp b/fxjs/xfa/cjx_integer.cpp
deleted file mode 100644
index d2fc180..0000000
--- a/fxjs/xfa/cjx_integer.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_integer.h"
-
-#include "xfa/fxfa/parser/cxfa_integer.h"
-
-CJX_Integer::CJX_Integer(CXFA_Integer* node) : CJX_Object(node) {}
-
-CJX_Integer::~CJX_Integer() = default;
-
-bool CJX_Integer::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Integer::defaultValue(CFXJSE_Value* pValue,
-                               bool bSetting,
-                               XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Integer::value(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  defaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_integer.h b/fxjs/xfa/cjx_integer.h
deleted file mode 100644
index 7f4265b..0000000
--- a/fxjs/xfa/cjx_integer.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_INTEGER_H_
-#define FXJS_XFA_CJX_INTEGER_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Integer;
-
-class CJX_Integer final : public CJX_Object {
- public:
-  explicit CJX_Integer(CXFA_Integer* node);
-  ~CJX_Integer() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Integer;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::Integer;
-};
-
-#endif  // FXJS_XFA_CJX_INTEGER_H_
diff --git a/fxjs/xfa/cjx_picture.cpp b/fxjs/xfa/cjx_picture.cpp
deleted file mode 100644
index d82972a..0000000
--- a/fxjs/xfa/cjx_picture.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_picture.h"
-
-#include "xfa/fxfa/parser/cxfa_picture.h"
-
-CJX_Picture::CJX_Picture(CXFA_Picture* node) : CJX_Node(node) {}
-
-CJX_Picture::~CJX_Picture() = default;
-
-bool CJX_Picture::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Picture::defaultValue(CFXJSE_Value* pValue,
-                               bool bSetting,
-                               XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Picture::value(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_picture.h b/fxjs/xfa/cjx_picture.h
deleted file mode 100644
index 3e88e23..0000000
--- a/fxjs/xfa/cjx_picture.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_PICTURE_H_
-#define FXJS_XFA_CJX_PICTURE_H_
-
-#include "fxjs/xfa/cjx_node.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Picture;
-
-class CJX_Picture final : public CJX_Node {
- public:
-  explicit CJX_Picture(CXFA_Picture* node);
-  ~CJX_Picture() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Picture;
-  using ParentType__ = CJX_Node;
-
-  static const TypeTag static_type__ = TypeTag::Picture;
-};
-
-#endif  // FXJS_XFA_CJX_PICTURE_H_
diff --git a/fxjs/xfa/cjx_subform.cpp b/fxjs/xfa/cjx_subform.cpp
index 4a5d00d..979e3a7 100644
--- a/fxjs/xfa/cjx_subform.cpp
+++ b/fxjs/xfa/cjx_subform.cpp
@@ -135,12 +135,6 @@
       GetDocument()->GetScriptContext()->GetJSValueFromMap(pInstanceMgr));
 }
 
-void CJX_Subform::layout(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Subform::validationMessage(CFXJSE_Value* pValue,
                                     bool bSetting,
                                     XFA_Attribute eAttribute) {
diff --git a/fxjs/xfa/cjx_subform.h b/fxjs/xfa/cjx_subform.h
index c921aa8..77dda08 100644
--- a/fxjs/xfa/cjx_subform.h
+++ b/fxjs/xfa/cjx_subform.h
@@ -27,7 +27,6 @@
 
   JSE_PROP(instanceIndex);
   JSE_PROP(instanceManager);
-  JSE_PROP(layout);
   JSE_PROP(locale);
   JSE_PROP(validationMessage);
 
diff --git a/fxjs/xfa/cjx_text.cpp b/fxjs/xfa/cjx_text.cpp
deleted file mode 100644
index ed2748c..0000000
--- a/fxjs/xfa/cjx_text.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_text.h"
-
-#include "xfa/fxfa/parser/cxfa_text.h"
-
-CJX_Text::CJX_Text(CXFA_Text* node) : CJX_Object(node) {}
-
-CJX_Text::~CJX_Text() = default;
-
-bool CJX_Text::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Text::defaultValue(CFXJSE_Value* pValue,
-                            bool bSetting,
-                            XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Text::value(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_text.h b/fxjs/xfa/cjx_text.h
deleted file mode 100644
index f8c3a9a..0000000
--- a/fxjs/xfa/cjx_text.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_TEXT_H_
-#define FXJS_XFA_CJX_TEXT_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Text;
-
-class CJX_Text final : public CJX_Object {
- public:
-  explicit CJX_Text(CXFA_Text* node);
-  ~CJX_Text() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Text;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::Text;
-};
-
-#endif  // FXJS_XFA_CJX_TEXT_H_
diff --git a/fxjs/xfa/cjx_time.cpp b/fxjs/xfa/cjx_time.cpp
deleted file mode 100644
index 99c785b..0000000
--- a/fxjs/xfa/cjx_time.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_time.h"
-
-#include "xfa/fxfa/parser/cxfa_time.h"
-
-CJX_Time::CJX_Time(CXFA_Time* node) : CJX_Object(node) {}
-
-CJX_Time::~CJX_Time() = default;
-
-bool CJX_Time::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Time::defaultValue(CFXJSE_Value* pValue,
-                            bool bSetting,
-                            XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
-
-void CJX_Time::value(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptSomDefaultValue(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_time.h b/fxjs/xfa/cjx_time.h
deleted file mode 100644
index 9efa894..0000000
--- a/fxjs/xfa/cjx_time.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_TIME_H_
-#define FXJS_XFA_CJX_TIME_H_
-
-#include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Time;
-
-class CJX_Time final : public CJX_Object {
- public:
-  explicit CJX_Time(CXFA_Time* node);
-  ~CJX_Time() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(value);
-
- private:
-  using Type__ = CJX_Time;
-  using ParentType__ = CJX_Object;
-
-  static const TypeTag static_type__ = TypeTag::Time;
-};
-
-#endif  // FXJS_XFA_CJX_TIME_H_
diff --git a/fxjs/xfa/cjx_value.cpp b/fxjs/xfa/cjx_value.cpp
deleted file mode 100644
index b5bf7f9..0000000
--- a/fxjs/xfa/cjx_value.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fxjs/xfa/cjx_value.h"
-
-#include "xfa/fxfa/parser/cxfa_value.h"
-
-CJX_Value::CJX_Value(CXFA_Value* node) : CJX_Node(node) {}
-
-CJX_Value::~CJX_Value() = default;
-
-bool CJX_Value::DynamicTypeIs(TypeTag eType) const {
-  return eType == static_type__ || ParentType__::DynamicTypeIs(eType);
-}
-
-void CJX_Value::override(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeBool(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_value.h b/fxjs/xfa/cjx_value.h
deleted file mode 100644
index ddc3ef2..0000000
--- a/fxjs/xfa/cjx_value.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef FXJS_XFA_CJX_VALUE_H_
-#define FXJS_XFA_CJX_VALUE_H_
-
-#include "fxjs/xfa/cjx_node.h"
-#include "fxjs/xfa/jse_define.h"
-
-class CXFA_Value;
-
-class CJX_Value final : public CJX_Node {
- public:
-  explicit CJX_Value(CXFA_Value* node);
-  ~CJX_Value() override;
-
-  // CJX_Object:
-  bool DynamicTypeIs(TypeTag eType) const override;
-
-  JSE_PROP(override);
-
- private:
-  using Type__ = CJX_Value;
-  using ParentType__ = CJX_Node;
-
-  static const TypeTag static_type__ = TypeTag::Value;
-};
-
-#endif  // FXJS_XFA_CJX_VALUE_H_
diff --git a/xfa/fxfa/parser/cxfa_comb.cpp b/xfa/fxfa/parser/cxfa_comb.cpp
index 2fc03ff..4bd8ac5 100644
--- a/xfa/fxfa/parser/cxfa_comb.cpp
+++ b/xfa/fxfa/parser/cxfa_comb.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_comb.h"
 
-#include "fxjs/xfa/cjx_comb.h"
+#include "fxjs/xfa/cjx_node.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -28,6 +28,6 @@
                 XFA_Element::Comb,
                 {},
                 kCombAttributeData,
-                pdfium::MakeUnique<CJX_Comb>(this)) {}
+                pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_Comb::~CXFA_Comb() {}
diff --git a/xfa/fxfa/parser/cxfa_datavalue.cpp b/xfa/fxfa/parser/cxfa_datavalue.cpp
index 9f2da6d..6e541a4 100644
--- a/xfa/fxfa/parser/cxfa_datavalue.cpp
+++ b/xfa/fxfa/parser/cxfa_datavalue.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_datavalue.h"
 
-#include "fxjs/xfa/cjx_datavalue.h"
+#include "fxjs/xfa/cjx_node.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -30,6 +30,6 @@
                 XFA_Element::DataValue,
                 {},
                 kDataValueAttributeData,
-                pdfium::MakeUnique<CJX_DataValue>(this)) {}
+                pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_DataValue::~CXFA_DataValue() = default;
diff --git a/xfa/fxfa/parser/cxfa_date.cpp b/xfa/fxfa/parser/cxfa_date.cpp
index 2dd8693..9508e65 100644
--- a/xfa/fxfa/parser/cxfa_date.cpp
+++ b/xfa/fxfa/parser/cxfa_date.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_date.h"
 
-#include "fxjs/xfa/cjx_date.h"
+#include "fxjs/xfa/cjx_node.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -28,6 +28,6 @@
                 XFA_Element::Date,
                 {},
                 kDateAttributeData,
-                pdfium::MakeUnique<CJX_Date>(this)) {}
+                pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_Date::~CXFA_Date() = default;
diff --git a/xfa/fxfa/parser/cxfa_datetime.cpp b/xfa/fxfa/parser/cxfa_datetime.cpp
index 250a549..313a469 100644
--- a/xfa/fxfa/parser/cxfa_datetime.cpp
+++ b/xfa/fxfa/parser/cxfa_datetime.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_datetime.h"
 
-#include "fxjs/xfa/cjx_datetime.h"
+#include "fxjs/xfa/cjx_node.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -28,6 +28,6 @@
                 XFA_Element::DateTime,
                 {},
                 kDateTimeAttributeData,
-                pdfium::MakeUnique<CJX_DateTime>(this)) {}
+                pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_DateTime::~CXFA_DateTime() = default;
diff --git a/xfa/fxfa/parser/cxfa_decimal.cpp b/xfa/fxfa/parser/cxfa_decimal.cpp
index de57cd9..93e5e10 100644
--- a/xfa/fxfa/parser/cxfa_decimal.cpp
+++ b/xfa/fxfa/parser/cxfa_decimal.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_decimal.h"
 
-#include "fxjs/xfa/cjx_decimal.h"
+#include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -30,6 +30,6 @@
                 XFA_Element::Decimal,
                 {},
                 kDecimalAttributeData,
-                pdfium::MakeUnique<CJX_Decimal>(this)) {}
+                pdfium::MakeUnique<CJX_Object>(this)) {}
 
 CXFA_Decimal::~CXFA_Decimal() = default;
diff --git a/xfa/fxfa/parser/cxfa_exdata.cpp b/xfa/fxfa/parser/cxfa_exdata.cpp
index 3578f7f..1c2e856 100644
--- a/xfa/fxfa/parser/cxfa_exdata.cpp
+++ b/xfa/fxfa/parser/cxfa_exdata.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_exdata.h"
 
-#include "fxjs/xfa/cjx_exdata.h"
+#include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -34,7 +34,7 @@
                 XFA_Element::ExData,
                 {},
                 kExDataAttributeData,
-                pdfium::MakeUnique<CJX_ExData>(this)) {}
+                pdfium::MakeUnique<CJX_Object>(this)) {}
 
 CXFA_ExData::~CXFA_ExData() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_float.cpp b/xfa/fxfa/parser/cxfa_float.cpp
index 717ee1c..a17341f 100644
--- a/xfa/fxfa/parser/cxfa_float.cpp
+++ b/xfa/fxfa/parser/cxfa_float.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_float.h"
 
-#include "fxjs/xfa/cjx_float.h"
+#include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -28,6 +28,6 @@
                 XFA_Element::Float,
                 {},
                 kFloatAttributeData,
-                pdfium::MakeUnique<CJX_Float>(this)) {}
+                pdfium::MakeUnique<CJX_Object>(this)) {}
 
 CXFA_Float::~CXFA_Float() = default;
diff --git a/xfa/fxfa/parser/cxfa_integer.cpp b/xfa/fxfa/parser/cxfa_integer.cpp
index 168ecac..cf48a25 100644
--- a/xfa/fxfa/parser/cxfa_integer.cpp
+++ b/xfa/fxfa/parser/cxfa_integer.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_integer.h"
 
-#include "fxjs/xfa/cjx_integer.h"
+#include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -29,6 +29,6 @@
                 XFA_Element::Integer,
                 {},
                 kIntegerAttributeData,
-                pdfium::MakeUnique<CJX_Integer>(this)) {}
+                pdfium::MakeUnique<CJX_Object>(this)) {}
 
 CXFA_Integer::~CXFA_Integer() = default;
diff --git a/xfa/fxfa/parser/cxfa_picture.cpp b/xfa/fxfa/parser/cxfa_picture.cpp
index 57508d2..a1005ec 100644
--- a/xfa/fxfa/parser/cxfa_picture.cpp
+++ b/xfa/fxfa/parser/cxfa_picture.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_picture.h"
 
-#include "fxjs/xfa/cjx_picture.h"
+#include "fxjs/xfa/cjx_node.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -30,6 +30,6 @@
           XFA_Element::Picture,
           {},
           kPictureAttributeData,
-          pdfium::MakeUnique<CJX_Picture>(this)) {}
+          pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_Picture::~CXFA_Picture() = default;
diff --git a/xfa/fxfa/parser/cxfa_text.cpp b/xfa/fxfa/parser/cxfa_text.cpp
index ab6c359..bb921a0 100644
--- a/xfa/fxfa/parser/cxfa_text.cpp
+++ b/xfa/fxfa/parser/cxfa_text.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_text.h"
 
-#include "fxjs/xfa/cjx_text.h"
+#include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -31,7 +31,7 @@
                 XFA_Element::Text,
                 {},
                 kTextAttributeData,
-                pdfium::MakeUnique<CJX_Text>(this)) {}
+                pdfium::MakeUnique<CJX_Object>(this)) {}
 
 CXFA_Text::~CXFA_Text() = default;
 
diff --git a/xfa/fxfa/parser/cxfa_time.cpp b/xfa/fxfa/parser/cxfa_time.cpp
index 33968a0..ea33713 100644
--- a/xfa/fxfa/parser/cxfa_time.cpp
+++ b/xfa/fxfa/parser/cxfa_time.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/parser/cxfa_time.h"
 
-#include "fxjs/xfa/cjx_time.h"
+#include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -28,6 +28,6 @@
                 XFA_Element::Time,
                 {},
                 kTimeAttributeData,
-                pdfium::MakeUnique<CJX_Time>(this)) {}
+                pdfium::MakeUnique<CJX_Object>(this)) {}
 
 CXFA_Time::~CXFA_Time() = default;
diff --git a/xfa/fxfa/parser/cxfa_value.cpp b/xfa/fxfa/parser/cxfa_value.cpp
index 0458378..979eabc 100644
--- a/xfa/fxfa/parser/cxfa_value.cpp
+++ b/xfa/fxfa/parser/cxfa_value.cpp
@@ -6,8 +6,8 @@
 
 #include "xfa/fxfa/parser/cxfa_value.h"
 
+#include "fxjs/xfa/cjx_node.h"
 #include "fxjs/xfa/cjx_object.h"
-#include "fxjs/xfa/cjx_value.h"
 #include "third_party/base/ptr_util.h"
 #include "xfa/fxfa/parser/cxfa_arc.h"
 #include "xfa/fxfa/parser/cxfa_exdata.h"
@@ -51,7 +51,7 @@
                 XFA_Element::Value,
                 kValuePropertyData,
                 kValueAttributeData,
-                pdfium::MakeUnique<CJX_Value>(this)) {}
+                pdfium::MakeUnique<CJX_Node>(this)) {}
 
 CXFA_Value::~CXFA_Value() = default;
 
diff --git a/xfa/fxfa/parser/element_attributes.inc b/xfa/fxfa/parser/element_attributes.inc
index 4ae7468..2d7de7d 100644
--- a/xfa/fxfa/parser/element_attributes.inc
+++ b/xfa/fxfa/parser/element_attributes.inc
@@ -140,19 +140,19 @@
 ELEM_ATTR____(Hyphenation, RemainCharacterCount, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Hyphenation, ExcludeAllCaps, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Text, MaxChars, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Text, DefaultValue, CJX_Text::defaultValue)
-ELEM_ATTR____(Text, Value, CJX_Text::value)
-ELEM_ATTR____(Time, DefaultValue, CJX_Time::defaultValue)
-ELEM_ATTR____(Time, Value, CJX_Time::value)
+ELEM_ATTR____(Text, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Text, Value, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Time, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Time, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Certificates, Url, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Certificates, CredentialServerPolicy, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Certificates, UrlPolicy, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(EncryptionMethods, Type, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(SetProperty, Connection, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(SetProperty, Target, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(DateTime, DefaultValue, CJX_DateTime::defaultValue)
-ELEM_ATTR____(DateTime, Value, CJX_DateTime::value)
-ELEM_ATTR____(Comb, NumberOfCells, CJX_Comb::numberOfCells)
+ELEM_ATTR____(DateTime, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(DateTime, Value, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Comb, NumberOfCells, CJX_Object::ScriptAttributeInteger)
 ELEM_ATTR____(Pattern, Type, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Field, H, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Field, W, CJX_Object::ScriptAttributeString)
@@ -246,8 +246,8 @@
 ELEM_ATTR____(TimeStamp, Type, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(TimeStamp, Server, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Decimal, FracDigits, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Decimal, DefaultValue, CJX_Decimal::defaultValue)
-ELEM_ATTR____(Decimal, Value, CJX_Decimal::value)
+ELEM_ATTR____(Decimal, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Decimal, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Decimal, LeadDigits, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, H, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, W, CJX_Object::ScriptAttributeString)
@@ -267,7 +267,7 @@
 ELEM_ATTR____(Subform, MaxW, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, MinH, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, MinW, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Subform, Layout, CJX_Subform::layout)
+ELEM_ATTR____(Subform, Layout, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, Relevant, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, MergeMode, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Subform, InstanceManager, CJX_Subform::instanceManager)
@@ -288,9 +288,9 @@
 ELEM_ATTR____(Message, Desc, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Message, Lock, CJX_Object::ScriptAttributeBool)
 ELEM_ATTR____(Assist, Role, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Picture, DefaultValue, CJX_Picture::defaultValue)
+ELEM_ATTR____(Picture, DefaultValue, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Picture, Desc, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Picture, Value, CJX_Picture::value)
+ELEM_ATTR____(Picture, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Picture, Lock, CJX_Object::ScriptAttributeBool)
 ELEM_ATTR____(WebClient, Name, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Corner, Stroke, CJX_Object::ScriptAttributeString)
@@ -314,8 +314,8 @@
 ELEM_ATTR____(DigestMethods, Type, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(PageSet, Relation, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(PageSet, Relevant, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Integer, DefaultValue, CJX_Integer::defaultValue)
-ELEM_ATTR____(Integer, Value, CJX_Integer::value)
+ELEM_ATTR____(Integer, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Integer, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Equate, To, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Equate, Force, CJX_Object::ScriptAttributeBool)
 ELEM_ATTR____(Equate, From, CJX_Object::ScriptAttributeString)
@@ -351,7 +351,7 @@
 ELEM_ATTR____(Caption, Placement, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(ExData, ContentType, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(ExData, TransferEncoding, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(ExData, DefaultValue, CJX_ExData::defaultValue)
+ELEM_ATTR____(ExData, DefaultValue, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(ExData, MaxLength, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(ExData, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(ExData, Href, CJX_Object::ScriptAttributeString)
@@ -382,9 +382,9 @@
 ELEM_ATTR____(TemplateCache, MaxEntries, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(DataValue, ContentType, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(DataValue, Contains, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(DataValue, DefaultValue, CJX_DataValue::defaultValue)
-ELEM_ATTR____(DataValue, Value, CJX_DataValue::value)
-ELEM_ATTR____(DataValue, IsNull, CJX_DataValue::isNull)
+ELEM_ATTR____(DataValue, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(DataValue, Value, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(DataValue, IsNull, CJX_Object::ScriptAttributeBool)
 ELEM_ATTR____(XmlConnection, DataDescription, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(SignData, Ref, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(SignData, Operation, CJX_Object::ScriptAttributeString)
@@ -397,8 +397,8 @@
 ELEM_ATTR____(Rectangle, Hand, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(EffectiveOutputPolicy, Id, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(EffectiveOutputPolicy, Name, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Date, DefaultValue, CJX_Date::defaultValue)
-ELEM_ATTR____(Date, Value, CJX_Date::value)
+ELEM_ATTR____(Date, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Date, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Encrypt, Format, CJX_Encrypt::format)
 ELEM_ATTR____(Encrypt, Desc, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Encrypt, Lock, CJX_Object::ScriptAttributeBool)
@@ -443,10 +443,10 @@
 ELEM_ATTR____(Font, UnderlinePeriod, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Font, Overline, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Form, Checksum, CJX_Form::checksumS)
-ELEM_ATTR____(Float, DefaultValue, CJX_Float::defaultValue)
-ELEM_ATTR____(Float, Value, CJX_Float::value)
+ELEM_ATTR____(Float, DefaultValue, CJX_Object::ScriptSomDefaultValue)
+ELEM_ATTR____(Float, Value, CJX_Object::ScriptSomDefaultValue)
 ELEM_ATTR____(Value, Relevant, CJX_Object::ScriptAttributeString)
-ELEM_ATTR____(Value, Override, CJX_Value::override)
+ELEM_ATTR____(Value, Override, CJX_Object::ScriptAttributeBool)
 ELEM_ATTR____(Bookend, Trailer, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(Bookend, Leader, CJX_Object::ScriptAttributeString)
 ELEM_ATTR____(ExObject, CodeType, CJX_Object::ScriptAttributeString)
diff --git a/xfa/fxfa/parser/xfa_basic_data.cpp b/xfa/fxfa/parser/xfa_basic_data.cpp
index ed8bd71..e55e254 100644
--- a/xfa/fxfa/parser/xfa_basic_data.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data.cpp
@@ -9,28 +9,20 @@
 #include <utility>
 
 #include "fxjs/xfa/cjx_boolean.h"
-#include "fxjs/xfa/cjx_comb.h"
 #include "fxjs/xfa/cjx_container.h"
-#include "fxjs/xfa/cjx_datavalue.h"
 #include "fxjs/xfa/cjx_datawindow.h"
-#include "fxjs/xfa/cjx_date.h"
-#include "fxjs/xfa/cjx_datetime.h"
-#include "fxjs/xfa/cjx_decimal.h"
 #include "fxjs/xfa/cjx_delta.h"
 #include "fxjs/xfa/cjx_desc.h"
 #include "fxjs/xfa/cjx_draw.h"
 #include "fxjs/xfa/cjx_encrypt.h"
 #include "fxjs/xfa/cjx_eventpseudomodel.h"
 #include "fxjs/xfa/cjx_exclgroup.h"
-#include "fxjs/xfa/cjx_exdata.h"
 #include "fxjs/xfa/cjx_extras.h"
 #include "fxjs/xfa/cjx_field.h"
-#include "fxjs/xfa/cjx_float.h"
 #include "fxjs/xfa/cjx_form.h"
 #include "fxjs/xfa/cjx_handler.h"
 #include "fxjs/xfa/cjx_hostpseudomodel.h"
 #include "fxjs/xfa/cjx_instancemanager.h"
-#include "fxjs/xfa/cjx_integer.h"
 #include "fxjs/xfa/cjx_layoutpseudomodel.h"
 #include "fxjs/xfa/cjx_logpseudomodel.h"
 #include "fxjs/xfa/cjx_manifest.h"
@@ -38,18 +30,14 @@
 #include "fxjs/xfa/cjx_node.h"
 #include "fxjs/xfa/cjx_occur.h"
 #include "fxjs/xfa/cjx_packet.h"
-#include "fxjs/xfa/cjx_picture.h"
 #include "fxjs/xfa/cjx_script.h"
 #include "fxjs/xfa/cjx_signaturepseudomodel.h"
 #include "fxjs/xfa/cjx_source.h"
 #include "fxjs/xfa/cjx_subform.h"
 #include "fxjs/xfa/cjx_subformset.h"
-#include "fxjs/xfa/cjx_text.h"
 #include "fxjs/xfa/cjx_textnode.h"
-#include "fxjs/xfa/cjx_time.h"
 #include "fxjs/xfa/cjx_tree.h"
 #include "fxjs/xfa/cjx_treelist.h"
-#include "fxjs/xfa/cjx_value.h"
 #include "fxjs/xfa/cjx_wsdlconnection.h"
 #include "fxjs/xfa/cjx_xfa.h"
 #include "xfa/fxfa/fxfa_basic.h"
