Repository: DevExpress/devextreme-react
Pull request #237 (2018-11-06 19:44:21)

Redesign ownership references for collection items 


Patch:
diff --git a/example/app.tsx b/example/app.tsx
index b94e123..7615ce4 100644
--- a/example/app.tsx
+++ b/example/app.tsx
@@ -11,6 +11,7 @@ import EditorExample from "./editor-example";
 import Example from "./example-block";
 import FormExample from "./form-example";
 import ListExample from "./list-example";
+import MapExample from "./map-example";
 import PopupExample from "./popup-example";
 import SchedulerExample from "./scheduler-example";
 import ScrollViewExample from "./scroll-view-example";
@@ -54,6 +55,8 @@ ReactDOM.render(
 
     <ListExample />
 
+    <MapExample />
+
     <AccordionExample />
 
     <DataGridExample/>
diff --git a/example/map-example.tsx b/example/map-example.tsx
new file mode 100644
index 0000000..459b848
--- /dev/null
+++ b/example/map-example.tsx
@@ -0,0 +1,35 @@
+import * as React from "react";
+import Example from "./example-block";
+
+import Map, { Location, Marker, Route, Tooltip } from "../src/map";
+
+export default class extends React.Component<any, { text: string; uncontrolledText: string; }> {
+
+    public render() {
+        return (
+            <Example title="dxMap">
+                <Map
+                    provider={"bing"}
+                    zoom={11}
+                    height={440}
+                    controls={true}
+                >
+                    <Marker iconSrc="https://js.devexpress.com/Demos/RealtorApp/images/map-marker.png">
+                        <Tooltip text={"Times Square"} />
+                        <Location lat={40.755833} lng={-73.986389} />
+                    </Marker>
+
+                    <Marker iconSrc="https://js.devexpress.com/Demos/RealtorApp/images/map-marker.png">
+                        <Tooltip text={"Central Park"} />
+                        <Location lat={40.7825} lng={-73.966111} />
+                    </Marker>
+
+                    <Route color="green">
+                        <Location lat={40.755833} lng={-73.986389} />
+                        <Location lat={40.7825} lng={-73.966111} />
+                    </Route>
+                </Map>
+            </Example>
+        );
+    }
+}
diff --git a/src/core/component.ts b/src/core/component.ts
index 61cd41e..f0c2df5 100644
--- a/src/core/component.ts
+++ b/src/core/component.ts
@@ -1,7 +1,7 @@
 import * as events from "devextreme/events";
 import * as React from "react";
 
-import OptionsManager from "./options-manager";
+import OptionsManager, { INestedOption } from "./options-manager";
 import { findProps as findNestedTemplateProps, ITemplateMeta } from "./template";
 import { elementPropNames, getClassName, separateProps } from "./widget-config";
 
@@ -34,8 +34,8 @@ abstract class ComponentBase<P extends IHtmlOptions> extends React.PureComponent
   protected _element: HTMLDivElement;
 
   protected readonly _defaults: Record<string, string>;
-
   protected readonly _templateProps: ITemplateMeta[] = [];
+  protected readonly _expectedChildren: Record<string, INestedOption>;
 
   private readonly _optionsManager: OptionsManager;
 
@@ -111,7 +111,7 @@ abstract class ComponentBase<P extends IHtmlOptions> extends React.PureComponent
   }
 
   protected _preprocessChild(component: React.ReactElement<any>): React.ReactElement<any> {
-    return this._optionsManager.registerNestedOption(component) || component;
+    return this._optionsManager.registerNestedOption(component, this._expectedChildren) || component;
   }
 
   protected _createWidget(element?: Element) {
diff --git a/src/core/options-manager.ts b/src/core/options-manager.ts
index 719ba5a..b1e316d 100644
--- a/src/core/options-manager.ts
+++ b/src/core/options-manager.ts
@@ -5,25 +5,29 @@ import { createOptionComponent, INestedOptionMeta } from "./nested-option";
 import { getTemplateOptions } from "./template-helper";
 import { separateProps } from "./widget-config";
 
-interface INestedOptionDescr {
-    name: string;
+interface INestedOption {
+    optionName: string;
+    isCollectionItem: boolean;
+}
+
+interface INestedConfigDescr extends INestedOption {
     defaults: Record<string, any>;
     templates: ITemplateMeta[];
     elementEntries: Array<{
         element: React.ReactElement<any>;
-        children: Record<string, INestedOptionDescr>;
+        children: Record<string, INestedConfigDescr>;
         predefinedProps: Record<string, any>;
     }>;
-    isCollectionItem: boolean;
 }
 
-interface INestedOptionClass {
+interface INestedConfigClass {
     type: {
         IsCollectionItem: boolean;
         OptionName: string;
         DefaultsProps: Record<string, string>;
         TemplateProps: ITemplateMeta[];
         PredefinedProps: Record<string, any>;
+        ExpectedChildren: Record<string, INestedOption>;
     };
     props: object;
 }
@@ -35,7 +39,7 @@ function isEventHanlder(optionName: string, optionValue: any) {
 class OptionsManager {
 
     private readonly _guards: Record<string, number> = {};
-    private readonly _nestedOptions: Record<string, INestedOptionDescr> = {};
+    private readonly _nestedOptions: Record<string, INestedConfigDescr> = {};
     private readonly _optionValueGetter: (name: string) => any;
 
     private _instance: any;
@@ -140,8 +144,11 @@ class OptionsManager {
         return this._getNestedOptionsObjects(this._nestedOptions, stateUpdater);
     }
 
-    public registerNestedOption(component: React.ReactElement<any>): any {
-        return this._registerNestedOption(component, this._nestedOptions);
+    public registerNestedOption(
+        component: React.ReactElement<any>,
+        expectedChildren: Record<string, INestedOption>
+    ): any {
+        return this._registerNestedOption(component, expectedChildren, this._nestedOptions);
     }
 
     private _setOption(name: string, value: any): void {
@@ -161,7 +168,7 @@ class OptionsManager {
     }
 
     private _getNestedOptionsObjects(
-        optionsCollection: Record<string, INestedOptionDescr>,
+        optionsCollection: Record<string, INestedConfigDescr>,
         stateUpdater: any
     ): Record<string, any> {
         const configComponents: Record<string, any> = {};
@@ -177,7 +184,7 @@ class OptionsManager {
                     options: props.templates,
                     nestedOptions: {},
                     templateProps: configComponent.templates,
-                    ownerName: `${configComponent.name}${configComponent.isCollectionItem ? `[${index}]` : ""}`,
+                    ownerName: `${configComponent.optionName}${configComponent.isCollectionItem ? `[${index}]` : ""}`,
                     stateUpdater,
                     propsGetter: (prop) => configComponent.elementEntries[index].element.props[prop]
                 });
@@ -195,7 +202,7 @@ class OptionsManager {
                     ...this._getNestedOptionsObjects(e.children, stateUpdater)
                 };
             });
-            configComponents[configComponent.name] = configComponent.isCollectionItem
+            configComponents[configComponent.optionName] = configComponent.isCollectionItem
                 ? options
                 : options[options.length - 1];
         });
@@ -211,26 +218,34 @@ class OptionsManager {
 
     private _registerNestedOption(
         element: React.ReactElement<any>,
-        owningCollection: Record<string, INestedOptionDescr>,
+        expectedChildren: Record<string, INestedOption>,
+        owningCollection: Record<string, INestedConfigDescr>,
         ownerFullName?: string
     ): any {
-        const nestedOptionClass = element as any as INestedOptionClass;
+        const nestedOptionClass = element as any as INestedConfigClass;
         if (!(nestedOptionClass && nestedOptionClass.type && nestedOptionClass.type.OptionName)) {
             return null;
         }
 
-        const nestedOptionsCollection: Record<string, INestedOptionDescr> = {};
-        const optionName = nestedOptionClass.type.OptionName;
+        const nestedOptionsCollection: Record<string, INestedConfigDescr> = {};
+
+        const resolvedNested = resolveNestedOption(
+            nestedOptionClass.type.OptionName,
+            nestedOptionClass.type.IsCollectionItem,
+            expectedChildren
+        );
+        const optionName = resolvedNested.optionName;
+        const isCollectionItem = resolvedNested.isCollectionItem;
 
         const entry = ensureNestedOption(
             optionName,
             owningCollection,
             nestedOptionClass.type.DefaultsProps,
             nestedOptionClass.type.TemplateProps,
-            nestedOptionClass.type.IsCollectionItem
+            isCollectionItem
         );
 
-        const index = nestedOptionClass.type.IsCollectionItem ? `[${entry.elementEntries.length}]` : "";
+        const index = isCollectionItem ? `[${entry.elementEntries.length}]` : "";
         let optionFullName = `${optionName}${index}`;
         if (ownerFullName) {
             optionFullName = `${ownerFullName}.${optionFullName}`;
@@ -239,7 +254,12 @@ class OptionsManager {
         const nestedOptionMeta: INestedOptionMeta = {
             optionName,
             registerNestedOption: (c: React.ReactElement<any>) => {
-                return this._registerNestedOption(c, nestedOptionsCollection, optionName);
+                return this._registerNestedOption(
+                    c,
+                    nestedOptionClass.type.ExpectedChildren,
+                    nestedOptionsCollection,
+                    optionName
+                );
             },
             updateFunc: (newProps, prevProps) => {
                 const newOptions = separateProps(newProps,
@@ -279,18 +299,18 @@ class OptionsManager {
 }
 
 function ensureNestedOption(
-    name: string,
-    optionsCollection: Record<string, INestedOptionDescr>,
+    optionName: string,
+    optionsCollection: Record<string, INestedConfigDescr>,
     defaults: Record<string, any>,
     templates: ITemplateMeta[],
     isCollectionItem: boolean
-): INestedOptionDescr {
+): INestedConfigDescr {
 
-    if (optionsCollection[name] === null ||
-        optionsCollection[name] === undefined
+    if (optionsCollection[optionName] === null ||
+        optionsCollection[optionName] === undefined
     ) {
-        optionsCollection[name] = {
-            name,
+        optionsCollection[optionName] = {
+            optionName,
             defaults,
             templates,
             elementEntries: [],
@@ -298,7 +318,30 @@ function ensureNestedOption(
         };
     }
 
-    return optionsCollection[name];
+    return optionsCollection[optionName];
+}
+
+function resolveNestedOption(
+    componentName: string,
+    canBeCollectionItem: boolean,
+    expectations: Record<string, INestedOption>
+): INestedOption {
+    let optionName = componentName;
+    let isCollectionItem = canBeCollectionItem;
+
+    const expectation = expectations && expectations[componentName];
+    if (expectation) {
+        isCollectionItem = expectation.isCollectionItem;
+        if (expectation.optionName) {
+            optionName = expectation.optionName;
+        }
+    }
+
+    return { optionName, isCollectionItem };
 }
 
 export default OptionsManager;
+export {
+    INestedOption,
+    resolveNestedOption
+};
diff --git a/tools/integration-data-model.ts b/tools/integration-data-model.ts
index fea6133..5cb233d 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 1f024a2..6559766 100644
--- a/tools/src/component-generator.ts
+++ b/tools/src/component-generator.ts
@@ -12,6 +12,7 @@ interface IComponent {
     baseComponentPath: string;
     configComponentPath: string;
     dxExportPath: string;
+    expectedChildren: IExpectedChild[];
     isExtension?: boolean;
     subscribableOptions?: IOption[];
     nestedComponents?: INestedComponent[];
@@ -25,6 +26,7 @@ interface INestedComponent {
     owners: string[];
     options: IOption[];
     templates: string[];
+    expectedChildren: IExpectedChild[];
     predefinedProps?: Record<string, any>;
     isCollectionItem?: boolean;
 }
@@ -42,6 +44,12 @@ interface IPropTyping {
     acceptableValues?: string[];
 }
 
+interface IExpectedChild {
+    componentName: string;
+    optionName: string;
+    isCollectionItem: boolean;
+}
+
 interface IRenderedPropTyping {
     propName: string;
     renderedTypes: string[];
@@ -112,6 +120,7 @@ function generate(component: IComponent): string {
                     renderedTemplateProps: nestedTemplates && nestedTemplates.map(renderTemplateOption),
                     isCollectionItem: c.isCollectionItem,
                     predefinedProps,
+                    expectedChildren: c.expectedChildren,
                     owners: c.owners
                 };
             })
@@ -179,6 +188,7 @@ function generate(component: IComponent): string {
                 })
             ),
             renderedPropTypings,
+            expectedChildren: component.expectedChildren
         }),
 
         renderedNestedComponents: nestedComponents && nestedComponents.map(renderNestedComponent),
@@ -304,6 +314,7 @@ const renderComponent: (model: {
     className: string;
     widgetName: string;
     optionsName: string;
+    expectedChildren: IExpectedChild[];
     renderedDefaultProps: string[];
     renderedTemplateProps: string[];
     renderedPropTypings: string[];
@@ -314,11 +325,25 @@ const renderComponent: (model: {
     return this._instance;
   }
 
-  protected _WidgetClass = <#= it.widgetName #>;
-<#? it.renderedDefaultProps #>
-  protected _defaults = {<#= it.renderedDefaultProps.join(',') #>
-  };
-<#?#><#? it.renderedTemplateProps #>
+  protected _WidgetClass = <#= it.widgetName #>;\n` +
+
+`<#? it.renderedDefaultProps #>` +
+L1 + `protected _defaults = {<#= it.renderedDefaultProps.join(',') #>` +
+L1 +  `};\n` +
+`<#?#>` +
+
+`<#? it.expectedChildren #>` +
+L1 + `protected _expectedChildren = {` +
+
+`<#~ it.expectedChildren : child #>` +
+L2 + `<#= child.componentName #>:` +
+    ` { optionName: "<#= child.optionName #>", isCollectionItem: <#= !!child.isCollectionItem #> },` +
+`<#~#>` + `\b` +
+
+L1 +  `};\n` +
+`<#?#>` +
+
+`<#? it.renderedTemplateProps #>
   protected _templateProps = [<#= it.renderedTemplateProps.join(', ') #>];
 <#?#>}` + `\n` +
 
@@ -337,6 +362,7 @@ const renderNestedComponent: (model: {
         name: string;
         value: any;
     }>;
+    expectedChildren: IExpectedChild[];
     renderedType: string;
     renderedSubscribableOptions: string[];
     renderedTemplateProps: string[];
@@ -359,6 +385,17 @@ L1 + `public static OptionName = "<#= it.optionName #>";` +
     L1 + `};` +
 `<#?#>` +
 
+`<#? it.expectedChildren #>` +
+    L1 + `public static ExpectedChildren = {` +
+
+    `<#~ it.expectedChildren : child #>` +
+    L2 + `<#= child.componentName #>:` +
+        ` { optionName: "<#= child.optionName #>", isCollectionItem: <#= !!child.isCollectionItem #> },` +
+    `<#~#>` + `\b` +
+
+    L1 +  `};` +
+`<#?#>` +
+
 `<#? it.renderedTemplateProps #>` +
     L1 + `public static TemplateProps = [<#= it.renderedTemplateProps.join(', ') #>];` +
 `<#?#>` +
diff --git a/tools/src/generator.ts b/tools/src/generator.ts
index 820c28e..5df8cd1 100644
--- a/tools/src/generator.ts
+++ b/tools/src/generator.ts
@@ -107,6 +107,7 @@ function mapWidget(
       templates: raw.templates,
       subscribableOptions: subscribableOptions.length > 0 ? subscribableOptions : null,
       nestedComponents: nestedOptions && nestedOptions.length > 0 ? nestedOptions : null,
+      expectedChildren: raw.nesteds,
       propTypings: propTypings.length > 0 ? propTypings : null
     }
   };
@@ -127,7 +128,8 @@ function extractNestedComponents(props: IComplexProp[], rawWidgetName: string, w
       options: p.props.map(mapOption),
       isCollectionItem: p.isCollectionItem,
       templates: p.templates,
-      predefinedProps: p.predefinedProps
+      predefinedProps: p.predefinedProps,
+      expectedChildren: p.nesteds
     };
   });
 }


Test patch:
diff --git a/src/core/__tests__/nested-option.test.tsx b/src/core/__tests__/nested-option.test.tsx
index 0a23577..f6f84a7 100644
--- a/src/core/__tests__/nested-option.test.tsx
+++ b/src/core/__tests__/nested-option.test.tsx
@@ -1,3 +1,4 @@
+import { Component } from "../../core/component";
 import ConfigurationComponent from "../../core/nested-option";
 import { mount, React, shallow } from "./setup";
 import { TestComponent, Widget, WidgetClass } from "./test-component";
@@ -52,8 +53,6 @@ class CollectionSubNestedComponent extends ConfigurationComponent<{ c?: number,
     public static OptionName = "subItemsOptions";
 }
 
-// tslint:enable:max-classes-per-file
-
 describe("nested option", () => {
 
     it("is pulled", () => {
@@ -140,6 +139,40 @@ describe("nested option", () => {
         });
     });
 
+    it("is pulled according to expectations", () => {
+
+        class TestComponentWithExpectation<P = any> extends Component<P> {
+
+            protected _expectedChildren = {
+                option: {
+                    optionName: "expectedItemOptions",
+                    isCollectionItem: true
+                },
+                itemOptions: {
+                    optionName: "expectedOption",
+                    isCollectionItem: false
+                }
+            };
+
+            protected _WidgetClass = WidgetClass;
+        }
+
+        mount(
+            <TestComponentWithExpectation>
+                <NestedComponent a={123} />
+                <CollectionNestedComponent c={456} d="abc" />
+            </TestComponentWithExpectation>
+        );
+
+        expect(WidgetClass.mock.calls[0][1]).toEqual({
+            templatesRenderAsynchronously: true,
+            expectedItemOptions: [
+                { a: 123 }
+            ],
+            expectedOption: { c: 456, d: "abc" }
+        });
+    });
+
     it("is pulled with predefined props", () => {
         mount(
             <TestComponent>
@@ -371,4 +404,41 @@ describe("nested sub-option", () => {
         expect(Widget.option.mock.calls.length).toBe(1);
         expect(Widget.option.mock.calls[0]).toEqual(["option.subOption.d", "def"]);
     });
+
+    it("is pulled according to expectations", () => {
+
+        class NestedComponentWithExpectations extends ConfigurationComponent<{ a: number }> {
+            public static OptionName = "option";
+            public static ExpectedChildren = {
+                subOption: {
+                    optionName: "expectedSubItemOptions",
+                    isCollectionItem: true
+                },
+                subItemsOptions: {
+                    optionName: "expectedSubOption",
+                    isCollectionItem: false
+                }
+            };
+        }
+
+        mount(
+            <TestComponent>
+                <NestedComponentWithExpectations a={123}>
+                    <SubNestedComponent d={"abc"} />
+                    <CollectionSubNestedComponent c={456} d={"def"} />
+                </NestedComponentWithExpectations>
+            </TestComponent>
+        );
+
+        expect(WidgetClass.mock.calls[0][1]).toEqual({
+            templatesRenderAsynchronously: true,
+            option: {
+                a: 123,
+                expectedSubItemOptions: [
+                    { d: "abc" }
+                ],
+                expectedSubOption: { c: 456, d: "def" }
+            }
+        });
+    });
 });
diff --git a/tools/src/component-generator.test.ts b/tools/src/component-generator.test.ts
index f9df62d..53f620b 100644
--- a/tools/src/component-generator.test.ts
+++ b/tools/src/component-generator.test.ts
@@ -33,7 +33,8 @@ export {
             name: "CLASS_NAME",
             baseComponentPath: "BASE_COMPONENT_PATH",
             configComponentPath: null,
-            dxExportPath: "DX/WIDGET/PATH"
+            dxExportPath: "DX/WIDGET/PATH",
+            expectedChildren: undefined
         })
     ).toBe(EXPECTED);
 });
@@ -69,7 +70,8 @@ export {
             baseComponentPath: "BASE_COMPONENT_PATH",
             configComponentPath: null,
             dxExportPath: "DX/WIDGET/PATH",
-            isExtension: true
+            isExtension: true,
+            expectedChildren: undefined
         })
     ).toBe(EXPECTED);
 });
@@ -118,7 +120,8 @@ export {
                 baseComponentPath: "BASE_COMPONENT_PATH",
                 configComponentPath: null,
                 dxExportPath: "DX/WIDGET/PATH",
-                templates: ["optionTemplate"]
+                templates: ["optionTemplate"],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -171,7 +174,8 @@ export {
                 baseComponentPath: "BASE_COMPONENT_PATH",
                 configComponentPath: null,
                 dxExportPath: "DX/WIDGET/PATH",
-                templates: ["optionTemplate", "anotherOptionTemplate"]
+                templates: ["optionTemplate", "anotherOptionTemplate"],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -218,7 +222,8 @@ export {
                 baseComponentPath: "BASE_COMPONENT_PATH",
                 configComponentPath: null,
                 dxExportPath: "DX/WIDGET/PATH",
-                templates: ["template"]
+                templates: ["template"],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -267,7 +272,8 @@ export {
                 dxExportPath: "DX/WIDGET/PATH",
                 subscribableOptions: [
                     { name: "option1", type: "someType" }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -316,7 +322,8 @@ export {
                 subscribableOptions: [
                     { name: "option1", type: "someType" },
                     { name: "option2", type: "anotherType" }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -385,6 +392,7 @@ export {
                 baseComponentPath: "BASE_COMPONENT_PATH",
                 configComponentPath: "CONFIG_COMPONENT_PATH",
                 dxExportPath: "DX/WIDGET/PATH",
+                expectedChildren: undefined,
                 nestedComponents: [
                     {
                         className: "Opt_1_Component",
@@ -414,7 +422,8 @@ export {
                                     }
                                 ]
                             }
-                        ]
+                        ],
+                        expectedChildren: undefined,
                     },
                     {
                         className: "Opt_6_SubComponent",
@@ -426,7 +435,8 @@ export {
                                 name: "sub_sub_sub_opt_8",
                                 type: "TYPE_4"
                             }
-                        ]
+                        ],
+                        expectedChildren: undefined,
                     }
                 ]
             })
@@ -480,6 +490,7 @@ export {
                 baseComponentPath: "BASE_COMPONENT_PATH",
                 configComponentPath: "CONFIG_COMPONENT_PATH",
                 dxExportPath: "DX/WIDGET/PATH",
+                expectedChildren: undefined,
                 nestedComponents: [
                     {
                         className: "Opt_1_Component",
@@ -492,8 +503,9 @@ export {
                                 name: "sub_opt_2",
                                 type: "TYPE_1"
                             }
-                        ]
-                    }
+                        ],
+                        expectedChildren: undefined
+                    },
                 ]
             })
         ).toBe(EXPECTED);
