docs: function HtmlDocument(node)
  {
          var createdMinimal = false;
          if (!node)
          {
                  // Component does not allow null,
                  // but it is allowed here as a convenience
                  node = domv.createHtmlDomDocument(true);
                  createdMinimal = true;
                  node = node.documentElement;
          }
  
          Component.call(this, node, 'html');
  
          this.json = Object.create(null);
  
          if (createdMinimal || this.isCreationConstructor(node))
          {
                  this.appendChild(
                          this.head = this.create('head',
                                  this.titleWrapped = this.create('title', '', ' ')
                          ),
                          this.body = this.create('body')
                  );
          }
          else
          {
                  if (this.outerNodeName !== 'html')
                  {
                          throw new domv.Exception(new Error('Invalid node parameter passed to the domv.HtmlDocument constructor, the nodeName should be "html" not "' + this.outerNodeName + '"'));
                  }
  
                  this.head = this.assertSelector('> head');
                  this.baseWrapped = this.selector('> head > base');
                  this.titleWrapped = this.selector('> head > title');
                  this.body = this.assertSelector('> body');
                  this.selectorAll('> head > script[type="application/json"]').forEach(function(wrapped)
                  {
                          var identifier = wrapped.getAttr('data-identifier');
                          if (identifier)
                          {
                                  this.json[identifier] = wrapped;
                          }
                  }, this);
          }
  
          this.innerNode = this.body;
  }