docs: function(){
        // inherit
        DataObject.prototype.init.call(this);
  
        // save current values
        var childNodes = this.childNodes;
        var dataSource = this.dataSource;
  
        // reset values
        if (childNodes)
          this.childNodes = null;
  
        if (dataSource)
          this.dataSource = null;
  
        // apply grouping on empty childNodes, because childNodes may contains
        // configs but not Node instances
        var grouping = this.grouping;
        if (grouping)
        {
          this.grouping = null;
          this.setGrouping(grouping);
        }
  
        // apply child nodes properties
        if (this.childClass)
        {
          this.childNodes = [];
  
          if (dataSource)
          {
            this.setDataSource(dataSource);
          }
          else
          {
            if (childNodes)
              this.setChildNodes(childNodes);
          }
        }
  
        // process satellites
        var satellites = this.satellite;
        if (satellites !== NULL_SATELLITE)
        {
          this.satellite = NULL_SATELLITE;
          applySatellites(this, satellites);
        }
  
        // process owner
        var owner = this.owner;
        if (owner)
        {
          this.owner = null;
          this.setOwner(owner);
        }
      }