Repository: DevExpress/devextreme-vue
Pull request #186 (2018-11-02 14:32:41)

 Redesign ownership references for collection items


Patch:
diff --git a/example/app.vue b/example/app.vue
index 618c304..a27797a 100644
--- a/example/app.vue
+++ b/example/app.vue
@@ -20,6 +20,8 @@
         <chart-example/>
         <br/>
         <accessing-instance-example/>
+        <br/>
+        <map-example/>
     </div>
 </template>
 
@@ -31,6 +33,7 @@ import ListExample from "./components/list-example";
 import GridExample from "./components/grid-example";
 import PopupExample from "./components/popup-example";
 import TextBoxExample from "./components/text-box-example";
+import MapExample from "./components/map-example";
 import NumberBoxExample from "./components/number-box-example";
 import ValidationExample from "./components/validation-example";
 import SchedulerExample from "./components/scheduler-example";
@@ -43,6 +46,7 @@ export default {
         ButtonExample,
         PopupExample,
         TextBoxExample,
+        MapExample,
         NumberBoxExample,
         ValidationExample,
         ListExample,
diff --git a/example/components/map-example.vue b/example/components/map-example.vue
new file mode 100644
index 0000000..86641cc
--- /dev/null
+++ b/example/components/map-example.vue
@@ -0,0 +1,48 @@
+<template>
+    <example-block title="dxMap">
+        <dx-map
+            provider="bing"
+            :zoom="11"
+            :height="440"
+            :controls="true"
+        >
+            <dx-marker iconSrc="https://js.devexpress.com/Demos/RealtorApp/images/map-marker.png">
+                <dx-location :lat="40.755833" :lng="-73.986389" />
+                <dx-tooltip text="Times Square" />
+            </dx-marker>
+            <dx-marker iconSrc="https://js.devexpress.com/Demos/RealtorApp/images/map-marker.png">
+                <dx-location :lat="40.7825" :lng="-73.966111" />
+                <dx-tooltip text="Central Park" />
+            </dx-marker>
+
+            <dx-route color="green">
+                <dx-location :lat="40.755833" :lng="-73.986389" />
+                <dx-location :lat="40.7825" :lng="-73.966111" />
+            </dx-route>
+        </dx-map>
+    </example-block>
+</template>
+
+<script>
+import ExampleBlock from "./example-block";
+
+import { DxMap, DxMarker, DxLocation, DxTooltip, DxRoute } from "../../src/map";
+
+export default {
+  components: {
+    ExampleBlock,
+    DxMap,
+    DxMarker,
+    DxLocation,
+    DxTooltip,
+    DxRoute
+  },
+  data: function() {
+    return {
+      buttonAttrs: {
+        style: "background-color: #ffc"
+      }
+    };
+  }
+};
+</script>
\ No newline at end of file
diff --git a/src/core/children-processing.ts b/src/core/children-processing.ts
new file mode 100644
index 0000000..ee0c1c3
--- /dev/null
+++ b/src/core/children-processing.ts
@@ -0,0 +1,43 @@
+import { VNode } from "vue";
+import Configuration from "./configuration";
+import { IConfigurable, IConfigurationComponent } from "./configuration-component";
+
+function pullAllChildren(directChildren: VNode[], allChildren: VNode[], config: Configuration): void {
+    if (!directChildren || directChildren.length === 0) { return; }
+
+    config.cleanNested();
+    pullConfigComponents(directChildren, allChildren, config);
+}
+
+function pullConfigComponents(children: VNode[], nodes: VNode[], ownerConfig: Configuration): void {
+
+    children.forEach((node) => {
+        nodes.push(node);
+        if (!node.componentOptions) { return; }
+
+        const configComponent = node.componentOptions.Ctor as any as IConfigurationComponent;
+        if (!configComponent.$_optionName) { return; }
+
+        const initialValues = {
+            ...configComponent.$_predefinedProps,
+            ...node.componentOptions.propsData
+        };
+
+        const config = ownerConfig.createNested(
+            configComponent.$_optionName,
+            initialValues,
+            configComponent.$_isCollectionItem,
+            configComponent.$_expectedChildren
+        );
+
+        (node.componentOptions as any as IConfigurable).$_config = config;
+
+        if (node.componentOptions.children) {
+            pullConfigComponents(node.componentOptions.children as VNode[], nodes, config);
+        }
+    });
+}
+
+export {
+    pullAllChildren
+};
diff --git a/src/core/component.ts b/src/core/component.ts
index 3a003fd..a552435 100644
--- a/src/core/component.ts
+++ b/src/core/component.ts
@@ -3,12 +3,14 @@ import { VNode, VueConstructor } from "vue";
 
 import * as events from "devextreme/events";
 
+import { pullAllChildren } from "./children-processing";
 import Configuration, { bindOptionWatchers, subscribeOnUpdates } from "./configuration";
-import { IConfigurable, IConfigurationComponent } from "./configuration-component";
+import { IConfigurable } from "./configuration-component";
 import { camelize, toComparable } from "./helpers";
 
 interface IWidgetComponent extends IConfigurable {
     $_instance: any;
+    $_WidgetClass: any;
 }
 
 const Vue = VueType.default || VueType;
@@ -21,11 +23,15 @@ const BaseComponent: VueConstructor = Vue.extend({
     inheritAttrs: false,
 
     render(createElement: (...args) => VNode): VNode {
-        return createElement("div", {
-                attrs: {
-                    id: this.$attrs.id
-                }
-            }, extractChildren(this.$slots.default, (this as any as IWidgetComponent).$_config)
+        const children: VNode[] = [];
+        pullAllChildren(this.$slots.default, children, (this as any as IWidgetComponent).$_config);
+
+        return createElement(
+            "div",
+            {
+                attrs: { id: this.$attrs.id }
+            },
+            children
         );
     },
 
@@ -42,7 +48,8 @@ const BaseComponent: VueConstructor = Vue.extend({
         (this as any as IWidgetComponent).$_config = new Configuration(
             (n: string, v: any) => (this as any as IWidgetComponent).$_instance.option(n, v),
             null,
-            this.$options.propsData && { ...this.$options.propsData }
+            this.$options.propsData && { ...this.$options.propsData },
+            (this as any as IWidgetComponent).$_expectedChildren
         );
 
         (this as any as IWidgetComponent).$_config.init(this.$props && Object.keys(this.$props));
@@ -56,7 +63,7 @@ const BaseComponent: VueConstructor = Vue.extend({
                 ...this.$options.propsData,
                 ...config.getInitialValues()
             };
-            const instance = new (this as any).$_WidgetClass(element, options);
+            const instance = new (this as any as IWidgetComponent).$_WidgetClass(element, options);
             (this as any as IWidgetComponent).$_instance = instance;
 
             instance.on("optionChanged", (args) => config.onOptionChanged(args));
@@ -165,43 +172,4 @@ const DxComponent: VueConstructor = BaseComponent.extend({
     }
 });
 
-function extractChildren(children: VNode[], config: Configuration): VNode[] {
-    if (!children || children.length === 0) { return children; }
-
-    const nodes: VNode[] = [];
-    config.cleanNested();
-    pullConfigComponents(children, nodes, config);
-
-    return nodes;
-}
-
-function pullConfigComponents(children: VNode[], nodes: VNode[], ownerConfig: Configuration): void {
-
-    children.forEach((node) => {
-        nodes.push(node);
-
-        if (
-            node.componentOptions &&
-            (node.componentOptions.Ctor as any as IConfigurationComponent).$_optionName
-        ) {
-            const initialValues = {
-                ...(node.componentOptions.Ctor as any as IConfigurationComponent).$_predefinedProps,
-                ...node.componentOptions.propsData
-            };
-
-            const config = ownerConfig.createNested(
-                (node.componentOptions.Ctor as any as IConfigurationComponent).$_optionName,
-                initialValues,
-                (node.componentOptions.Ctor as any as IConfigurationComponent).$_isCollectionItem
-            );
-
-            (node.componentOptions as any as IConfigurable).$_config = config;
-
-            if (node.componentOptions.children) {
-                pullConfigComponents(node.componentOptions.children as VNode[], nodes, config);
-            }
-        }
-    });
-}
-
 export { DxComponent, BaseComponent, IWidgetComponent };
diff --git a/src/core/configuration-component.ts b/src/core/configuration-component.ts
index 8a50167..e09c1f2 100644
--- a/src/core/configuration-component.ts
+++ b/src/core/configuration-component.ts
@@ -3,15 +3,19 @@ import { VNode, VueConstructor } from "vue";
 
 const Vue = VueType.default || VueType;
 
-import Configuration, { bindOptionWatchers, subscribeOnUpdates } from "./configuration";
+import Configuration, { bindOptionWatchers, ExpectedChild, subscribeOnUpdates } from "./configuration";
 
-interface IConfigurationComponent {
+interface IConfigurationOwner {
+    $_expectedChildren: Record<string, ExpectedChild>;
+}
+
+interface IConfigurationComponent extends IConfigurationOwner {
     $_optionName: string;
     $_isCollectionItem: boolean;
     $_predefinedProps: Record<string, any>;
 }
 
-interface IConfigurable {
+interface IConfigurable extends IConfigurationOwner {
     $_config: Configuration;
 }
 
diff --git a/src/core/configuration.ts b/src/core/configuration.ts
index a1fd3a6..5c3205b 100644
--- a/src/core/configuration.ts
+++ b/src/core/configuration.ts
@@ -2,12 +2,18 @@ import { Vue } from "vue/types/vue";
 
 type UpdateFunc = (name: string, value: any) => void;
 
+interface ExpectedChild {
+    isCollectionItem: boolean;
+    optionName: string;
+}
+
 class Configuration {
 
     private readonly _name: string | null;
     private readonly _isCollectionItem: boolean;
     private readonly _collectionItemIndex: number | undefined;
     private readonly _initialValues: Record<string, any>;
+    private readonly _expectedChildren: Record<string, ExpectedChild>;
     private readonly _updateFunc: UpdateFunc;
     private _nestedConfigurations: Configuration[];
     private _optionChangedFunc: any;
@@ -18,8 +24,9 @@ class Configuration {
         updateFunc: UpdateFunc,
         name: string | null,
         initialValues: Record<string, any>,
+        expectedChildren?: Record<string, ExpectedChild>,
         isCollectionItem?: boolean,
-        collectionItemIndex?: number
+        collectionItemIndex?: number,
     ) {
         this._updateFunc = updateFunc;
         this._name = name;
@@ -27,6 +34,7 @@ class Configuration {
         this._nestedConfigurations = [];
         this._isCollectionItem = !!isCollectionItem;
         this._collectionItemIndex = collectionItemIndex;
+        this._expectedChildren = expectedChildren || {};
 
         this.updateValue = this.updateValue.bind(this);
     }
@@ -47,6 +55,10 @@ class Configuration {
         return this._initialValues;
     }
 
+    public get expectedChildren(): Record<string, ExpectedChild> {
+        return this._expectedChildren;
+    }
+
     public get nested(): Configuration[] {
         return this._nestedConfigurations;
     }
@@ -87,18 +99,31 @@ class Configuration {
     public createNested(
         name: string,
         initialValues: Record<string, any>,
-        isCollectionItem?: boolean
+        isCollectionItem?: boolean,
+        expectedChildren?: Record<string, ExpectedChild>
     ): Configuration {
+
+        const expected = this._expectedChildren[name];
+        let actualName = name;
+        let actualIsCollectionItem = isCollectionItem;
+        if (expected) {
+            actualIsCollectionItem = expected.isCollectionItem;
+            if (expected.optionName) {
+                actualName = expected.optionName;
+            }
+        }
+
         let collectionItemIndex = -1;
-        if (isCollectionItem && name) {
-            collectionItemIndex = this._nestedConfigurations.filter((c) => c._name && c._name === name).length;
+        if (actualIsCollectionItem && actualName) {
+            collectionItemIndex = this._nestedConfigurations.filter((c) => c._name && c._name === actualName).length;
         }
 
         const configuration = new Configuration(
             this.updateValue,
-            name,
+            actualName,
             initialValues,
-            isCollectionItem,
+            expectedChildren,
+            actualIsCollectionItem,
             collectionItemIndex
         );
 
@@ -172,4 +197,4 @@ function subscribeOnUpdates(config: Configuration, vueInstance: Pick<Vue, "$emit
 }
 
 export default Configuration;
-export { bindOptionWatchers, subscribeOnUpdates, UpdateFunc };
+export { bindOptionWatchers, subscribeOnUpdates, UpdateFunc, ExpectedChild };
diff --git a/tools/integration-data-model.ts b/tools/integration-data-model.ts
index c2613dd..319b6b4 100644
--- a/tools/integration-data-model.ts
+++ b/tools/integration-data-model.ts
@@ -9,6 +9,7 @@ export interface IWidget {
   isEditor: boolean;
   isExtension: boolean;
   name: string;
+  nesteds: IComponentRef[];
   options: IProp[];
   templates: string[];
 }
@@ -23,6 +24,7 @@ export interface IProp {
 export interface IComplexProp {
   isCollectionItem: boolean;
   name: string;
+  nesteds: IComponentRef[];
   optionName: string;
   owners: string[];
   predefinedProps: Record<string, any>;
@@ -30,6 +32,12 @@ export interface IComplexProp {
   templates: string[];
 }
 
+export interface IComponentRef {
+  componentName: string;
+  isCollectionItem: boolean;
+  optionName: string;
+}
+
 export interface ICustomType {
   name: string;
   props: IProp[];
diff --git a/tools/integration-data.json b/tools/integration-data.json
index 5169919..e557d0f 100644
--- a/tools/integration-data.json
+++ b/tools/integration-data.json
@@ -1,5 +1,6 @@
 {
   "meta": {
+    "scriptsRevision": "6177164edd5b90ef8f323467b0ebf20df031dae8",
     "docsRevision": "25de847cd0b034c910e2b6efd37c2e1d25772a08"
   },
   "widgets": [
@@ -5635,6 +5636,16 @@
           "owners": [
             "DxBarGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "connectorColor",
@@ -5733,6 +5744,12 @@
           "owners": [
             "DxBarGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -5892,6 +5909,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -5918,6 +5941,20 @@
           "owners": [
             "DxBarGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -6052,6 +6089,24 @@
           "owners": [
             "DxBarGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -6293,6 +6348,44 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "geometry",
+          "optionName": "geometry"
+        },
+        {
+          "componentName": "label",
+          "optionName": "label"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -8405,6 +8498,24 @@
           "owners": [
             "DxBullet"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -8620,6 +8731,20 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -9776,6 +9901,13 @@
             "template"
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "item",
+          "isCollectionItem": true,
+          "optionName": "items"
+        }
       ]
     },
     {
@@ -17825,6 +17957,67 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "aggregationInterval",
+              "optionName": "aggregationInterval"
+            },
+            {
+              "componentName": "axisConstantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "axisLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "axisTitle",
+              "optionName": "title"
+            },
+            {
+              "componentName": "break",
+              "isCollectionItem": true,
+              "optionName": "breaks"
+            },
+            {
+              "componentName": "constantLine",
+              "isCollectionItem": true,
+              "optionName": "constantLines"
+            },
+            {
+              "componentName": "constantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorTickInterval",
+              "optionName": "minorTickInterval"
+            },
+            {
+              "componentName": "strip",
+              "isCollectionItem": true,
+              "optionName": "strips"
+            },
+            {
+              "componentName": "tickInterval",
+              "optionName": "tickInterval"
+            },
+            {
+              "componentName": "title",
+              "optionName": "title"
+            },
+            {
+              "componentName": "visualRange",
+              "optionName": "visualRange"
+            },
+            {
+              "componentName": "wholeRange",
+              "optionName": "wholeRange"
+            }
+          ],
           "props": [
             {
               "name": "aggregationGroupWidth",
@@ -19902,6 +20095,20 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -20036,6 +20243,56 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "breakStyle",
+              "optionName": "breakStyle"
+            },
+            {
+              "componentName": "commonAxisSettingsConstantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "commonAxisSettingsLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "commonAxisSettingsTitle",
+              "optionName": "title"
+            },
+            {
+              "componentName": "constantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "grid",
+              "optionName": "grid"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorGrid",
+              "optionName": "minorGrid"
+            },
+            {
+              "componentName": "minorTick",
+              "optionName": "minorTick"
+            },
+            {
+              "componentName": "stripStyle",
+              "optionName": "stripStyle"
+            },
+            {
+              "componentName": "tick",
+              "optionName": "tick"
+            },
+            {
+              "componentName": "title",
+              "optionName": "title"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -20651,6 +20908,16 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "commonAxisSettingsConstantLineStyleLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -20745,6 +21012,12 @@
           "owners": [
             "commonAxisSettingsConstantLineStyle"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -20783,6 +21056,12 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -20873,6 +21152,12 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -20899,6 +21184,16 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "paneBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -21004,6 +21299,56 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "aggregation",
+              "optionName": "aggregation"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "commonSeriesSettingsHoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "commonSeriesSettingsLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "commonSeriesSettingsSelectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "point",
+              "optionName": "point"
+            },
+            {
+              "componentName": "reduction",
+              "optionName": "reduction"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "valueErrorBar",
+              "optionName": "valueErrorBar"
+            }
+          ],
           "props": [
             {
               "name": "aggregation",
@@ -21541,6 +21886,20 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -21596,6 +21955,32 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "connector",
+              "optionName": "connector"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -21742,6 +22127,20 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -22151,6 +22550,24 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "crosshairLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "horizontalLine",
+              "optionName": "horizontalLine"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "verticalLine",
+              "optionName": "verticalLine"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -23167,6 +23584,16 @@
           "owners": [
             "crosshair"
           ],
+          "nesteds": [
+            {
+              "componentName": "crosshairLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -23384,6 +23811,20 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "height",
+              "optionName": "height"
+            },
+            {
+              "componentName": "url",
+              "optionName": "url"
+            },
+            {
+              "componentName": "width",
+              "optionName": "width"
+            }
+          ],
           "props": [
             {
               "name": "height",
@@ -23708,6 +24149,24 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "legendBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -24234,6 +24693,12 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -24693,6 +25158,36 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "image",
+              "optionName": "image"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointHoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "pointSelectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -24840,6 +25335,16 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -24873,6 +25378,16 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -25766,6 +26281,16 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "stripStyleLabel",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "label",
@@ -25836,6 +26361,12 @@
           "owners": [
             "stripStyle"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -25880,6 +26411,12 @@
           "owners": [
             "chartTitle"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -26137,6 +26674,32 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "argumentFormat",
@@ -26467,6 +27030,63 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "axisConstantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "axisLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "axisTitle",
+              "optionName": "title"
+            },
+            {
+              "componentName": "break",
+              "isCollectionItem": true,
+              "optionName": "breaks"
+            },
+            {
+              "componentName": "constantLine",
+              "isCollectionItem": true,
+              "optionName": "constantLines"
+            },
+            {
+              "componentName": "constantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorTickInterval",
+              "optionName": "minorTickInterval"
+            },
+            {
+              "componentName": "strip",
+              "isCollectionItem": true,
+              "optionName": "strips"
+            },
+            {
+              "componentName": "tickInterval",
+              "optionName": "tickInterval"
+            },
+            {
+              "componentName": "title",
+              "optionName": "title"
+            },
+            {
+              "componentName": "visualRange",
+              "optionName": "visualRange"
+            },
+            {
+              "componentName": "wholeRange",
+              "optionName": "wholeRange"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -27867,6 +28487,16 @@
           "owners": [
             "crosshair"
           ],
+          "nesteds": [
+            {
+              "componentName": "crosshairLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -28171,6 +28801,12 @@
           "owners": [
             "DxChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "dragBoxStyle",
+              "optionName": "dragBoxStyle"
+            }
+          ],
           "props": [
             {
               "name": "allowMouseWheel",
@@ -28266,6 +28902,99 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "adaptiveLayout",
+          "optionName": "adaptiveLayout"
+        },
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "argumentAxis",
+          "optionName": "argumentAxis"
+        },
+        {
+          "componentName": "chartTitle",
+          "optionName": "title"
+        },
+        {
+          "componentName": "commonAxisSettings",
+          "optionName": "commonAxisSettings"
+        },
+        {
+          "componentName": "commonPaneSettings",
+          "optionName": "commonPaneSettings"
+        },
+        {
+          "componentName": "commonSeriesSettings",
+          "optionName": "commonSeriesSettings"
+        },
+        {
+          "componentName": "crosshair",
+          "optionName": "crosshair"
+        },
+        {
+          "componentName": "dataPrepareSettings",
+          "optionName": "dataPrepareSettings"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "legend",
+          "optionName": "legend"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "pane",
+          "isCollectionItem": true,
+          "optionName": "panes"
+        },
+        {
+          "componentName": "scrollBar",
+          "optionName": "scrollBar"
+        },
+        {
+          "componentName": "series",
+          "isCollectionItem": true,
+          "optionName": "series"
+        },
+        {
+          "componentName": "seriesTemplate",
+          "optionName": "seriesTemplate"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        },
+        {
+          "componentName": "valueAxis",
+          "isCollectionItem": true,
+          "optionName": "valueAxis"
+        },
+        {
+          "componentName": "zoomAndPan",
+          "optionName": "zoomAndPan"
+        }
       ]
     },
     {
@@ -30929,6 +31658,16 @@
           "owners": [
             "scale"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -31043,6 +31782,12 @@
           "owners": [
             "DxCircularGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -31211,6 +31956,13 @@
           "owners": [
             "DxCircularGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "range",
+              "isCollectionItem": true,
+              "optionName": "ranges"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -31343,6 +32095,20 @@
           "owners": [
             "DxCircularGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorTick",
+              "optionName": "minorTick"
+            },
+            {
+              "componentName": "tick",
+              "optionName": "tick"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -31720,6 +32486,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -31952,6 +32724,16 @@
           "owners": [
             "valueIndicator"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -32075,6 +32857,20 @@
           "owners": [
             "DxCircularGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -32209,6 +33005,24 @@
           "owners": [
             "DxCircularGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -32448,6 +33262,12 @@
           "owners": [
             "DxCircularGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "text",
+              "optionName": "text"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -32648,6 +33468,56 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "geometry",
+          "optionName": "geometry"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "rangeContainer",
+          "optionName": "rangeContainer"
+        },
+        {
+          "componentName": "scale",
+          "optionName": "scale"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "subvalueIndicator",
+          "optionName": "subvalueIndicator"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        },
+        {
+          "componentName": "valueIndicator",
+          "optionName": "valueIndicator"
+        }
       ]
     },
     {
@@ -35411,6 +36281,16 @@
           "owners": [
             "DxContextMenu"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -35896,6 +36776,28 @@
           "owners": [
             "DxContextMenu"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -36206,6 +37108,12 @@
           "owners": [
             "DxContextMenu"
           ],
+          "nesteds": [
+            {
+              "componentName": "delay",
+              "optionName": "delay"
+            }
+          ],
           "props": [
             {
               "name": "delay",
@@ -36250,6 +37158,29 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "item",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        },
+        {
+          "componentName": "showEvent",
+          "optionName": "showEvent"
+        },
+        {
+          "componentName": "showSubmenuMode",
+          "optionName": "showSubmenuMode"
+        }
       ]
     },
     {
@@ -42525,6 +43456,16 @@
           "owners": [
             "popup"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -42641,7 +43582,14 @@
               "name": "name",
               "types": [
                 {
-                  "type": "String"
+                  "type": "String",
+                  "acceptableValues": [
+                    "\"cancel\"",
+                    "\"delete\"",
+                    "\"edit\"",
+                    "\"save\"",
+                    "\"undelete\""
+                  ]
                 }
               ]
             },
@@ -42743,7 +43691,76 @@
                       "name": "cellInfo",
                       "types": [
                         {
-                          "type": "Object"
+                          "type": "Object",
+                          "fields": [
+                            {
+                              "name": "component",
+                              "types": [
+                                {
+                                  "type": "dxDataGrid",
+                                  "isCustomType": true
+                                }
+                              ]
+                            },
+                            {
+                              "name": "data",
+                              "types": [
+                                {
+                                  "type": "Object"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "key",
+                              "types": [
+                                {
+                                  "type": "Any"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "columnIndex",
+                              "types": [
+                                {
+                                  "type": "Number"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "column",
+                              "types": [
+                                {
+                                  "type": "dxDataGridColumn",
+                                  "isCustomType": true
+                                }
+                              ]
+                            },
+                            {
+                              "name": "rowIndex",
+                              "types": [
+                                {
+                                  "type": "Number"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "rowType",
+                              "types": [
+                                {
+                                  "type": "String"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "row",
+                              "types": [
+                                {
+                                  "type": "dxDataGridRowObject",
+                                  "isCustomType": true
+                                }
+                              ]
+                            }
+                          ]
                         }
                       ]
                     }
@@ -42909,6 +43926,37 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "button",
+              "isCollectionItem": true,
+              "optionName": "buttons"
+            },
+            {
+              "componentName": "columnHeaderFilter",
+              "optionName": "headerFilter"
+            },
+            {
+              "componentName": "columnLookup",
+              "optionName": "lookup"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "formItem",
+              "optionName": "formItem"
+            },
+            {
+              "componentName": "headerFilter",
+              "optionName": "headerFilter"
+            },
+            {
+              "componentName": "lookup",
+              "optionName": "lookup"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -43950,6 +44998,16 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "columnFixingTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "enabled",
@@ -44680,6 +45738,16 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "dataGridHeaderFilterTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowSearch",
@@ -44796,6 +45864,24 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "editingTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "form",
+              "optionName": "form"
+            },
+            {
+              "componentName": "popup",
+              "optionName": "popup"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowAdding",
@@ -45225,6 +46311,16 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "exportTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowExportSelectedData",
@@ -45506,6 +46602,20 @@
           "owners": [
             "filterBuilder"
           ],
+          "nesteds": [
+            {
+              "componentName": "fieldLookup",
+              "optionName": "lookup"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "lookup",
+              "optionName": "lookup"
+            }
+          ],
           "props": [
             {
               "name": "calculateFilterExpression",
@@ -45872,6 +46982,26 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "customOperation",
+              "isCollectionItem": true,
+              "optionName": "customOperations"
+            },
+            {
+              "componentName": "field",
+              "isCollectionItem": true,
+              "optionName": "fields"
+            },
+            {
+              "componentName": "filterOperationDescriptions",
+              "optionName": "filterOperationDescriptions"
+            },
+            {
+              "componentName": "groupOperationDescriptions",
+              "optionName": "groupOperationDescriptions"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -48296,6 +49426,16 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "filterPanelTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -48437,6 +49577,12 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "operationDescriptions",
+              "optionName": "operationDescriptions"
+            }
+          ],
           "props": [
             {
               "name": "applyFilter",
@@ -48612,6 +49758,12 @@
           "owners": [
             "editing"
           ],
+          "nesteds": [
+            {
+              "componentName": "colCountByScreen",
+              "optionName": "colCountByScreen"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -49514,6 +50666,57 @@
           "owners": [
             "column"
           ],
+          "nesteds": [
+            {
+              "componentName": "CompareRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "CustomRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "EmailRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "NumericRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "PatternRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "RangeRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "RequiredRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "StringLengthRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "validationRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            }
+          ],
           "props": [
             {
               "name": "colSpan",
@@ -49758,6 +50961,16 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "groupingTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowCollapsing",
@@ -49902,6 +51115,12 @@
           "owners": [
             "summary"
           ],
+          "nesteds": [
+            {
+              "componentName": "valueFormat",
+              "optionName": "valueFormat"
+            }
+          ],
           "props": [
             {
               "name": "alignByColumn",
@@ -51117,6 +52336,21 @@
           "owners": [
             "editing"
           ],
+          "nesteds": [
+            {
+              "componentName": "animation",
+              "optionName": "animation"
+            },
+            {
+              "componentName": "position",
+              "optionName": "position"
+            },
+            {
+              "componentName": "toolbarItem",
+              "isCollectionItem": true,
+              "optionName": "toolbarItems"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -52381,6 +53615,28 @@
           "owners": [
             "popup"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -53298,6 +54554,26 @@
           "owners": [
             "DxDataGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "groupItem",
+              "isCollectionItem": true,
+              "optionName": "groupItems"
+            },
+            {
+              "componentName": "summaryTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "totalItem",
+              "isCollectionItem": true,
+              "optionName": "totalItems"
+            }
+          ],
           "props": [
             {
               "name": "calculateCustomSummary",
@@ -54269,6 +55545,12 @@
           "owners": [
             "summary"
           ],
+          "nesteds": [
+            {
+              "componentName": "valueFormat",
+              "optionName": "valueFormat"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -54689,6 +55971,110 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "column",
+          "isCollectionItem": true,
+          "optionName": "columns"
+        },
+        {
+          "componentName": "columnChooser",
+          "optionName": "columnChooser"
+        },
+        {
+          "componentName": "columnFixing",
+          "optionName": "columnFixing"
+        },
+        {
+          "componentName": "dataGridHeaderFilter",
+          "optionName": "headerFilter"
+        },
+        {
+          "componentName": "editing",
+          "optionName": "editing"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "filterBuilder",
+          "optionName": "filterBuilder"
+        },
+        {
+          "componentName": "filterBuilderPopup",
+          "optionName": "filterBuilderPopup"
+        },
+        {
+          "componentName": "filterPanel",
+          "optionName": "filterPanel"
+        },
+        {
+          "componentName": "filterRow",
+          "optionName": "filterRow"
+        },
+        {
+          "componentName": "grouping",
+          "optionName": "grouping"
+        },
+        {
+          "componentName": "groupPanel",
+          "optionName": "groupPanel"
+        },
+        {
+          "componentName": "headerFilter",
+          "optionName": "headerFilter"
+        },
+        {
+          "componentName": "loadPanel",
+          "optionName": "loadPanel"
+        },
+        {
+          "componentName": "masterDetail",
+          "optionName": "masterDetail"
+        },
+        {
+          "componentName": "pager",
+          "optionName": "pager"
+        },
+        {
+          "componentName": "paging",
+          "optionName": "paging"
+        },
+        {
+          "componentName": "remoteOperations",
+          "optionName": "remoteOperations"
+        },
+        {
+          "componentName": "scrolling",
+          "optionName": "scrolling"
+        },
+        {
+          "componentName": "searchPanel",
+          "optionName": "searchPanel"
+        },
+        {
+          "componentName": "selection",
+          "optionName": "selection"
+        },
+        {
+          "componentName": "sortByGroupSummaryInfo",
+          "isCollectionItem": true,
+          "optionName": "sortByGroupSummaryInfo"
+        },
+        {
+          "componentName": "sorting",
+          "optionName": "sorting"
+        },
+        {
+          "componentName": "stateStoring",
+          "optionName": "stateStoring"
+        },
+        {
+          "componentName": "summary",
+          "optionName": "summary"
+        }
       ]
     },
     {
@@ -57302,6 +58688,16 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "calendarOptions",
+          "optionName": "calendarOptions"
+        },
+        {
+          "componentName": "displayFormat",
+          "optionName": "displayFormat"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -57933,6 +59329,12 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        }
       ]
     },
     {
@@ -59911,6 +61313,16 @@
           "owners": [
             "dropDownOptions"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -60035,6 +61447,21 @@
           "owners": [
             "DxDropDownBox"
           ],
+          "nesteds": [
+            {
+              "componentName": "animation",
+              "optionName": "animation"
+            },
+            {
+              "componentName": "position",
+              "optionName": "position"
+            },
+            {
+              "componentName": "toolbarItem",
+              "isCollectionItem": true,
+              "optionName": "toolbarItems"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -61520,6 +62947,28 @@
           "owners": [
             "dropDownOptions"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -61905,6 +63354,12 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "dropDownOptions",
+          "optionName": "dropDownOptions"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -64111,6 +65566,16 @@
           "owners": [
             "DxFilterBuilder"
           ],
+          "nesteds": [
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "lookup",
+              "optionName": "lookup"
+            }
+          ],
           "props": [
             {
               "name": "calculateFilterExpression",
@@ -64733,6 +66198,26 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "customOperation",
+          "isCollectionItem": true,
+          "optionName": "customOperations"
+        },
+        {
+          "componentName": "field",
+          "isCollectionItem": true,
+          "optionName": "fields"
+        },
+        {
+          "componentName": "filterOperationDescriptions",
+          "optionName": "filterOperationDescriptions"
+        },
+        {
+          "componentName": "groupOperationDescriptions",
+          "optionName": "groupOperationDescriptions"
+        }
       ]
     },
     {
@@ -65425,6 +66910,12 @@
           "owners": [
             "DxForm"
           ],
+          "nesteds": [
+            {
+              "componentName": "buttonOptions",
+              "optionName": "buttonOptions"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -67336,6 +68827,57 @@
           "owners": [
             "DxForm"
           ],
+          "nesteds": [
+            {
+              "componentName": "CompareRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "CustomRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "EmailRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "NumericRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "PatternRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "RangeRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "RequiredRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "StringLengthRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "validationRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            }
+          ],
           "props": [
             {
               "name": "colSpan",
@@ -67831,6 +69373,17 @@
           "owners": [
             "DxForm"
           ],
+          "nesteds": [
+            {
+              "componentName": "tab",
+              "isCollectionItem": true,
+              "optionName": "tabs"
+            },
+            {
+              "componentName": "tabPanelOptions",
+              "optionName": "tabPanelOptions"
+            }
+          ],
           "props": [
             {
               "name": "colSpan",
@@ -69757,6 +71310,42 @@
             "type": "required"
           }
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "ButtonItem",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "colCountByScreen",
+          "optionName": "colCountByScreen"
+        },
+        {
+          "componentName": "EmptyItem",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "GroupItem",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "item",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "SimpleItem",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "TabbedItem",
+          "isCollectionItem": true,
+          "optionName": "items"
+        }
       ]
     },
     {
@@ -72613,6 +74202,20 @@
           "owners": [
             "item"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "itemBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -72703,6 +74306,24 @@
           "owners": [
             "DxFunnel"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "itemBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -72963,6 +74584,28 @@
           "owners": [
             "DxFunnel"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "connector",
+              "optionName": "connector"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "labelBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -73248,6 +74891,24 @@
           "owners": [
             "DxFunnel"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "legendBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -73654,6 +75315,12 @@
           "owners": [
             "DxFunnel"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -73740,6 +75407,20 @@
           "owners": [
             "item"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "itemBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -73904,6 +75585,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -73930,6 +75617,20 @@
           "owners": [
             "DxFunnel"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -74064,6 +75765,28 @@
           "owners": [
             "DxFunnel"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -74377,6 +76100,48 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "adaptiveLayout",
+          "optionName": "adaptiveLayout"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "item",
+          "optionName": "item"
+        },
+        {
+          "componentName": "label",
+          "optionName": "label"
+        },
+        {
+          "componentName": "legend",
+          "optionName": "legend"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -76116,6 +77881,13 @@
           "owners": [
             "DxHtmlEditor"
           ],
+          "nesteds": [
+            {
+              "componentName": "item",
+              "isCollectionItem": true,
+              "optionName": "items"
+            }
+          ],
           "props": [
             {
               "name": "container",
@@ -76197,6 +77969,16 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "toolbar",
+          "optionName": "toolbar"
+        },
+        {
+          "componentName": "variables",
+          "optionName": "variables"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -78409,6 +80191,16 @@
           "owners": [
             "scale"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -78511,6 +80303,12 @@
           "owners": [
             "DxLinearGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -78679,6 +80477,17 @@
           "owners": [
             "DxLinearGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "range",
+              "isCollectionItem": true,
+              "optionName": "ranges"
+            },
+            {
+              "componentName": "width",
+              "optionName": "width"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -78845,6 +80654,20 @@
           "owners": [
             "DxLinearGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorTick",
+              "optionName": "minorTick"
+            },
+            {
+              "componentName": "tick",
+              "optionName": "tick"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -79223,6 +81046,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -79455,6 +81284,16 @@
           "owners": [
             "valueIndicator"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -79578,6 +81417,20 @@
           "owners": [
             "DxLinearGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -79712,6 +81565,24 @@
           "owners": [
             "DxLinearGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -79951,6 +81822,12 @@
           "owners": [
             "DxLinearGauge"
           ],
+          "nesteds": [
+            {
+              "componentName": "text",
+              "optionName": "text"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -80176,6 +82053,56 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "geometry",
+          "optionName": "geometry"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "rangeContainer",
+          "optionName": "rangeContainer"
+        },
+        {
+          "componentName": "scale",
+          "optionName": "scale"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "subvalueIndicator",
+          "optionName": "subvalueIndicator"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        },
+        {
+          "componentName": "valueIndicator",
+          "optionName": "valueIndicator"
+        }
       ]
     },
     {
@@ -83572,6 +85499,17 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "menuItem",
+          "isCollectionItem": true,
+          "optionName": "menuItems"
+        },
+        {
+          "componentName": "searchEditorOptions",
+          "optionName": "searchEditorOptions"
+        }
       ]
     },
     {
@@ -84611,6 +86549,16 @@
           "owners": [
             "DxLoadPanel"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -84956,6 +86904,28 @@
           "owners": [
             "DxLoadPanel"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -85235,6 +87205,16 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        }
       ]
     },
     {
@@ -86847,6 +88827,16 @@
           "owners": [
             "DxLookup"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -87192,6 +89182,28 @@
           "owners": [
             "DxLookup"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -87472,6 +89484,16 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -88488,6 +90510,20 @@
           "owners": [
             "DxMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "location",
+              "optionName": "location"
+            },
+            {
+              "componentName": "markerLocation",
+              "optionName": "location"
+            },
+            {
+              "componentName": "tooltip",
+              "optionName": "tooltip"
+            }
+          ],
           "props": [
             {
               "name": "iconSrc",
@@ -88591,6 +90627,18 @@
           "owners": [
             "DxMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "location",
+              "isCollectionItem": true,
+              "optionName": "locations"
+            },
+            {
+              "componentName": "routeLocation",
+              "isCollectionItem": true,
+              "optionName": "locations"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -88695,6 +90743,26 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "center",
+          "optionName": "center"
+        },
+        {
+          "componentName": "key",
+          "optionName": "key"
+        },
+        {
+          "componentName": "marker",
+          "isCollectionItem": true,
+          "optionName": "markers"
+        },
+        {
+          "componentName": "route",
+          "isCollectionItem": true,
+          "optionName": "routes"
+        }
       ]
     },
     {
@@ -89981,6 +92049,16 @@
           "owners": [
             "DxMenu"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -90471,6 +92549,12 @@
           "owners": [
             "DxMenu"
           ],
+          "nesteds": [
+            {
+              "componentName": "delay",
+              "optionName": "delay"
+            }
+          ],
           "props": [
             {
               "name": "delay",
@@ -90521,6 +92605,12 @@
           "owners": [
             "DxMenu"
           ],
+          "nesteds": [
+            {
+              "componentName": "delay",
+              "optionName": "delay"
+            }
+          ],
           "props": [
             {
               "name": "delay",
@@ -90565,6 +92655,25 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "item",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "showFirstSubmenuMode",
+          "optionName": "showFirstSubmenuMode"
+        },
+        {
+          "componentName": "showSubmenuMode",
+          "optionName": "showSubmenuMode"
+        }
       ]
     },
     {
@@ -93845,6 +95954,12 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "format",
+          "optionName": "format"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -96829,6 +98944,20 @@
           "owners": [
             "series"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -96862,6 +98991,32 @@
           "owners": [
             "series"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "connector",
+              "optionName": "connector"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "argumentFormat",
@@ -96980,6 +99135,24 @@
           "owners": [
             "DxPieChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "legendBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -97412,6 +99585,12 @@
           "owners": [
             "DxPieChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -97498,6 +99677,20 @@
           "owners": [
             "series"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -97531,6 +99724,32 @@
           "owners": [
             "DxPieChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "smallValuesGrouping",
+              "optionName": "smallValuesGrouping"
+            }
+          ],
           "props": [
             {
               "name": "argumentField",
@@ -97891,6 +100110,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -97917,6 +100142,20 @@
           "owners": [
             "DxPieChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -98051,6 +100290,32 @@
           "owners": [
             "DxPieChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "argumentFormat",
@@ -98330,6 +100595,57 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "adaptiveLayout",
+          "optionName": "adaptiveLayout"
+        },
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "commonSeriesSettings",
+          "optionName": "commonSeriesSettings"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "legend",
+          "optionName": "legend"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "series",
+          "isCollectionItem": true,
+          "optionName": "series"
+        },
+        {
+          "componentName": "seriesTemplate",
+          "optionName": "seriesTemplate"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -100052,6 +102368,16 @@
           "owners": [
             "DxPivotGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "fieldChooserTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowSearch",
@@ -100233,6 +102559,16 @@
           "owners": [
             "DxPivotGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "fieldPanelTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowFieldDragging",
@@ -100373,6 +102709,16 @@
           "owners": [
             "DxPivotGrid"
           ],
+          "nesteds": [
+            {
+              "componentName": "headerFilterTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowSearch",
@@ -100941,6 +103287,44 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "fieldChooser",
+          "optionName": "fieldChooser"
+        },
+        {
+          "componentName": "fieldPanel",
+          "optionName": "fieldPanel"
+        },
+        {
+          "componentName": "headerFilter",
+          "optionName": "headerFilter"
+        },
+        {
+          "componentName": "loadPanel",
+          "optionName": "loadPanel"
+        },
+        {
+          "componentName": "pivotGridTexts",
+          "optionName": "texts"
+        },
+        {
+          "componentName": "scrolling",
+          "optionName": "scrolling"
+        },
+        {
+          "componentName": "stateStoring",
+          "optionName": "stateStoring"
+        },
+        {
+          "componentName": "texts",
+          "optionName": "texts"
+        }
       ]
     },
     {
@@ -101563,6 +103947,16 @@
           "owners": [
             "DxPivotGridFieldChooser"
           ],
+          "nesteds": [
+            {
+              "componentName": "headerFilterTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowSearch",
@@ -101788,6 +104182,20 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "headerFilter",
+          "optionName": "headerFilter"
+        },
+        {
+          "componentName": "pivotGridFieldChooserTexts",
+          "optionName": "texts"
+        },
+        {
+          "componentName": "texts",
+          "optionName": "texts"
+        }
       ]
     },
     {
@@ -106656,6 +109064,34 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "axisLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "constantLine",
+              "isCollectionItem": true,
+              "optionName": "constantLines"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorTickInterval",
+              "optionName": "minorTickInterval"
+            },
+            {
+              "componentName": "strip",
+              "isCollectionItem": true,
+              "optionName": "strips"
+            },
+            {
+              "componentName": "tickInterval",
+              "optionName": "tickInterval"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -107828,6 +110264,40 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "commonAxisSettingsLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "constantLineStyle",
+              "optionName": "constantLineStyle"
+            },
+            {
+              "componentName": "grid",
+              "optionName": "grid"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorGrid",
+              "optionName": "minorGrid"
+            },
+            {
+              "componentName": "minorTick",
+              "optionName": "minorTick"
+            },
+            {
+              "componentName": "stripStyle",
+              "optionName": "stripStyle"
+            },
+            {
+              "componentName": "tick",
+              "optionName": "tick"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -108232,6 +110702,12 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -108278,6 +110754,48 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "commonSeriesSettingsHoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "commonSeriesSettingsLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "commonSeriesSettingsSelectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "point",
+              "optionName": "point"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "valueErrorBar",
+              "optionName": "valueErrorBar"
+            }
+          ],
           "props": [
             {
               "name": "area",
@@ -108565,6 +111083,20 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -108620,6 +111152,32 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "connector",
+              "optionName": "connector"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "argumentFormat",
@@ -108737,6 +111295,20 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -108958,6 +111530,16 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "constantLineStyleLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -109024,6 +111606,12 @@
           "owners": [
             "constantLineStyle"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -109799,6 +112387,24 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "legendBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -110232,6 +112838,12 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -110490,6 +113102,36 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "image",
+              "optionName": "image"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointHoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "pointSelectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -110636,6 +113278,16 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -110669,6 +113321,16 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -111294,6 +113956,16 @@
           "owners": [
             "commonAxisSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "stripStyleLabel",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "label",
@@ -111322,6 +113994,12 @@
           "owners": [
             "stripStyle"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -111340,6 +114018,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -111498,6 +114182,20 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -111632,6 +114330,32 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "argumentFormat",
@@ -111925,6 +114649,38 @@
           "owners": [
             "DxPolarChart"
           ],
+          "nesteds": [
+            {
+              "componentName": "axisLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "constantLine",
+              "isCollectionItem": true,
+              "optionName": "constantLines"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "minorTickInterval",
+              "optionName": "minorTickInterval"
+            },
+            {
+              "componentName": "strip",
+              "isCollectionItem": true,
+              "optionName": "strips"
+            },
+            {
+              "componentName": "tick",
+              "optionName": "tick"
+            },
+            {
+              "componentName": "tickInterval",
+              "optionName": "tickInterval"
+            }
+          ],
           "props": [
             {
               "name": "allowDecimals",
@@ -112847,6 +115603,73 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "adaptiveLayout",
+          "optionName": "adaptiveLayout"
+        },
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "argumentAxis",
+          "optionName": "argumentAxis"
+        },
+        {
+          "componentName": "commonAxisSettings",
+          "optionName": "commonAxisSettings"
+        },
+        {
+          "componentName": "commonSeriesSettings",
+          "optionName": "commonSeriesSettings"
+        },
+        {
+          "componentName": "dataPrepareSettings",
+          "optionName": "dataPrepareSettings"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "legend",
+          "optionName": "legend"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "series",
+          "isCollectionItem": true,
+          "optionName": "series"
+        },
+        {
+          "componentName": "seriesTemplate",
+          "optionName": "seriesTemplate"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        },
+        {
+          "componentName": "valueAxis",
+          "optionName": "valueAxis"
+        }
       ]
     },
     {
@@ -113864,6 +116687,16 @@
           "owners": [
             "DxPopover"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -114234,6 +117067,28 @@
           "owners": [
             "DxPopover"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -114643,6 +117498,29 @@
             "template"
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "hideEvent",
+          "optionName": "hideEvent"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        },
+        {
+          "componentName": "showEvent",
+          "optionName": "showEvent"
+        },
+        {
+          "componentName": "toolbarItem",
+          "isCollectionItem": true,
+          "optionName": "toolbarItems"
+        }
       ]
     },
     {
@@ -115798,6 +118676,16 @@
           "owners": [
             "DxPopup"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -116143,6 +119031,28 @@
           "owners": [
             "DxPopup"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -116527,6 +119437,21 @@
             "template"
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        },
+        {
+          "componentName": "toolbarItem",
+          "isCollectionItem": true,
+          "optionName": "toolbarItems"
+        }
       ]
     },
     {
@@ -120320,6 +123245,16 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "backgroundImage",
+              "optionName": "image"
+            },
+            {
+              "componentName": "image",
+              "optionName": "image"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -120609,6 +123544,29 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "commonSeriesSettings",
+              "optionName": "commonSeriesSettings"
+            },
+            {
+              "componentName": "dataPrepareSettings",
+              "optionName": "dataPrepareSettings"
+            },
+            {
+              "componentName": "series",
+              "isCollectionItem": true,
+              "optionName": "series"
+            },
+            {
+              "componentName": "seriesTemplate",
+              "optionName": "seriesTemplate"
+            },
+            {
+              "componentName": "valueAxis",
+              "optionName": "valueAxis"
+            }
+          ],
           "props": [
             {
               "name": "barGroupPadding",
@@ -120981,6 +123939,56 @@
           "owners": [
             "chart"
           ],
+          "nesteds": [
+            {
+              "componentName": "aggregation",
+              "optionName": "aggregation"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "commonSeriesSettingsHoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "commonSeriesSettingsLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "commonSeriesSettingsSelectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "point",
+              "optionName": "point"
+            },
+            {
+              "componentName": "reduction",
+              "optionName": "reduction"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "valueErrorBar",
+              "optionName": "valueErrorBar"
+            }
+          ],
           "props": [
             {
               "name": "aggregation",
@@ -121518,6 +124526,20 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -121573,6 +124595,32 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "argumentFormat",
+              "optionName": "argumentFormat"
+            },
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "connector",
+              "optionName": "connector"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -121719,6 +124767,20 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hatching",
+              "optionName": "hatching"
+            },
+            {
+              "componentName": "seriesBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -122660,6 +125722,12 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -122745,6 +125813,16 @@
           "owners": [
             "scale"
           ],
+          "nesteds": [
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "markerLabel",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "label",
@@ -122855,6 +125933,12 @@
           "owners": [
             "marker"
           ],
+          "nesteds": [
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -123199,6 +126283,40 @@
           "owners": [
             "commonSeriesSettings"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "image",
+              "optionName": "image"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointHoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "pointImage",
+              "optionName": "image"
+            },
+            {
+              "componentName": "pointSelectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -123346,6 +126464,16 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -123379,6 +126507,20 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "height",
+              "optionName": "height"
+            },
+            {
+              "componentName": "url",
+              "optionName": "url"
+            },
+            {
+              "componentName": "width",
+              "optionName": "width"
+            }
+          ],
           "props": [
             {
               "name": "height",
@@ -123421,6 +126563,16 @@
           "owners": [
             "point"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "pointBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -123485,6 +126637,57 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "aggregationInterval",
+              "optionName": "aggregationInterval"
+            },
+            {
+              "componentName": "break",
+              "isCollectionItem": true,
+              "optionName": "breaks"
+            },
+            {
+              "componentName": "breakStyle",
+              "optionName": "breakStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "marker",
+              "optionName": "marker"
+            },
+            {
+              "componentName": "maxRange",
+              "optionName": "maxRange"
+            },
+            {
+              "componentName": "minorTick",
+              "optionName": "minorTick"
+            },
+            {
+              "componentName": "minorTickInterval",
+              "optionName": "minorTickInterval"
+            },
+            {
+              "componentName": "minRange",
+              "optionName": "minRange"
+            },
+            {
+              "componentName": "scaleLabel",
+              "optionName": "label"
+            },
+            {
+              "componentName": "tick",
+              "optionName": "tick"
+            },
+            {
+              "componentName": "tickInterval",
+              "optionName": "tickInterval"
+            }
+          ],
           "props": [
             {
               "name": "aggregationGroupWidth",
@@ -124155,6 +127358,16 @@
           "owners": [
             "scale"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -124858,6 +128071,16 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "color",
@@ -124975,6 +128198,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -125115,6 +128344,20 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -125274,6 +128517,12 @@
           "owners": [
             "DxRangeSelector"
           ],
+          "nesteds": [
+            {
+              "componentName": "length",
+              "optionName": "length"
+            }
+          ],
           "props": [
             {
               "name": "endValue",
@@ -125515,6 +128764,64 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "background",
+          "optionName": "background"
+        },
+        {
+          "componentName": "behavior",
+          "optionName": "behavior"
+        },
+        {
+          "componentName": "chart",
+          "optionName": "chart"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "indent",
+          "optionName": "indent"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "scale",
+          "optionName": "scale"
+        },
+        {
+          "componentName": "shutter",
+          "optionName": "shutter"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "sliderHandle",
+          "optionName": "sliderHandle"
+        },
+        {
+          "componentName": "sliderMarker",
+          "optionName": "sliderMarker"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "value",
+          "optionName": "value"
+        }
       ]
     },
     {
@@ -126227,6 +129534,12 @@
           "owners": [
             "DxRangeSlider"
           ],
+          "nesteds": [
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "format",
@@ -126265,6 +129578,12 @@
           "owners": [
             "DxRangeSlider"
           ],
+          "nesteds": [
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "enabled",
@@ -126310,6 +129629,16 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "label",
+          "optionName": "label"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -128246,6 +131575,18 @@
           ],
           "isCollectionItem": true
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "col",
+          "isCollectionItem": true,
+          "optionName": "cols"
+        },
+        {
+          "componentName": "row",
+          "isCollectionItem": true,
+          "optionName": "rows"
+        }
       ]
     },
     {
@@ -130874,6 +134215,24 @@
           "owners": [
             "DxSankey"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "sankeyborder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -131043,6 +134402,20 @@
           "owners": [
             "DxSankey"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "sankeyborder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -131223,6 +134596,12 @@
           "owners": [
             "DxSankey"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -131308,6 +134687,20 @@
           "owners": [
             "DxSankey"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "sankeyborder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -131602,6 +134995,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -131628,6 +135027,20 @@
           "owners": [
             "DxSankey"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -131762,6 +135175,28 @@
           "owners": [
             "DxSankey"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -132105,6 +135540,48 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "adaptiveLayout",
+          "optionName": "adaptiveLayout"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "label",
+          "optionName": "label"
+        },
+        {
+          "componentName": "link",
+          "optionName": "link"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "node",
+          "optionName": "node"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -135304,6 +138781,22 @@
             "timeCellTemplate"
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "editing",
+          "optionName": "editing"
+        },
+        {
+          "componentName": "resource",
+          "isCollectionItem": true,
+          "optionName": "resources"
+        },
+        {
+          "componentName": "view",
+          "isCollectionItem": true,
+          "optionName": "views"
+        }
       ]
     },
     {
@@ -140061,6 +143554,12 @@
           "owners": [
             "DxSlider"
           ],
+          "nesteds": [
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "format",
@@ -140099,6 +143598,12 @@
           "owners": [
             "DxSlider"
           ],
+          "nesteds": [
+            {
+              "componentName": "format",
+              "optionName": "format"
+            }
+          ],
           "props": [
             {
               "name": "enabled",
@@ -140144,6 +143649,16 @@
           ]
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "label",
+          "optionName": "label"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
+      ],
       "isEditor": true
     },
     {
@@ -141618,6 +145133,24 @@
           "owners": [
             "DxSparkline"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -141833,6 +145366,20 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "margin",
+          "optionName": "margin"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -150730,6 +154277,16 @@
           "owners": [
             "DxToast"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -151075,6 +154632,28 @@
           "owners": [
             "DxToast"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -151354,6 +154933,16 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        }
       ]
     },
     {
@@ -152960,6 +156549,16 @@
           "owners": [
             "DxTooltip"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -153330,6 +156929,28 @@
           "owners": [
             "DxTooltip"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -153634,6 +157255,24 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "animation",
+          "optionName": "animation"
+        },
+        {
+          "componentName": "hideEvent",
+          "optionName": "hideEvent"
+        },
+        {
+          "componentName": "position",
+          "optionName": "position"
+        },
+        {
+          "componentName": "showEvent",
+          "optionName": "showEvent"
+        }
       ]
     },
     {
@@ -158718,6 +162357,16 @@
           "owners": [
             "popup"
           ],
+          "nesteds": [
+            {
+              "componentName": "hide",
+              "optionName": "hide"
+            },
+            {
+              "componentName": "show",
+              "optionName": "show"
+            }
+          ],
           "props": [
             {
               "name": "hide",
@@ -158834,7 +162483,15 @@
               "name": "name",
               "types": [
                 {
-                  "type": "String"
+                  "type": "String",
+                  "acceptableValues": [
+                    "\"add\"",
+                    "\"cancel\"",
+                    "\"delete\"",
+                    "\"edit\"",
+                    "\"save\"",
+                    "\"undelete\""
+                  ]
                 }
               ]
             },
@@ -158936,7 +162593,76 @@
                       "name": "cellInfo",
                       "types": [
                         {
-                          "type": "Object"
+                          "type": "Object",
+                          "fields": [
+                            {
+                              "name": "component",
+                              "types": [
+                                {
+                                  "type": "dxTreeList",
+                                  "isCustomType": true
+                                }
+                              ]
+                            },
+                            {
+                              "name": "data",
+                              "types": [
+                                {
+                                  "type": "Object"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "key",
+                              "types": [
+                                {
+                                  "type": "Any"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "columnIndex",
+                              "types": [
+                                {
+                                  "type": "Number"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "column",
+                              "types": [
+                                {
+                                  "type": "dxTreeListColumn",
+                                  "isCustomType": true
+                                }
+                              ]
+                            },
+                            {
+                              "name": "rowIndex",
+                              "types": [
+                                {
+                                  "type": "Number"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "rowType",
+                              "types": [
+                                {
+                                  "type": "String"
+                                }
+                              ]
+                            },
+                            {
+                              "name": "row",
+                              "types": [
+                                {
+                                  "type": "dxTreeListRowObject",
+                                  "isCustomType": true
+                                }
+                              ]
+                            }
+                          ]
                         }
                       ]
                     }
@@ -159024,6 +162750,12 @@
           "owners": [
             "form"
           ],
+          "nesteds": [
+            {
+              "componentName": "buttonOptions",
+              "optionName": "buttonOptions"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -159853,6 +163585,37 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "button",
+              "isCollectionItem": true,
+              "optionName": "buttons"
+            },
+            {
+              "componentName": "columnHeaderFilter",
+              "optionName": "headerFilter"
+            },
+            {
+              "componentName": "columnLookup",
+              "optionName": "lookup"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "formItem",
+              "optionName": "formItem"
+            },
+            {
+              "componentName": "headerFilter",
+              "optionName": "headerFilter"
+            },
+            {
+              "componentName": "lookup",
+              "optionName": "lookup"
+            }
+          ],
           "props": [
             {
               "name": "alignment",
@@ -160772,6 +164535,16 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "columnFixingTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "enabled",
@@ -161502,6 +165275,24 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "editingTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "form",
+              "optionName": "form"
+            },
+            {
+              "componentName": "popup",
+              "optionName": "popup"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowAdding",
@@ -162015,6 +165806,20 @@
           "owners": [
             "filterBuilder"
           ],
+          "nesteds": [
+            {
+              "componentName": "fieldLookup",
+              "optionName": "lookup"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "lookup",
+              "optionName": "lookup"
+            }
+          ],
           "props": [
             {
               "name": "calculateFilterExpression",
@@ -162381,6 +166186,26 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "customOperation",
+              "isCollectionItem": true,
+              "optionName": "customOperations"
+            },
+            {
+              "componentName": "field",
+              "isCollectionItem": true,
+              "optionName": "fields"
+            },
+            {
+              "componentName": "filterOperationDescriptions",
+              "optionName": "filterOperationDescriptions"
+            },
+            {
+              "componentName": "groupOperationDescriptions",
+              "optionName": "groupOperationDescriptions"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -164805,6 +168630,16 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "filterPanelTexts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "customizeText",
@@ -164946,6 +168781,12 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "operationDescriptions",
+              "optionName": "operationDescriptions"
+            }
+          ],
           "props": [
             {
               "name": "applyFilter",
@@ -165121,6 +168962,42 @@
           "owners": [
             "editing"
           ],
+          "nesteds": [
+            {
+              "componentName": "ButtonItem",
+              "isCollectionItem": true,
+              "optionName": "items"
+            },
+            {
+              "componentName": "colCountByScreen",
+              "optionName": "colCountByScreen"
+            },
+            {
+              "componentName": "EmptyItem",
+              "isCollectionItem": true,
+              "optionName": "items"
+            },
+            {
+              "componentName": "GroupItem",
+              "isCollectionItem": true,
+              "optionName": "items"
+            },
+            {
+              "componentName": "item",
+              "isCollectionItem": true,
+              "optionName": "items"
+            },
+            {
+              "componentName": "SimpleItem",
+              "isCollectionItem": true,
+              "optionName": "items"
+            },
+            {
+              "componentName": "TabbedItem",
+              "isCollectionItem": true,
+              "optionName": "items"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -166023,6 +169900,57 @@
           "owners": [
             "column"
           ],
+          "nesteds": [
+            {
+              "componentName": "CompareRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "CustomRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "EmailRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "NumericRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "PatternRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "RangeRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "RequiredRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "StringLengthRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            },
+            {
+              "componentName": "validationRule",
+              "isCollectionItem": true,
+              "optionName": "validationRules"
+            }
+          ],
           "props": [
             {
               "name": "colSpan",
@@ -167781,6 +171709,21 @@
           "owners": [
             "editing"
           ],
+          "nesteds": [
+            {
+              "componentName": "animation",
+              "optionName": "animation"
+            },
+            {
+              "componentName": "position",
+              "optionName": "position"
+            },
+            {
+              "componentName": "toolbarItem",
+              "isCollectionItem": true,
+              "optionName": "toolbarItems"
+            }
+          ],
           "props": [
             {
               "name": "accessKey",
@@ -169045,6 +172988,28 @@
           "owners": [
             "popup"
           ],
+          "nesteds": [
+            {
+              "componentName": "at",
+              "optionName": "at"
+            },
+            {
+              "componentName": "boundaryOffset",
+              "optionName": "boundaryOffset"
+            },
+            {
+              "componentName": "collision",
+              "optionName": "collision"
+            },
+            {
+              "componentName": "my",
+              "optionName": "my"
+            },
+            {
+              "componentName": "offset",
+              "optionName": "offset"
+            }
+          ],
           "props": [
             {
               "name": "at",
@@ -170294,6 +174259,17 @@
           "owners": [
             "form"
           ],
+          "nesteds": [
+            {
+              "componentName": "tab",
+              "isCollectionItem": true,
+              "optionName": "tabs"
+            },
+            {
+              "componentName": "tabPanelOptions",
+              "optionName": "tabPanelOptions"
+            }
+          ],
           "props": [
             {
               "name": "colSpan",
@@ -172343,6 +176319,16 @@
           "owners": [
             "DxTreeList"
           ],
+          "nesteds": [
+            {
+              "componentName": "texts",
+              "optionName": "texts"
+            },
+            {
+              "componentName": "treeListHeaderFilterTexts",
+              "optionName": "texts"
+            }
+          ],
           "props": [
             {
               "name": "allowSearch",
@@ -172629,6 +176615,85 @@
             "type": "required"
           }
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "column",
+          "isCollectionItem": true,
+          "optionName": "columns"
+        },
+        {
+          "componentName": "columnChooser",
+          "optionName": "columnChooser"
+        },
+        {
+          "componentName": "columnFixing",
+          "optionName": "columnFixing"
+        },
+        {
+          "componentName": "editing",
+          "optionName": "editing"
+        },
+        {
+          "componentName": "filterBuilder",
+          "optionName": "filterBuilder"
+        },
+        {
+          "componentName": "filterBuilderPopup",
+          "optionName": "filterBuilderPopup"
+        },
+        {
+          "componentName": "filterPanel",
+          "optionName": "filterPanel"
+        },
+        {
+          "componentName": "filterRow",
+          "optionName": "filterRow"
+        },
+        {
+          "componentName": "headerFilter",
+          "optionName": "headerFilter"
+        },
+        {
+          "componentName": "loadPanel",
+          "optionName": "loadPanel"
+        },
+        {
+          "componentName": "pager",
+          "optionName": "pager"
+        },
+        {
+          "componentName": "paging",
+          "optionName": "paging"
+        },
+        {
+          "componentName": "remoteOperations",
+          "optionName": "remoteOperations"
+        },
+        {
+          "componentName": "scrolling",
+          "optionName": "scrolling"
+        },
+        {
+          "componentName": "searchPanel",
+          "optionName": "searchPanel"
+        },
+        {
+          "componentName": "selection",
+          "optionName": "selection"
+        },
+        {
+          "componentName": "sorting",
+          "optionName": "sorting"
+        },
+        {
+          "componentName": "stateStoring",
+          "optionName": "stateStoring"
+        },
+        {
+          "componentName": "treeListHeaderFilter",
+          "optionName": "headerFilter"
+        }
       ]
     },
     {
@@ -175124,6 +179189,28 @@
           "owners": [
             "DxTreeMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "treeMapborder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -175369,6 +179456,12 @@
           "owners": [
             "DxTreeMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -175571,6 +179664,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -175597,6 +179696,28 @@
           "owners": [
             "DxTreeMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "hoverStyle",
+              "optionName": "hoverStyle"
+            },
+            {
+              "componentName": "label",
+              "optionName": "label"
+            },
+            {
+              "componentName": "selectionStyle",
+              "optionName": "selectionStyle"
+            },
+            {
+              "componentName": "treeMapborder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "border",
@@ -175755,6 +179876,20 @@
           "owners": [
             "DxTreeMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -175889,6 +180024,28 @@
           "owners": [
             "DxTreeMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -176216,6 +180373,40 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "colorizer",
+          "optionName": "colorizer"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "group",
+          "optionName": "group"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "tile",
+          "optionName": "tile"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     },
     {
@@ -179210,6 +183401,17 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "item",
+          "isCollectionItem": true,
+          "optionName": "items"
+        },
+        {
+          "componentName": "searchEditorOptions",
+          "optionName": "searchEditorOptions"
+        }
       ]
     },
     {
@@ -181065,6 +185267,57 @@
           }
         }
       ],
+      "nesteds": [
+        {
+          "componentName": "adapter",
+          "optionName": "adapter"
+        },
+        {
+          "componentName": "CompareRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "CustomRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "EmailRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "NumericRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "PatternRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "RangeRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "RequiredRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "StringLengthRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        },
+        {
+          "componentName": "validationRule",
+          "isCollectionItem": true,
+          "optionName": "validationRules"
+        }
+      ],
       "isExtension": true
     },
     {
@@ -183872,6 +188125,12 @@
           "owners": [
             "layer"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "dataField",
@@ -183906,6 +188165,12 @@
           "owners": [
             "DxVectorMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "label",
+              "optionName": "label"
+            }
+          ],
           "props": [
             {
               "name": "borderColor",
@@ -184249,6 +188514,28 @@
           "owners": [
             "DxVectorMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "legendBorder",
+              "optionName": "border"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "source",
+              "optionName": "source"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -184748,6 +189035,12 @@
           "owners": [
             "DxVectorMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "backgroundColor",
@@ -184932,6 +189225,12 @@
           "owners": [
             "title"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -184958,6 +189257,20 @@
           "owners": [
             "DxVectorMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "margin",
+              "optionName": "margin"
+            },
+            {
+              "componentName": "subtitle",
+              "optionName": "subtitle"
+            }
+          ],
           "props": [
             {
               "name": "font",
@@ -185092,6 +189405,28 @@
           "owners": [
             "DxVectorMap"
           ],
+          "nesteds": [
+            {
+              "componentName": "border",
+              "optionName": "border"
+            },
+            {
+              "componentName": "font",
+              "optionName": "font"
+            },
+            {
+              "componentName": "format",
+              "optionName": "format"
+            },
+            {
+              "componentName": "shadow",
+              "optionName": "shadow"
+            },
+            {
+              "componentName": "tooltipBorder",
+              "optionName": "border"
+            }
+          ],
           "props": [
             {
               "name": "arrowLength",
@@ -185363,6 +189698,46 @@
             }
           ]
         }
+      ],
+      "nesteds": [
+        {
+          "componentName": "background",
+          "optionName": "background"
+        },
+        {
+          "componentName": "controlBar",
+          "optionName": "controlBar"
+        },
+        {
+          "componentName": "export",
+          "optionName": "export"
+        },
+        {
+          "componentName": "layer",
+          "isCollectionItem": true,
+          "optionName": "layers"
+        },
+        {
+          "componentName": "legend",
+          "isCollectionItem": true,
+          "optionName": "legends"
+        },
+        {
+          "componentName": "loadingIndicator",
+          "optionName": "loadingIndicator"
+        },
+        {
+          "componentName": "size",
+          "optionName": "size"
+        },
+        {
+          "componentName": "title",
+          "optionName": "title"
+        },
+        {
+          "componentName": "tooltip",
+          "optionName": "tooltip"
+        }
       ]
     }
   ],
@@ -195756,7 +200131,14 @@
           "name": "name",
           "types": [
             {
-              "type": "String"
+              "type": "String",
+              "acceptableValues": [
+                "\"cancel\"",
+                "\"delete\"",
+                "\"edit\"",
+                "\"save\"",
+                "\"undelete\""
+              ]
             }
           ]
         },
@@ -195858,7 +200240,76 @@
                   "name": "cellInfo",
                   "types": [
                     {
-                      "type": "Object"
+                      "type": "Object",
+                      "fields": [
+                        {
+                          "name": "component",
+                          "types": [
+                            {
+                              "type": "dxDataGrid",
+                              "isCustomType": true
+                            }
+                          ]
+                        },
+                        {
+                          "name": "data",
+                          "types": [
+                            {
+                              "type": "Object"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "key",
+                          "types": [
+                            {
+                              "type": "Any"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "columnIndex",
+                          "types": [
+                            {
+                              "type": "Number"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "column",
+                          "types": [
+                            {
+                              "type": "dxDataGridColumn",
+                              "isCustomType": true
+                            }
+                          ]
+                        },
+                        {
+                          "name": "rowIndex",
+                          "types": [
+                            {
+                              "type": "Number"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "rowType",
+                          "types": [
+                            {
+                              "type": "String"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "row",
+                          "types": [
+                            {
+                              "type": "dxDataGridRowObject",
+                              "isCustomType": true
+                            }
+                          ]
+                        }
+                      ]
                     }
                   ]
                 }
@@ -206782,7 +211233,15 @@
           "name": "name",
           "types": [
             {
-              "type": "String"
+              "type": "String",
+              "acceptableValues": [
+                "\"add\"",
+                "\"cancel\"",
+                "\"delete\"",
+                "\"edit\"",
+                "\"save\"",
+                "\"undelete\""
+              ]
             }
           ]
         },
@@ -206884,7 +211343,76 @@
                   "name": "cellInfo",
                   "types": [
                     {
-                      "type": "Object"
+                      "type": "Object",
+                      "fields": [
+                        {
+                          "name": "component",
+                          "types": [
+                            {
+                              "type": "dxTreeList",
+                              "isCustomType": true
+                            }
+                          ]
+                        },
+                        {
+                          "name": "data",
+                          "types": [
+                            {
+                              "type": "Object"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "key",
+                          "types": [
+                            {
+                              "type": "Any"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "columnIndex",
+                          "types": [
+                            {
+                              "type": "Number"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "column",
+                          "types": [
+                            {
+                              "type": "dxTreeListColumn",
+                              "isCustomType": true
+                            }
+                          ]
+                        },
+                        {
+                          "name": "rowIndex",
+                          "types": [
+                            {
+                              "type": "Number"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "rowType",
+                          "types": [
+                            {
+                              "type": "String"
+                            }
+                          ]
+                        },
+                        {
+                          "name": "row",
+                          "types": [
+                            {
+                              "type": "dxTreeListRowObject",
+                              "isCustomType": true
+                            }
+                          ]
+                        }
+                      ]
                     }
                   ]
                 }
diff --git a/tools/src/component-generator.ts b/tools/src/component-generator.ts
index fdcdaee..72b4c69 100644
--- a/tools/src/component-generator.ts
+++ b/tools/src/component-generator.ts
@@ -1,11 +1,16 @@
 import { compareStrings } from "./helpers";
-import { createTempate, L1, L2, L3, L4, TAB2 } from "./template";
+import { createTempate, L0, L1, L2, L3, L4, TAB2 } from "./template";
 
 interface IImport {
     name: string;
     path: string;
 }
 
+interface IExpectedChild {
+    isCollectionItem: boolean;
+    optionName: string;
+}
+
 interface IComponent {
     name: string;
     widgetComponent: IImport;
@@ -14,6 +19,7 @@ interface IComponent {
     props?: IProp[];
     hasModel?: boolean;
     nestedComponents?: INestedComponent[];
+    expectedChildren: Record<string, IExpectedChild>;
 }
 
 interface INestedComponent {
@@ -21,6 +27,7 @@ interface INestedComponent {
     optionName: string;
     props: IProp[];
     isCollectionItem: boolean;
+    expectedChildren: Record<string, IExpectedChild>;
     predefinedProps?: Record<string, any>;
 }
 
@@ -33,6 +40,16 @@ interface INestedComponentModel {
         name: string;
         value: any;
     }>;
+    expectedChildren: Array<{
+        name: string;
+        isCollectionItem: boolean;
+    }>;
+}
+
+interface IExpectedChildModel {
+    name: string;
+    isCollectionItem: boolean;
+    optionName: string;
 }
 
 interface IProp {
@@ -88,7 +105,8 @@ function generate(component: IComponent): string {
 
         nestedComponents,
         defaultExport: component.name,
-        namedExports
+        namedExports,
+        expectedChildren: formatExpectedChildren(component.expectedChildren),
     };
 
     return renderComponent(componentModel);
@@ -111,10 +129,21 @@ function createNestedComponentModel(component: INestedComponent): INestedCompone
             ? renderProps(component.props)
             : undefined,
         isCollectionItem: component.isCollectionItem,
+        expectedChildren: formatExpectedChildren(component.expectedChildren),
         predefinedProps
     };
 }
 
+function formatExpectedChildren(dict: Record<string, IExpectedChild>): IExpectedChildModel[] {
+    if (!dict) { return undefined; }
+
+    return Object.keys(dict).map((name) => ({
+        name,
+        isCollectionItem: dict[name].isCollectionItem,
+        optionName: dict[name].optionName
+    }));
+}
+
 // tslint:disable:max-line-length
 
 const renderComponent: (model: {
@@ -126,6 +155,7 @@ const renderComponent: (model: {
     renderedProps?: string;
     hasModel?: boolean;
     nestedComponents?: INestedComponentModel[];
+    expectedChildren: IExpectedChildModel[];
     defaultExport: string;
     namedExports: string[];
 }) => string = createTempate(
@@ -163,16 +193,26 @@ L1 + `extends: <#= it.baseComponent #>,` +
   L1 + `model: { prop: "value", event: "update:value" },` +
 `<#?#>` +
 
-  L1 + `computed: {
-    instance(): <#= it.widgetImport.name #> {
-      return (this as any).$_instance;
-    }
-  },` +
+L1 + `computed: {` +
+    L2 + `instance(): <#= it.widgetImport.name #> {` +
+        L3 + `return (this as any).$_instance;` +
+    L2 + `}` +
+L1 + `},` +
+
+L1 + `beforeCreate() {` +
+    L2 + `(this as any).$_WidgetClass = <#= it.widgetImport.name #>;` +
 
-  L1 + `beforeCreate() {
-    (this as any).$_WidgetClass = <#= it.widgetImport.name #>;
-  }
-});\n` +
+    `<#? it.expectedChildren #>` +
+    L2 + `(this as any).$_expectedChildren = {` +
+    `<#~ it.expectedChildren : child #>` +
+        L3 + `<#= child.name #>: { isCollectionItem: <#= child.isCollectionItem #>, optionName: "<#= child.optionName #>" },` +
+    `<#~#>` + `\b` +
+    L2 + `};` +
+    `<#?#>` +
+
+L1 + `}` +
+
+L0 + `});\n` +
 
 `<#? it.nestedComponents #>` +
     `\n` +
@@ -193,7 +233,15 @@ L1 + `extends: <#= it.baseComponent #>,` +
             `(<#= nested.name #> as any).$_predefinedProps = {` +
             `<#~ nested.predefinedProps : prop #>` +
                 L1 + `<#= prop.name #>: "<#= prop.value #>",` +
-            `<#~#>` + `\b` + `\n` +
+            `<#~#>` + `\b\n` +
+            `};\n` +
+        `<#?#>` +
+
+        `<#? nested.expectedChildren #>` +
+            `(<#= nested.name #> as any).$_expectedChildren = {` +
+            `<#~ nested.expectedChildren : child #>` +
+                L1 + `<#= child.name #>: { isCollectionItem: <#= child.isCollectionItem #>, optionName: "<#= child.optionName #>" },` +
+            `<#~#>` + `\b\n` +
             `};\n` +
         `<#?#>` +
 
@@ -298,4 +346,11 @@ const renderPropsTemplate: (props: IProp[]) => string = createTempate(
 );
 
 export default generate;
-export { IComponent, INestedComponent, IProp, renderProps, generateReExport };
+export {
+    IComponent,
+    IExpectedChild,
+    INestedComponent,
+    IProp,
+    renderProps,
+    generateReExport
+};
diff --git a/tools/src/generator.ts b/tools/src/generator.ts
index c99989a..77ae30b 100644
--- a/tools/src/generator.ts
+++ b/tools/src/generator.ts
@@ -7,8 +7,24 @@ import {
   sep as pathSeparator
 } from "path";
 
-import { IComplexProp, ICustomType, IModel, IProp as IOption, ITypeDescr, IWidget } from "../integration-data-model";
-import generateComponent, { generateReExport, IComponent, INestedComponent, IProp } from "./component-generator";
+import {
+  IComplexProp,
+  IComponentRef,
+  ICustomType,
+  IModel,
+  IProp as IOption,
+  ITypeDescr,
+  IWidget
+} from "../integration-data-model";
+
+import generateComponent, {
+  generateReExport,
+  IComponent,
+  IExpectedChild,
+  INestedComponent,
+  IProp
+} from "./component-generator";
+
 import { convertTypes } from "./converter";
 import { removeExtension, removePrefix, toKebabCase, uppercaseFirst } from "./helpers";
 import generateIndex, { IReExport } from "./index-generator";
@@ -93,18 +109,23 @@ function mapWidget(
       hasModel: !!raw.isEditor,
       nestedComponents: raw.complexOptions
         ? raw.complexOptions.map((o) => mapNestedComponent(o, customTypeHash))
-        : undefined
+        : undefined,
+        expectedChildren: mapExpectedChildren(raw.nesteds)
     }
   };
 }
 
-function mapNestedComponent(complexOption: IComplexProp, customTypes: Record<string, ICustomType>): INestedComponent {
+function mapNestedComponent(
+  complexOption: IComplexProp,
+  customTypes: Record<string, ICustomType>
+): INestedComponent {
   return {
     name: `Dx${uppercaseFirst(complexOption.name)}`,
     optionName: complexOption.optionName,
     props: complexOption.props.map((o) => mapProp(o, customTypes)),
     isCollectionItem: complexOption.isCollectionItem,
-    predefinedProps: complexOption.predefinedProps
+    predefinedProps: complexOption.predefinedProps,
+    expectedChildren: mapExpectedChildren(complexOption.nesteds)
   };
 }
 
@@ -123,4 +144,20 @@ function mapProp(rawOption: IOption, customTypes: Record<string, ICustomType>):
   };
 }
 
+function mapExpectedChildren(nesteds: IComponentRef[]): Record<string, IExpectedChild> {
+  if (!nesteds || nesteds.length === 0) {
+    return undefined;
+  }
+
+  const expectedChildren = {};
+  nesteds.forEach((n) => {
+    expectedChildren[n.componentName] = {
+      isCollectionItem: !!n.isCollectionItem,
+      optionName: n.optionName
+    };
+  });
+
+  return expectedChildren;
+}
+
 export default generate;
diff --git a/tools/src/template.ts b/tools/src/template.ts
index 5c82369..33a33c8 100644
--- a/tools/src/template.ts
+++ b/tools/src/template.ts
@@ -21,6 +21,7 @@ const createTempate = (templateStr: string): ((model: any) => string) => {
         .replace(/\x08/, "");
 };
 
+const L0: string = `\n`;
 const L1: string = `\n` + tab(1);
 const L2: string = `\n` + tab(2);
 const L3: string = `\n` + tab(3);
@@ -37,6 +38,7 @@ function tab(i: number): string {
 
 export {
     createTempate,
+    L0,
     L1,
     L2,
     L3,


Test patch:
diff --git a/src/core/component.test.ts b/src/core/component.test.ts
index 0eb9e27..7a79b0f 100644
--- a/src/core/component.test.ts
+++ b/src/core/component.test.ts
@@ -29,10 +29,11 @@ function createWidget(_, options) {
     return Widget;
 }
 const WidgetClass = jest.fn(createWidget);
+
 const TestComponent = Vue.extend({
     extends: DxComponent,
     beforeCreate() {
-        (this as any).$_WidgetClass = WidgetClass;
+        (this as any as IWidgetComponent).$_WidgetClass = WidgetClass;
     }
 });
 
@@ -46,7 +47,7 @@ function skipIntegrationOptions(options: {
     return result;
 }
 
-function buildTestComponentCtor(): VueConstructor {
+function buildTestConfigCtor(): VueConstructor {
     return Vue.extend({
         extends: DxConfiguration,
         props: {
@@ -259,7 +260,7 @@ describe("options", () => {
 
 describe("configuration", () => {
 
-    const Nested = buildTestComponentCtor();
+    const Nested = buildTestConfigCtor();
     (Nested as any as IConfigurationComponent).$_optionName = "nestedOption";
 
     it("creates configuration", () => {
@@ -331,7 +332,7 @@ describe("configuration", () => {
     });
 
     it("initializes nested config (collectionItem)", () => {
-        const nestedCollectionItem = buildTestComponentCtor();
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "nestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -356,7 +357,7 @@ describe("configuration", () => {
     });
 
     it("initializes nested config (several collectionItems)", () => {
-        const nestedCollectionItem = buildTestComponentCtor();
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "nestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -397,7 +398,7 @@ describe("configuration", () => {
 
     it("initializes nested config predefined prop", () => {
         const predefinedValue = {};
-        const NestedWithPredefined = buildTestComponentCtor();
+        const NestedWithPredefined = buildTestConfigCtor();
         (NestedWithPredefined as any as IConfigurationComponent).$_optionName = "nestedOption";
         (NestedWithPredefined as any as IConfigurationComponent).$_predefinedProps = {
             predefinedProp: predefinedValue
@@ -422,7 +423,7 @@ describe("configuration", () => {
     });
 
     it("initializes sub-nested config", () => {
-        const subNested = buildTestComponentCtor();
+        const subNested = buildTestConfigCtor();
         (subNested as any as IConfigurationComponent).$_optionName = "subNestedOption";
 
         const vm = new Vue({
@@ -452,7 +453,7 @@ describe("configuration", () => {
     });
 
     it("initializes sub-nested config (collectionItem)", () => {
-        const nestedCollectionItem = buildTestComponentCtor();
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "subNestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -483,8 +484,8 @@ describe("configuration", () => {
         expect(nestedConfig.nested[0].collectionItemIndex).toBe(0);
     });
 
-    it("initializes sub-nested config (collectionItem)", () => {
-        const nestedCollectionItem = buildTestComponentCtor();
+    it("initializes sub-nested config (multiple collectionItems)", () => {
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "subNestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -529,36 +530,52 @@ describe("configuration", () => {
         expect(nestedConfig.nested[2].collectionItemIndex).toBe(2);
     });
 
-    it("doesn't add duplicate nested config on render", (cb) => {
-        const vm = new Vue({
-            template:
-                `<test-component>` +
-                `  <nested :prop1="123" />` +
-                `</test-component>`,
-            components: {
-                TestComponent,
-                Nested
-            }
-        }).$mount();
-        const config = (vm.$children[0] as any as IConfigurable).$_config;
+    describe("expectedChildren", () => {
 
-        vm.$forceUpdate();
+        it("initialized for widget component", () => {
+            const expected = {};
 
-        Vue.nextTick(() => {
-            try {
-                expect(config.nested).toHaveLength(1);
-            } catch (e) {
-                cb.fail(e);
-            }
-            cb();
+            const WidgetComponent = Vue.extend({
+                extends: DxComponent,
+                beforeCreate() {
+                    (this as any as IWidgetComponent).$_WidgetClass = WidgetClass;
+                    (this as any as IWidgetComponent).$_expectedChildren = expected;
+                }
+            });
+
+            const vm = new WidgetComponent();
+
+            expect((vm as IWidgetComponent).$_config.expectedChildren).toBe(expected);
+        });
+
+        it("initialized for config component", () => {
+            const expected = {};
+
+            const ConfigComponent = buildTestConfigCtor();
+            (ConfigComponent as any as IConfigurationComponent).$_optionName = "nestedOption";
+            (ConfigComponent as any as IConfigurationComponent).$_expectedChildren = expected;
+
+            const vm = new Vue({
+                template:
+                    `<test-component>` +
+                    `  <config-component />` +
+                    `</test-component>`,
+                components: {
+                    TestComponent,
+                    ConfigComponent
+                }
+            }).$mount();
+
+            const widgetConfig = (vm.$children[0] as any as IConfigurable).$_config;
+            expect(widgetConfig.nested[0].expectedChildren).toBe(expected);
         });
     });
 
 });
 
-describe("nested options", () => {
+describe("nested option", () => {
 
-    const Nested = buildTestComponentCtor();
+    const Nested = buildTestConfigCtor();
     (Nested as any as IConfigurationComponent).$_optionName = "nestedOption";
 
     it("pulls initital values", () => {
@@ -583,7 +600,7 @@ describe("nested options", () => {
     });
 
     it("pulls initital values (collectionItem)", () => {
-        const nestedCollectionItem = buildTestComponentCtor();
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "nestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -608,7 +625,7 @@ describe("nested options", () => {
     });
 
     it("pulls initital values (subnested)", () => {
-        const subNested = buildTestComponentCtor();
+        const subNested = buildTestConfigCtor();
         (subNested as any as IConfigurationComponent).$_optionName = "subNestedOption";
 
         const vm = new Vue({
@@ -638,7 +655,7 @@ describe("nested options", () => {
     });
 
     it("pulls initital values (subnested collectionItem)", () => {
-        const nestedCollectionItem = buildTestComponentCtor();
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "subNestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -694,7 +711,7 @@ describe("nested options", () => {
     });
 
     it("watches option changes (collectionItem)", (done) => {
-        const nestedCollectionItem = buildTestComponentCtor();
+        const nestedCollectionItem = buildTestConfigCtor();
         (nestedCollectionItem as any as IConfigurationComponent).$_optionName = "nestedOption";
         (nestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -723,7 +740,7 @@ describe("nested options", () => {
     });
 
     it("watches option changes (subnested)", (done) => {
-        const subNested = buildTestComponentCtor();
+        const subNested = buildTestConfigCtor();
         (subNested as any as IConfigurationComponent).$_optionName = "subNestedOption";
 
         const vm = new Vue({
@@ -754,7 +771,7 @@ describe("nested options", () => {
     });
 
     it("watches option changes (subnested collectionItem)", (done) => {
-        const subNestedCollectionItem = buildTestComponentCtor();
+        const subNestedCollectionItem = buildTestConfigCtor();
         (subNestedCollectionItem as any as IConfigurationComponent).$_optionName = "subNestedOption";
         (subNestedCollectionItem as any as IConfigurationComponent).$_isCollectionItem = true;
 
@@ -785,6 +802,31 @@ describe("nested options", () => {
         });
     });
 
+    it("is not duplicated on rerender", (cb) => {
+        const vm = new Vue({
+            template:
+                `<test-component>` +
+                `  <nested :prop1="123" />` +
+                `</test-component>`,
+            components: {
+                TestComponent,
+                Nested
+            }
+        }).$mount();
+        const config = (vm.$children[0] as any as IConfigurable).$_config;
+
+        vm.$forceUpdate();
+
+        Vue.nextTick(() => {
+            try {
+                expect(config.nested).toHaveLength(1);
+            } catch (e) {
+                cb.fail(e);
+            }
+            cb();
+        });
+    });
+
 });
 
 describe("template", () => {
@@ -971,7 +1013,7 @@ describe("extension component", () => {
     const TestExtensionComponent = Vue.extend({
         extends: DxExtensionComponent,
         beforeCreate() {
-            (this as any).$_WidgetClass = ExtensionWidgetClass;
+            (this as any as IWidgetComponent).$_WidgetClass = ExtensionWidgetClass;
         }
     });
 
diff --git a/src/core/configuration.test.ts b/src/core/configuration.test.ts
index 8d399a1..a961c96 100644
--- a/src/core/configuration.test.ts
+++ b/src/core/configuration.test.ts
@@ -1,9 +1,18 @@
-import Configuration, { bindOptionWatchers, subscribeOnUpdates, UpdateFunc } from "./configuration";
+import Configuration, { bindOptionWatchers, ExpectedChild, subscribeOnUpdates, UpdateFunc } from "./configuration";
 
 function createRootConfig(updateFunc: UpdateFunc): Configuration {
     return new Configuration(updateFunc, null, {});
 }
 
+function createConfigWithExpectedChildren(children: Record<string, ExpectedChild>): Configuration {
+    return new Configuration(
+        jest.fn(),
+        null,
+        {},
+        children
+    );
+}
+
 it("calls update from nested", () => {
     const callback = jest.fn();
     const root = createRootConfig(callback);
@@ -271,6 +280,95 @@ describe("initial configuration", () => {
 
 });
 
+describe("collection items creation", () => {
+
+    describe("not-expected item .isCollectionItem prop", () => {
+
+        it("is true if isCollection arg is true", () => {
+            const owner = new Configuration(jest.fn(), null, {});
+
+            const nested = owner.createNested("name", {}, true);
+
+            expect(nested.isCollectionItem).toBeTruthy();
+        });
+
+        it("is false if isCollection arg is false", () => {
+            const owner = new Configuration(jest.fn(), null, {});
+
+            const nested = owner.createNested("name", {}, false);
+
+            expect(nested.isCollectionItem).toBeFalsy();
+        });
+
+        it("is false if isCollection arg is undefined", () => {
+            const owner = new Configuration(jest.fn(), null, {});
+
+            const nested = owner.createNested("name", {});
+
+            expect(nested.isCollectionItem).toBeFalsy();
+        });
+    });
+
+    describe("expectation of collection item", () => {
+
+        it("applied if isCollection arg is true", () => {
+            const owner = createConfigWithExpectedChildren({ abc: { isCollectionItem: true, optionName: "def" } });
+
+            const nested = owner.createNested("abc", {}, true);
+
+            expect(nested.isCollectionItem).toBeTruthy();
+            expect(nested.name).toBe("def");
+        });
+
+        it("applied if isCollection arg is false", () => {
+            const owner = createConfigWithExpectedChildren({ abc: { isCollectionItem: true, optionName: "def" } });
+
+            const nested = owner.createNested("abc", {}, false);
+
+            expect(nested.isCollectionItem).toBeTruthy();
+            expect(nested.name).toBe("def");
+        });
+
+        it("applied if isCollection arg is undefined", () => {
+            const owner = createConfigWithExpectedChildren({ abc: { isCollectionItem: true,  optionName: "def" } });
+
+            const nested = owner.createNested("abc", {});
+
+            expect(nested.isCollectionItem).toBeTruthy();
+            expect(nested.name).toBe("def");
+        });
+    });
+
+    describe("expected as collection item .isCollectionItem prop", () => {
+
+        it("is true if isCollection arg is true", () => {
+            const owner = createConfigWithExpectedChildren({ abc: { isCollectionItem: false, optionName: "def" } });
+
+            const nested = owner.createNested("abc", {}, true);
+
+            expect(nested.isCollectionItem).toBeFalsy();
+        });
+
+        it("is true if isCollection arg is false", () => {
+            const owner = createConfigWithExpectedChildren({ abc: { isCollectionItem: false, optionName: "def" } });
+
+            const nested = owner.createNested("abc", {}, false);
+
+            expect(nested.isCollectionItem).toBeFalsy();
+        });
+
+        it("is true if isCollection arg is undefined", () => {
+            const owner = createConfigWithExpectedChildren({ abc: { isCollectionItem: false, optionName: "def" } });
+
+            const nested = owner.createNested("abc", {});
+
+            expect(nested.isCollectionItem).toBeFalsy();
+            expect(nested.name).toBe("def");
+        });
+    });
+
+});
+
 describe("options watch-list", () => {
 
     it("includes option with initial values", () => {
diff --git a/tools/src/component-generator.test.ts b/tools/src/component-generator.test.ts
index 8a12a14..6e9ec55 100644
--- a/tools/src/component-generator.test.ts
+++ b/tools/src/component-generator.test.ts
@@ -45,7 +45,8 @@ export {
             baseComponent: {
                 name: "BASE_COMPONENT",
                 path: "./BASE_COMPONENT_PATH"
-            }
+            },
+            expectedChildren: undefined
         })
     ).toBe(EXPECTED);
 });
@@ -97,7 +98,8 @@ export {
                 name: "CONFIG_COMPONENT",
                 path: "./CONFIG_COMPONENT_PATH"
             },
-            hasModel: true
+            hasModel: true,
+            expectedChildren: undefined
         })
     ).toBe(EXPECTED);
 });
@@ -155,7 +157,8 @@ export {
                 name: "CONFIG_COMPONENT",
                 path: "./CONFIG_COMPONENT_PATH"
             },
-            props: [{ name: "PROP" }]
+            props: [{ name: "PROP" }],
+            expectedChildren: undefined
         })
     ).toBe(EXPECTED);
 });
@@ -223,9 +226,11 @@ export {
                 props: [
                   { name: "PROP" }
                 ],
-                isCollectionItem: false
+                isCollectionItem: false,
+                expectedChildren: undefined
               }
-            ]
+            ],
+            expectedChildren: undefined
         })
     ).toBe(EXPECTED);
 });
@@ -294,9 +299,97 @@ export {
                 props: [
                   { name: "PROP" }
                 ],
-                isCollectionItem: true
+                isCollectionItem: true,
+                expectedChildren: undefined
+              }
+            ],
+            expectedChildren: undefined
+        })
+    ).toBe(EXPECTED);
+});
+
+it("generates expectedChildren info", () => {
+    //#region EXPECTED
+    const EXPECTED = `
+import * as VueType from "vue";
+const Vue = VueType.default || VueType;
+import WIDGET from "devextreme/DX/WIDGET/PATH";
+import { VueConstructor } from "vue";
+import { BASE_COMPONENT } from "./BASE_COMPONENT_PATH";
+import { CONFIG_COMPONENT } from "./CONFIG_COMPONENT_PATH";
+
+interface COMPONENT extends VueConstructor {
+  readonly instance?: WIDGET;
+}
+const COMPONENT: COMPONENT = Vue.extend({
+  extends: BASE_COMPONENT,
+  computed: {
+    instance(): WIDGET {
+      return (this as any).$_instance;
+    }
+  },
+  beforeCreate() {
+    (this as any).$_WidgetClass = WIDGET;
+    (this as any).$_expectedChildren = {
+      EXPECTED_1: { isCollectionItem: true, optionName: "abc" },
+      EXPECTED_2: { isCollectionItem: false, optionName: "def" }
+    };
+  }
+});
+
+const NESTED_COMPONENT: any = Vue.extend({
+  extends: CONFIG_COMPONENT,
+  props: {
+    PROP: {}
+  }
+});
+(NESTED_COMPONENT as any).$_optionName = "NESTED_OPTION_NAME";
+(NESTED_COMPONENT as any).$_expectedChildren = {
+  EXPECTED_3: { isCollectionItem: true, optionName: "ghi" },
+  EXPECTED_4: { isCollectionItem: false, optionName: "jkl" }
+};
+
+export default COMPONENT;
+export {
+  COMPONENT,
+  NESTED_COMPONENT
+};
+`.trimLeft();
+        //#endregion
+
+    expect(
+        generate({
+            name: "COMPONENT",
+            widgetComponent: {
+              name: "WIDGET",
+              path: "DX/WIDGET/PATH"
+            },
+            baseComponent: {
+                name: "BASE_COMPONENT",
+                path: "./BASE_COMPONENT_PATH"
+            },
+            configComponent: {
+                name: "CONFIG_COMPONENT",
+                path: "./CONFIG_COMPONENT_PATH"
+            },
+            nestedComponents: [
+              {
+                name: "NESTED_COMPONENT",
+                optionName: "NESTED_OPTION_NAME",
+                props: [
+                  { name: "PROP" }
+                ],
+                isCollectionItem: false,
+                expectedChildren: {
+                  EXPECTED_3: { isCollectionItem: true, optionName: "ghi" },
+                  EXPECTED_4: { isCollectionItem: false, optionName: "jkl" }
+                }
               }
-            ]
+            ],
+            expectedChildren: {
+              EXPECTED_1: { isCollectionItem: true, optionName: "abc" },
+              EXPECTED_2: { isCollectionItem: false, optionName: "def" }
+            }
         })
     ).toBe(EXPECTED);
 });
@@ -472,9 +565,11 @@ export {
                     isCollectionItem: false,
                     predefinedProps: {
                       PROP_1: "PREDEFINED_VALUE"
-                    }
+                    },
+                    expectedChildren: undefined
                   }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -550,9 +645,11 @@ export {
                     predefinedProps: {
                       PROP_1: "PREDEFINED_VALUE_1",
                       PROP_2: "PREDEFINED_VALUE_2"
-                    }
+                    },
+                    expectedChildren: undefined
                   }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });