docs: function () {
                  var children = [],
                      addedDescriptors = [],
                      i, child;
  
                  if (this.$defaultContentName && this.$defaultTemplateName) {
                      throw "both $defaultContentName and $defaultTemplateName are defined";
                  }
  
                  var desc;
  
                  function addChildren(childrenFromDescriptor, fromDescriptor) {
  
                      // don't add children with the same descriptor twice
                      for (var j = 0; j < childrenFromDescriptor.length; j++) {
                          child = childrenFromDescriptor[j];
                          child.$fromDescriptor = fromDescriptor;
  
                          if (child.$createdByTemplate || _.indexOf(addedDescriptors, child.$descriptor) === -1) {
                              children.push(child);
                              if (child.$descriptor) {
                                  addedDescriptors.push(child.$descriptor);
                              }
                          }
                      }
                  }
  
                  for (var d = 0; d < this.$internalDescriptors.length; d++) {
                      desc = this.$internalDescriptors[d];
                      addChildren(this._getChildrenFromDescriptor(desc, this, null, this), "intern");
                  }
  
                  var externalDescriptorChildren;
  
                  if (this.$defaultTemplateName) {
                      var templateBlock;
  
                      // go through all children from the external descriptor
                      // and check if a template block with the name $defaultTemplateName
  
                      for (i = 0; i < this.$descriptor.childNodes.length; i++) {
                          var node = this.$descriptor.childNodes[i];
  
                          if (node.nodeType === 1 &&
                              node.getAttribute("name") === this.$defaultTemplateName &&
                              this.$stage.$applicationContext.getFqClassName(node.namespaceURI, this._localNameFromDomNode(node), true) === "js/core/Template") {
  
                              templateBlock = node;
                              break;
                          }
                      }
  
                      if (!templateBlock && this.$descriptor) {
                          templateBlock = this.createComponent(Component.Template, {
                              name: this.$defaultTemplateName
                          }, this.$descriptor);
  
                          externalDescriptorChildren = [templateBlock];
                      }
  
                  }
  
                  externalDescriptorChildren = externalDescriptorChildren || this._getChildrenFromDescriptor(this.$descriptor);
  
  
                  if (this.$defaultContentName && this.$descriptor) {
                      // check if content block is already defined
                      var contentBlock,
                          internAndExternalChildren = children.concat(externalDescriptorChildren);
  
  
                      for (i = 0; i < internAndExternalChildren.length; i++) {
                          child = internAndExternalChildren[i];
  
                          if (child instanceof Component.Content && child.$.name === this.$defaultContentName) {
                              // content block already defined
                              contentBlock = child;
                              break;
                          }
                      }
  
                      if (!contentBlock) {
                          // create a content block and move all children in a js.core.Content Block
                          contentBlock = this.createComponent(Component.Content, {
                              name: this.$defaultContentName
                          });
  
                          // add all children to content block
                          for (i = 0; i < externalDescriptorChildren.length; i++) {
                              contentBlock.addChild(externalDescriptorChildren[i]);
                          }
  
                          externalDescriptorChildren = [contentBlock];
                      }
  
                  }
  
                  addChildren(externalDescriptorChildren, "external");
  
                  var extraChildren = this.createChildren();
                  if (extraChildren) {
                      addChildren(extraChildren, "extra");
                  }
  
                  this._initializeChildren(children);
  
                  this._childrenInitialized();
  
                  this._initializeXamlEventAttributes(this.$xamlDefaults, this);
                  this._initializeXamlEventAttributes(this.$xamlAttributes, this.$rootScope);
              }