@@ -553,6 +565,7 @@ export {
                 configComponentPath: "CONFIG_COMPONENT_PATH",
                 dxExportPath: "DX/WIDGET/PATH",
                 templates: null,
+                expectedChildren: undefined,
                 nestedComponents: [
                     {
                         className: "Opt_1_Component",
@@ -575,7 +588,8 @@ export {
                                     }
                                 ]
                             }
-                        ]
+                        ],
+                        expectedChildren: undefined,
                     }
                 ]
             })
@@ -636,6 +650,7 @@ export {
                 configComponentPath: "CONFIG_COMPONENT_PATH",
                 dxExportPath: "DX/WIDGET/PATH",
                 templates: null,
+                expectedChildren: undefined,
                 nestedComponents: [
                     {
                         className: "Opt_1_Component",
@@ -647,7 +662,8 @@ export {
                                 name: "optionTemplate",
                                 type: "TYPE_1"
                             }
-                        ]
+                        ],
+                        expectedChildren: undefined,
                     }
                 ]
             })
@@ -704,6 +720,7 @@ export {
                 baseComponentPath: "BASE_COMPONENT_PATH",
                 configComponentPath: "CONFIG_COMPONENT_PATH",
                 dxExportPath: "DX/WIDGET/PATH",
+                expectedChildren: undefined,
                 nestedComponents: [
                     {
                         className: "Opt_1_Component",
@@ -719,7 +736,8 @@ export {
                                 name: "sub_opt_2",
                                 type: "TYPE_1"
                             }
-                        ]
+                        ],
+                        expectedChildren: undefined,
                     }
                 ]
             })
@@ -772,7 +790,8 @@ export {
                         propName: "PROP1",
                         types: ["SOME_TYPE"]
                     }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -824,7 +843,8 @@ export {
                         types: [],
                         acceptableValues: ["\"VALUE_1\"", "\"VALUE_2\""],
                     }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -875,7 +895,8 @@ export {
                         propName: "PROP1",
                         types: ["SOME_TYPE", "ANOTHER_TYPE"]
                     }
-                ]
+                ],
+                expectedChildren: undefined
             })
         ).toBe(EXPECTED);
     });
@@ -941,8 +962,135 @@ export {
                         propName: "B-PROP",
                         types: ["TYPE_4"]
                     }
+                ],
+                expectedChildren: undefined
+            })
+        ).toBe(EXPECTED);
+    });
+});
+
+describe("child expectation", () => {
+
+    it("is rendered for widget", () => {
+    //#region EXPECTED
+    const EXPECTED = `
+import dxCLASS_NAME, {
+    IOptions
+} from "devextreme/DX/WIDGET/PATH";
+
+import { Component as BaseComponent, IHtmlOptions } from "BASE_COMPONENT_PATH";
+
+interface ICLASS_NAMEOptions extends IOptions, IHtmlOptions {
+}
+
+class CLASS_NAME extends BaseComponent<ICLASS_NAMEOptions> {
+
+  public get instance(): dxCLASS_NAME {
+    return this._instance;
+  }
+
+  protected _WidgetClass = dxCLASS_NAME;
+
+  protected _expectedChildren = {
+    expectedOption1: { optionName: "expectedName1", isCollectionItem: true },
+    expectedOption2: { optionName: "expectedName2", isCollectionItem: false }
+  };
+}
+export default CLASS_NAME;
+export {
+  CLASS_NAME,
+  ICLASS_NAMEOptions
+};
+`.trimLeft();
+    //#endregion
+
+    expect(
+        generate({
+            name: "CLASS_NAME",
+            baseComponentPath: "BASE_COMPONENT_PATH",
+            configComponentPath: null,
+            dxExportPath: "DX/WIDGET/PATH",
+            expectedChildren: [
+                { componentName: "expectedOption1", optionName: "expectedName1", isCollectionItem: true },
+                { componentName: "expectedOption2", optionName: "expectedName2", isCollectionItem: undefined },
+            ]
+        })
+    ).toBe(EXPECTED);
+    });
+
+    it("is rendered for nested option", () => {
+        //#region EXPECTED
+        const EXPECTED = `
+import dxCLASS_NAME, {
+    IOptions
+} from "devextreme/DX/WIDGET/PATH";
+
+import { Component as BaseComponent, IHtmlOptions } from "BASE_COMPONENT_PATH";
+import NestedOption from "CONFIG_COMPONENT_PATH";
+
+interface ICLASS_NAMEOptions extends IOptions, IHtmlOptions {
+}
+
+class CLASS_NAME extends BaseComponent<ICLASS_NAMEOptions> {
+
+  public get instance(): dxCLASS_NAME {
+    return this._instance;
+  }
+
+  protected _WidgetClass = dxCLASS_NAME;
+}
+// tslint:disable:max-classes-per-file
+
+// owners:
+// CLASS_NAME
+class Opt_1_Component extends NestedOption<{
+}> {
+  public static OptionName = "opt_1";
+  public static ExpectedChildren = {
+    expectedOption1: { optionName: "expectedName1", isCollectionItem: true },
+    expectedOption2: { optionName: "expectedName2", isCollectionItem: false }
+  };
+}
+
+export default CLASS_NAME;
+export {
+  CLASS_NAME,
+  ICLASS_NAMEOptions,
+  Opt_1_Component
+};
+`.trimLeft();
+        //#endregion
+
+        expect(
+            generate({
+                name: "CLASS_NAME",
+                baseComponentPath: "BASE_COMPONENT_PATH",
+                configComponentPath: "CONFIG_COMPONENT_PATH",
+                dxExportPath: "DX/WIDGET/PATH",
+                expectedChildren: undefined,
+                nestedComponents: [
+                    {
+                        className: "Opt_1_Component",
+                        owners: [ "CLASS_NAME" ],
+                        optionName: "opt_1",
+                        templates: null,
+                        options: [],
+                        expectedChildren: [
+                            {
+                                componentName: "expectedOption1",
+                                optionName: "expectedName1",
+                                isCollectionItem: true
+                            },
+                            {
+                                componentName: "expectedOption2",
+                                optionName: "expectedName2",
+                                isCollectionItem: undefined
+                            },
+                        ]
+                    }
                 ]
             })
         ).toBe(EXPECTED);
     });
+
 });