text: /*
      artifact generator: C:\My\wizzi\wizzi-mono\node_modules\wizzi-legacy-v5\lib\artifacts\js\module\gen\main.js
      primary source IttfDocument: c:\my\wizzi\wizzi-mono\node_modules\wizzi-core\lib\artifacts\wfschema\model\gen\ittf\wfschema-model.js.ittf
      utc time: Wed, 24 Apr 2019 06:08:05 GMT
  */
  'use strict';
  // generated by v5-wizzi-js.artifacts.js.module.main
  function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
  var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
  
  var util = require('util');
  var path = require('path');
  var _ = require('lodash');
  var wzutils = require('wizzi-utils');
  var verify = wzutils.verify;
  var _md = module.exports = {};
  var wzSourceLineInfo = (function () {
      function wzSourceLineInfo(row, col, sourceKey) {
          _classCallCheck(this, wzSourceLineInfo);
          this.row = row;
          this.col = col;
          this.sourceKey = sourceKey;
      }
      wzSourceLineInfo.prototype.toString = function(instance) {
          if (instance) {
              return 'row: ' + this.row + ', col: ' + this.col + ', file: ' + instance.wzSourceFilepath(this.sourceKey);
          }
          else {
              return 'row: ' + this.row + ', col: ' + this.col + ', sourceKey: ' + this.sourceKey;
          }
      }
      return wzSourceLineInfo;
  })();
  
  _md.wzSourceLineInfo = wzSourceLineInfo;
  var docsBase = (function () {
      function docsBase(name, sourceLineInfo) {
          _classCallCheck(this, docsBase);
          this.wzName = name || '';
          this.wzParent = null;
          this.wzSourceLineInfo = sourceLineInfo;
          this.wzChildren = [];
      }
      docsBase.prototype.wzRoot = function() {
          return this.wzParent == null ? this : this.wzParent.wzRoot();
      }
      docsBase.prototype.wzSourceFilepath = function(sourceKey) {
          return this.wzRoot().loadHistory.getIttfDocumentUri(sourceKey);
      }
      docsBase.prototype.wzSourceErrorLines = function(node, message) {
          return this.wzRoot().loadHistory.getIttfDocumentErrorLines(node.u, {
                  row: node.r, 
                  col: node.c, 
                  description: message
              }, true);
      }
      docsBase.prototype.wzVerify = function() {
      }
      docsBase.prototype.wzInitialize = function() {
      }
      docsBase.prototype.wzInitializeAsync = function(ctx, callback) {
          callback(null);
      }
      docsBase.prototype.wzAddChild = function(node) {
          node.wzParent = this;
          this.wzChildren.push(node);
      }
      docsBase.prototype.wzAddChildToColl = function(node, coll) {
          node.wzParent = this;
          node.wzMoved = true;
          coll.push(node);
      }
      docsBase.prototype.wzMoveChildToColl = function(node, coll, fromColl) {
          var index = fromColl.indexOf(node);
          if (index < 0) {
              this.error('wzMoveChildToColl error. The from collection does not contain the node.', node);
          }
          fromColl.splice(index, 1);
          this.wzAddChildToColl(node, coll);
      }
      docsBase.prototype.wzLoadToChildColl = function(child, type, coll) {
          var item = new type(child.v, new wzSourceLineInfo(child.r, child.c, child.u));
          item.wzTag = child.n;
          item.wzParent = this;
          coll.push(item);
          if (item.loadFromNode) {
              item.loadFromNode(child);
          }
          return true;
      }
      docsBase.prototype.wzCreateChildColl = function(tag, name, type, coll) {
          var item = new type(name, this.wzSourceLineInfo);
          item.wzTag = tag;
          item.wzParent = this;
          item.wzCreated = true;
          coll.push(item);
          return item;
      }
      docsBase.prototype.wzLoadToChildren = function(child, type) {
          var item = new type(child.v, new wzSourceLineInfo(child.r, child.c, child.u));
          item.wzTag = child.n;
          item.wzParent = this;
          this.wzChildren.push(item);
          if (item.loadFromNode) {
              item.loadFromNode(child);
          }
          return true;
      }
      docsBase.prototype.wzLoadOneToOne = function(child, type, fieldName) {
          var item = new type(child.v, new wzSourceLineInfo(child.r, child.c, child.u));
          item.wzParent = this;
          this[fieldName] = item;
          if (item.loadFromNode) {
              item.loadFromNode(child);
          }
          return true;
      }
      docsBase.prototype.wzRemove = function(fromColl) {
          var index = fromColl.indexOf(this);
          if (index < 0) {
              this.error('wzRemove error. The from collection does not contain the node.', this);
          }
          fromColl.splice(index, 1);
      }
      docsBase.prototype.error = function(message, node) {
          throw new _md.docsModelException(message, node, this);
      }
      docsBase.prototype.toJsonProperties = function(result) {
          result.wzElement = this.wzElement;
          result.wzTag = this.wzTag;
          result.wzName = this.wzName;
      }
      docsBase.prototype.toJsonChildren = function(result) {
          if (this.wzChildren.length > 0) {
              var children = [];
              var i, i_items=this.wzChildren, i_len=this.wzChildren.length, item;
              for (i=0; i<i_len; i++) {
                  item = this.wzChildren[i];
                  children.push(item.toJson());
              }
              result.wzChildren = children;
          }
      }
      docsBase.prototype.toPrettifyProperties = function(ctx) {
      }
      docsBase.prototype.toPrettifyChildren = function(ctx) {
          if (this.wzChildren.length > 0) {
              var i, i_items=this.wzChildren, i_len=this.wzChildren.length, item;
              for (i=0; i<i_len; i++) {
                  item = this.wzChildren[i];
                  item.toPrettify(xw);
              }
          }
      }
      return docsBase;
  })();
  
  _md.docsBase = docsBase;
  function startPrettify(ctx) {
      ctx.state = {
          level: 0, 
          line: 0
      };
      ctx.hb.setNoLF(true);
      ctx.hb.openTag('pre');
      ctx.hb.writeAttribute('class', 'prettyprint');
      ctx.hb.openTag('ol');
      ctx.hb.writeAttribute('class', 'linenums');
  }
  function endPrettify(ctx) {
      ctx.hb.closeTag('ol');
      ctx.hb.closeTag('pre');
      ctx.hb.setNoLF(false);
  }
  // element docs
  var docs = (function (docsBase) {
      _inherits(docs, docsBase);
      function docs(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(docs.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, docs);
          this.wzElement = "docs";
          // relation item
          this.items = [];
      }
      docs.prototype.getItem = function(name) {
          var found = null;
          this.items.forEach(function(item) {
              found = found || (item.wzName === name ? item : null);
          });
          return found;
      }
      docs.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      docs.prototype.toJsonProperties = function(result) {
          _md.docsBase.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      docs.prototype.toJsonChildren = function(result) {
          _md.docsBase.prototype.toJsonChildren.call(this, result);
          var items, item;
          items = [];
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              items.push(item.toJson());
          }
          result['items'] = items;
      }
      docs.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('items');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      docs.prototype.toPrettifyProperties = function(ctx) {
          _md.docsBase.prototype.toPrettifyProperties.call(this, ctx);
      }
      docs.prototype.toPrettifyChildren = function(ctx) {
          _md.docsBase.prototype.toPrettifyChildren.call(this, ctx);
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              item.toPrettify(ctx);
          }
      }
      docs.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 1 && _ch == '+') {
              if (name === '+') {
                  return this.wzLoadToChildColl(child, _md.plus, this.items);
              }
          }
          if (_l == 1 && _ch == '-') {
              if (name === '-') {
                  return this.wzLoadToChildColl(child, _md.ittfnode, this.items);
              }
          }
          if (_l == 1 && _ch == '<') {
              if (name === '<') {
                  return this.wzLoadToChildColl(child, _md.element, this.items);
              }
          }
          if (_l == 1 && _ch == '@') {
              if (name === '@') {
                  return this.wzLoadToChildColl(child, _md.attribute, this.items);
              }
          }
          if (_l == 1 && _ch == 'a') {
              if (name === 'a') {
                  return this.wzLoadToChildColl(child, _md.a, this.items);
              }
          }
          if (_l == 1 && _ch == 'p') {
              if (name === 'p') {
                  return this.wzLoadToChildColl(child, _md.p, this.items);
              }
          }
          if (_l == 2 && _ch == 'b') {
              if (name === 'br') {
                  return this.wzLoadToChildColl(child, _md.br, this.items);
              }
          }
          if (_l == 2 && _ch == 'h') {
              if (name === 'hr') {
                  return this.wzLoadToChildColl(child, _md.hr, this.items);
              }
              else if (name === 'h1') {
                  return this.wzLoadToChildColl(child, _md.h1, this.items);
              }
              else if (name === 'h2') {
                  return this.wzLoadToChildColl(child, _md.h2, this.items);
              }
              else if (name === 'h3') {
                  return this.wzLoadToChildColl(child, _md.h3, this.items);
              }
              else if (name === 'h4') {
                  return this.wzLoadToChildColl(child, _md.h4, this.items);
              }
              else if (name === 'h5') {
                  return this.wzLoadToChildColl(child, _md.h5, this.items);
              }
              else if (name === 'h6') {
                  return this.wzLoadToChildColl(child, _md.h6, this.items);
              }
          }
          if (_l == 2 && _ch == 'j') {
              if (name === 'js') {
                  return this.wzLoadToChildColl(child, _md.js, this.items);
              }
          }
          if (_l == 2 && _ch == 'l') {
              if (name === 'li') {
                  return this.wzLoadToChildColl(child, _md.li, this.items);
              }
          }
          if (_l == 2 && _ch == 't') {
              if (name === 'th') {
                  return this.wzLoadToChildColl(child, _md.th, this.items);
              }
              else if (name === 'tr') {
                  return this.wzLoadToChildColl(child, _md.tr, this.items);
              }
              else if (name === 'td') {
                  return this.wzLoadToChildColl(child, _md.td, this.items);
              }
          }
          if (_l == 2 && _ch == 'u') {
              if (name === 'ul') {
                  return this.wzLoadToChildColl(child, _md.ul, this.items);
              }
          }
          if (_l == 3 && _ch == 'd') {
              if (name === 'div') {
                  return this.wzLoadToChildColl(child, _md.div, this.items);
              }
          }
          if (_l == 3 && _ch == 's') {
              if (name === 'see') {
                  return this.wzLoadToChildColl(child, _md.see, this.items);
              }
          }
          if (_l == 4 && _ch == 'a') {
              if (name === 'apim') {
                  return this.wzLoadToChildColl(child, _md.apiMethod, this.items);
              }
          }
          if (_l == 4 && _ch == 'i') {
              if (name === 'ittf') {
                  return this.wzLoadToChildColl(child, _md.ittf, this.items);
              }
          }
          if (_l == 4 && _ch == 's') {
              if (name === 'span') {
                  return this.wzLoadToChildColl(child, _md.span, this.items);
              }
          }
          if (_l == 4 && _ch == 't') {
              if (name === 'todo') {
                  return this.wzLoadToChildColl(child, _md.todo, this.items);
              }
              else if (name === 'tags') {
                  return this.wzLoadToChildColl(child, _md.tags, this.items);
              }
          }
          if (_l == 5 && _ch == 'a') {
              if (name === 'api-m') {
                  return this.wzLoadToChildColl(child, _md.apiMethod, this.items);
              }
          }
          if (_l == 5 && _ch == 'i') {
              if (name === 'issue') {
                  return this.wzLoadToChildColl(child, _md.issue, this.items);
              }
              else if (name === 'intro') {
                  return this.wzLoadToChildColl(child, _md.intro, this.items);
              }
          }
          if (_l == 5 && _ch == 't') {
              if (name === 'table') {
                  return this.wzLoadToChildColl(child, _md.table, this.items);
              }
              else if (name === 'tbody') {
                  return this.wzLoadToChildColl(child, _md.tbody, this.items);
              }
          }
          if (_l == 6 && _ch == 'o') {
              if (name === 'object') {
                  return this.wzLoadToChildColl(child, _md.object, this.items);
              }
          }
          if (_l == 6 && _ch == 's') {
              if (name === 'sample') {
                  return this.wzLoadToChildColl(child, _md.sample, this.items);
              }
          }
          if (_l == 7 && _ch == 'c') {
              if (name === 'concept') {
                  return this.wzLoadToChildColl(child, _md.concept, this.items);
              }
          }
          if (_l == 7 && _ch == 'p') {
              if (name === 'project') {
                  return this.wzLoadToChildColl(child, _md.project, this.items);
              }
          }
          if (_l == 7 && _ch == 'r') {
              if (name === 'roadmap') {
                  return this.wzLoadToChildColl(child, _md.roadmap, this.items);
              }
          }
          if (_l == 7 && _ch == 's') {
              if (name === 'section') {
                  return this.wzLoadToChildColl(child, _md.section, this.items);
              }
              else if (name === 'summary') {
                  return this.wzLoadToChildColl(child, _md.summary, this.items);
              }
          }
          if (_l == 8 && _ch == 'a') {
              if (name === 'apiparam') {
                  return this.wzLoadToChildColl(child, _md.apiParam, this.items);
              }
          }
          if (_l == 9 && _ch == 'a') {
              if (name === 'apiobject') {
                  return this.wzLoadToChildColl(child, _md.apiObject, this.items);
              }
              else if (name === 'api-param') {
                  return this.wzLoadToChildColl(child, _md.apiParam, this.items);
              }
          }
          if (_l == 9 && _ch == 'm') {
              if (name === 'milestone') {
                  return this.wzLoadToChildColl(child, _md.milestone, this.items);
              }
          }
          if (_l == 10 && _ch == 'a') {
              if (name === 'api-object') {
                  return this.wzLoadToChildColl(child, _md.apiObject, this.items);
              }
          }
          if (_l == 10 && _ch == 'c') {
              if (name === 'categories') {
                  return this.wzLoadToChildColl(child, _md.categories, this.items);
              }
          }
          if (_l == 11 && _ch == 's') {
              if (name === 'samplegroup') {
                  return this.wzLoadToChildColl(child, _md.sampleGroup, this.items);
              }
          }
          if (_l == 12 && _ch == 's') {
              if (name === 'sample-group') {
                  return this.wzLoadToChildColl(child, _md.sampleGroup, this.items);
              }
          }
          return ok;
      }
      docs.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      docs.prototype.wzVerify = function(ctx) {
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              item.wzVerify(ctx);
          }
          _md.docsBase.prototype.wzVerify.call(this, ctx);
      }
      docs.prototype.wzInitialize = function(ctx) {
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              item.wzInitialize(ctx);
          }
          _md.docsBase.prototype.wzInitialize.call(this, ctx);
      }
      return docs;
  })(docsBase);
  
  _md.docs = docs;
  // element item
  var item = (function (docsBase) {
      _inherits(item, docsBase);
      function item(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(item.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, item);
          this.wzElement = "item";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.id = null
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.class = null
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.style = null
          // relation item
          this.items = [];
      }
      item.prototype.getItem = function(name) {
          var found = null;
          this.items.forEach(function(item) {
              found = found || (item.wzName === name ? item : null);
          });
          return found;
      }
      item.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      item.prototype.toJsonProperties = function(result) {
          _md.docsBase.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.id)) {
              result["id"] = this.id;
          }
          if (!isEmpty(this.class)) {
              result["class"] = this.class;
          }
          if (!isEmpty(this.style)) {
              result["style"] = this.style;
          }
      }
      item.prototype.toJsonChildren = function(result) {
          _md.docsBase.prototype.toJsonChildren.call(this, result);
          var items, item;
          items = [];
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              items.push(item.toJson());
          }
          result['items'] = items;
      }
      item.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('items');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      item.prototype.toPrettifyProperties = function(ctx) {
          _md.docsBase.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('docsBase', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.id, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('id', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.class, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('class', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.style, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      item.prototype.toPrettifyChildren = function(ctx) {
          _md.docsBase.prototype.toPrettifyChildren.call(this, ctx);
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              item.toPrettify(ctx);
          }
      }
      item.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 1 && _ch == '+') {
              if (name === '+') {
                  return this.wzLoadToChildColl(child, _md.plus, this.items);
              }
          }
          if (_l == 1 && _ch == '-') {
              if (name === '-') {
                  return this.wzLoadToChildColl(child, _md.ittfnode, this.items);
              }
          }
          if (_l == 1 && _ch == '<') {
              if (name === '<') {
                  return this.wzLoadToChildColl(child, _md.element, this.items);
              }
          }
          if (_l == 1 && _ch == '@') {
              if (name === '@') {
                  return this.wzLoadToChildColl(child, _md.attribute, this.items);
              }
          }
          if (_l == 1 && _ch == 'a') {
              if (name === 'a') {
                  return this.wzLoadToChildColl(child, _md.a, this.items);
              }
          }
          if (_l == 1 && _ch == 'p') {
              if (name === 'p') {
                  return this.wzLoadToChildColl(child, _md.p, this.items);
              }
          }
          if (_l == 2 && _ch == 'b') {
              if (name === 'br') {
                  return this.wzLoadToChildColl(child, _md.br, this.items);
              }
          }
          if (_l == 2 && _ch == 'h') {
              if (name === 'hr') {
                  return this.wzLoadToChildColl(child, _md.hr, this.items);
              }
              else if (name === 'h1') {
                  return this.wzLoadToChildColl(child, _md.h1, this.items);
              }
              else if (name === 'h2') {
                  return this.wzLoadToChildColl(child, _md.h2, this.items);
              }
              else if (name === 'h3') {
                  return this.wzLoadToChildColl(child, _md.h3, this.items);
              }
              else if (name === 'h4') {
                  return this.wzLoadToChildColl(child, _md.h4, this.items);
              }
              else if (name === 'h5') {
                  return this.wzLoadToChildColl(child, _md.h5, this.items);
              }
              else if (name === 'h6') {
                  return this.wzLoadToChildColl(child, _md.h6, this.items);
              }
          }
          if (_l == 2 && _ch == 'i') {
              if (name === 'id') {
                  this.id = child.v; return true;
              }
          }
          if (_l == 2 && _ch == 'j') {
              if (name === 'js') {
                  return this.wzLoadToChildColl(child, _md.js, this.items);
              }
          }
          if (_l == 2 && _ch == 'l') {
              if (name === 'li') {
                  return this.wzLoadToChildColl(child, _md.li, this.items);
              }
          }
          if (_l == 2 && _ch == 't') {
              if (name === 'th') {
                  return this.wzLoadToChildColl(child, _md.th, this.items);
              }
              else if (name === 'tr') {
                  return this.wzLoadToChildColl(child, _md.tr, this.items);
              }
              else if (name === 'td') {
                  return this.wzLoadToChildColl(child, _md.td, this.items);
              }
          }
          if (_l == 2 && _ch == 'u') {
              if (name === 'ul') {
                  return this.wzLoadToChildColl(child, _md.ul, this.items);
              }
          }
          if (_l == 3 && _ch == 'd') {
              if (name === 'div') {
                  return this.wzLoadToChildColl(child, _md.div, this.items);
              }
          }
          if (_l == 3 && _ch == 's') {
              if (name === 'see') {
                  return this.wzLoadToChildColl(child, _md.see, this.items);
              }
          }
          if (_l == 4 && _ch == 'a') {
              if (name === 'apim') {
                  return this.wzLoadToChildColl(child, _md.apiMethod, this.items);
              }
          }
          if (_l == 4 && _ch == 'i') {
              if (name === 'ittf') {
                  return this.wzLoadToChildColl(child, _md.ittf, this.items);
              }
          }
          if (_l == 4 && _ch == 's') {
              if (name === 'span') {
                  return this.wzLoadToChildColl(child, _md.span, this.items);
              }
          }
          if (_l == 4 && _ch == 't') {
              if (name === 'todo') {
                  return this.wzLoadToChildColl(child, _md.todo, this.items);
              }
              else if (name === 'tags') {
                  return this.wzLoadToChildColl(child, _md.tags, this.items);
              }
          }
          if (_l == 5 && _ch == 'a') {
              if (name === 'api-m') {
                  return this.wzLoadToChildColl(child, _md.apiMethod, this.items);
              }
          }
          if (_l == 5 && _ch == 'c') {
              if (name === 'class') {
                  this.class = child.v; return true;
              }
          }
          if (_l == 5 && _ch == 'i') {
              if (name === 'issue') {
                  return this.wzLoadToChildColl(child, _md.issue, this.items);
              }
              else if (name === 'intro') {
                  return this.wzLoadToChildColl(child, _md.intro, this.items);
              }
          }
          if (_l == 5 && _ch == 's') {
              if (name === 'style') {
                  this.style = child.v; return true;
              }
          }
          if (_l == 5 && _ch == 't') {
              if (name === 'table') {
                  return this.wzLoadToChildColl(child, _md.table, this.items);
              }
              else if (name === 'tbody') {
                  return this.wzLoadToChildColl(child, _md.tbody, this.items);
              }
          }
          if (_l == 6 && _ch == 'o') {
              if (name === 'object') {
                  return this.wzLoadToChildColl(child, _md.object, this.items);
              }
          }
          if (_l == 6 && _ch == 's') {
              if (name === 'sample') {
                  return this.wzLoadToChildColl(child, _md.sample, this.items);
              }
          }
          if (_l == 7 && _ch == 'c') {
              if (name === 'concept') {
                  return this.wzLoadToChildColl(child, _md.concept, this.items);
              }
          }
          if (_l == 7 && _ch == 'p') {
              if (name === 'project') {
                  return this.wzLoadToChildColl(child, _md.project, this.items);
              }
          }
          if (_l == 7 && _ch == 'r') {
              if (name === 'roadmap') {
                  return this.wzLoadToChildColl(child, _md.roadmap, this.items);
              }
          }
          if (_l == 7 && _ch == 's') {
              if (name === 'section') {
                  return this.wzLoadToChildColl(child, _md.section, this.items);
              }
              else if (name === 'summary') {
                  return this.wzLoadToChildColl(child, _md.summary, this.items);
              }
          }
          if (_l == 8 && _ch == 'a') {
              if (name === 'apiparam') {
                  return this.wzLoadToChildColl(child, _md.apiParam, this.items);
              }
          }
          if (_l == 9 && _ch == 'a') {
              if (name === 'apiobject') {
                  return this.wzLoadToChildColl(child, _md.apiObject, this.items);
              }
              else if (name === 'api-param') {
                  return this.wzLoadToChildColl(child, _md.apiParam, this.items);
              }
          }
          if (_l == 9 && _ch == 'm') {
              if (name === 'milestone') {
                  return this.wzLoadToChildColl(child, _md.milestone, this.items);
              }
          }
          if (_l == 10 && _ch == 'a') {
              if (name === 'api-object') {
                  return this.wzLoadToChildColl(child, _md.apiObject, this.items);
              }
          }
          if (_l == 10 && _ch == 'c') {
              if (name === 'categories') {
                  return this.wzLoadToChildColl(child, _md.categories, this.items);
              }
          }
          if (_l == 11 && _ch == 's') {
              if (name === 'samplegroup') {
                  return this.wzLoadToChildColl(child, _md.sampleGroup, this.items);
              }
          }
          if (_l == 12 && _ch == 's') {
              if (name === 'sample-group') {
                  return this.wzLoadToChildColl(child, _md.sampleGroup, this.items);
              }
          }
          return ok;
      }
      item.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      item.prototype.wzVerify = function(ctx) {
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              item.wzVerify(ctx);
          }
          _md.docsBase.prototype.wzVerify.call(this, ctx);
      }
      item.prototype.wzInitialize = function(ctx) {
          var i, i_items=this.items, i_len=this.items.length, item;
          for (i=0; i<i_len; i++) {
              item = this.items[i];
              item.wzInitialize(ctx);
          }
          this.summary = _.find(this.items, { wzElement: 'summary' });
          this.attributes = _.filter(this.items, { wzElement: 'attribute' });
          this.items = _.reject(this.items, { wzElement: 'attribute' });
          _md.docsBase.prototype.wzInitialize.call(this, ctx);
      }
      return item;
  })(docsBase);
  
  _md.item = item;
  // element project
  var project = (function (item) {
      _inherits(project, item);
      function project(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(project.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, project);
          this.wzElement = "project";
      }
      project.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      project.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      project.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      project.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      project.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      project.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      project.prototype.getTodos = function() {
          return _.filter(this.items, { wzElement: 'todo' });
      }
      project.prototype.getRoadMaps = function() {
          return _.filter(this.items, { wzElement: 'roadmap' });
      }
      project.prototype.getIssues = function() {
          return _.filter(this.items, { wzElement: 'issue' });
      }
      return project;
  })(item);
  
  _md.project = project;
  // element todo
  var todo = (function (item) {
      _inherits(todo, item);
      function todo(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(todo.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, todo);
          this.wzElement = "todo";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.priority = null
          this.done = false;
      }
      todo.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      todo.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.priority)) {
              result["priority"] = this.priority;
          }
          result["done"] = this.done;
      }
      todo.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      todo.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      todo.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('item', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.priority, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('priority', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.done, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      todo.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      todo.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 4 && _ch == 'd') {
              if (name === 'done') {
                  this.done = parseboolean(child.v, null, child); return true;
              }
          }
          if (_l == 8 && _ch == 'p') {
              if (name === 'priority') {
                  this.priority = child.v; return true;
              }
          }
          ok = _md.item.prototype.loadChild.call(this, child);
          return ok;
      }
      todo.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      return todo;
  })(item);
  
  _md.todo = todo;
  // element issue
  var issue = (function (item) {
      _inherits(issue, item);
      function issue(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(issue.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, issue);
          this.wzElement = "issue";
      }
      issue.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      issue.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      issue.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      issue.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      issue.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      issue.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return issue;
  })(item);
  
  _md.issue = issue;
  // element roadmap
  var roadmap = (function (item) {
      _inherits(roadmap, item);
      function roadmap(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(roadmap.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, roadmap);
          this.wzElement = "roadmap";
      }
      roadmap.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      roadmap.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      roadmap.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      roadmap.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      roadmap.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      roadmap.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      roadmap.prototype.getMilestones = function() {
          return _.filter(this.items, { wzElement: 'milestone' });
      }
      return roadmap;
  })(item);
  
  _md.roadmap = roadmap;
  // element milestone
  var milestone = (function (item) {
      _inherits(milestone, item);
      function milestone(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(milestone.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, milestone);
          this.wzElement = "milestone";
      }
      milestone.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      milestone.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      milestone.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      milestone.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      milestone.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      milestone.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return milestone;
  })(item);
  
  _md.milestone = milestone;
  // element intro
  var intro = (function (item) {
      _inherits(intro, item);
      function intro(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(intro.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, intro);
          this.wzElement = "intro";
      }
      intro.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      intro.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      intro.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      intro.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      intro.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      intro.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      intro.prototype.wzInitialize = function(ctx) {
          this.summary = _.find(this.items, { wzElement: 'summary' });
          _md.item.prototype.wzInitialize.call(this, ctx);
      }
      return intro;
  })(item);
  
  _md.intro = intro;
  // element section
  var section = (function (item) {
      _inherits(section, item);
      function section(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(section.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, section);
          this.wzElement = "section";
      }
      section.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      section.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      section.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      section.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      section.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      section.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      section.prototype.wzInitialize = function(ctx) {
          this.summary = _.find(this.items, { wzElement: 'summary' });
          _md.item.prototype.wzInitialize.call(this, ctx);
      }
      return section;
  })(item);
  
  _md.section = section;
  // element summary
  var summary = (function (item) {
      _inherits(summary, item);
      function summary(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(summary.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, summary);
          this.wzElement = "summary";
      }
      summary.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      summary.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      summary.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      summary.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      summary.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      summary.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return summary;
  })(item);
  
  _md.summary = summary;
  // element object
  var object = (function (item) {
      _inherits(object, item);
      function object(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(object.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, object);
          this.wzElement = "object";
      }
      object.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      object.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      object.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      object.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      object.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      object.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      object.prototype.wzInitialize = function(ctx) {
          this.summary = _.find(this.items, { wzElement: 'summary' });
          _md.item.prototype.wzInitialize.call(this, ctx);
      }
      return object;
  })(item);
  
  _md.object = object;
  // element concept
  var concept = (function (item) {
      _inherits(concept, item);
      function concept(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(concept.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, concept);
          this.wzElement = "concept";
      }
      concept.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      concept.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      concept.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      concept.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      concept.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      concept.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      concept.prototype.wzInitialize = function(ctx) {
          this.summary = _.find(this.items, { wzElement: 'summary' });
          _md.item.prototype.wzInitialize.call(this, ctx);
      }
      return concept;
  })(item);
  
  _md.concept = concept;
  // element categories
  var categories = (function (item) {
      _inherits(categories, item);
      function categories(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(categories.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, categories);
          this.wzElement = "categories";
      }
      categories.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      categories.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      categories.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      categories.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      categories.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      categories.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return categories;
  })(item);
  
  _md.categories = categories;
  // element tags
  var tags = (function (item) {
      _inherits(tags, item);
      function tags(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(tags.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, tags);
          this.wzElement = "tags";
      }
      tags.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      tags.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      tags.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      tags.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      tags.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      tags.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return tags;
  })(item);
  
  _md.tags = tags;
  // element element
  var element = (function (item) {
      _inherits(element, item);
      function element(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(element.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, element);
          this.wzElement = "element";
      }
      element.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      element.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      element.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      element.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      element.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      element.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return element;
  })(item);
  
  _md.element = element;
  // element attribute
  var attribute = (function (item) {
      _inherits(attribute, item);
      function attribute(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(attribute.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, attribute);
          this.wzElement = "attribute";
      }
      attribute.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      attribute.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      attribute.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      attribute.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      attribute.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      attribute.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return attribute;
  })(item);
  
  _md.attribute = attribute;
  // element div
  var div = (function (item) {
      _inherits(div, item);
      function div(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(div.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, div);
          this.wzElement = "div";
      }
      div.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      div.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      div.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      div.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      div.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      div.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return div;
  })(item);
  
  _md.div = div;
  // element p
  var p = (function (item) {
      _inherits(p, item);
      function p(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(p.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, p);
          this.wzElement = "p";
      }
      p.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      p.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      p.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      p.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      p.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      p.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return p;
  })(item);
  
  _md.p = p;
  // element span
  var span = (function (item) {
      _inherits(span, item);
      function span(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(span.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, span);
          this.wzElement = "span";
      }
      span.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      span.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      span.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      span.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      span.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      span.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return span;
  })(item);
  
  _md.span = span;
  // element hr
  var hr = (function (item) {
      _inherits(hr, item);
      function hr(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(hr.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, hr);
          this.wzElement = "hr";
      }
      hr.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      hr.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      hr.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      hr.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      hr.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      hr.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return hr;
  })(item);
  
  _md.hr = hr;
  // element ul
  var ul = (function (item) {
      _inherits(ul, item);
      function ul(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(ul.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, ul);
          this.wzElement = "ul";
      }
      ul.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      ul.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      ul.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      ul.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      ul.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      ul.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return ul;
  })(item);
  
  _md.ul = ul;
  // element li
  var li = (function (item) {
      _inherits(li, item);
      function li(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(li.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, li);
          this.wzElement = "li";
      }
      li.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      li.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      li.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      li.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      li.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      li.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return li;
  })(item);
  
  _md.li = li;
  // element a
  var a = (function (item) {
      _inherits(a, item);
      function a(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(a.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, a);
          this.wzElement = "a";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.href = null
      }
      a.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      a.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.href)) {
              result["href"] = this.href;
          }
      }
      a.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      a.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      a.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('item', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.href, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      a.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      a.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 4 && _ch == 'h') {
              if (name === 'href') {
                  this.href = child.v; return true;
              }
          }
          ok = _md.item.prototype.loadChild.call(this, child);
          return ok;
      }
      a.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      return a;
  })(item);
  
  _md.a = a;
  // element see
  var see = (function (item) {
      _inherits(see, item);
      function see(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(see.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, see);
          this.wzElement = "see";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.href = null
      }
      see.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      see.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.href)) {
              result["href"] = this.href;
          }
      }
      see.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      see.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      see.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('item', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.href, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      see.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      see.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 4 && _ch == 'h') {
              if (name === 'href') {
                  this.href = child.v; return true;
              }
          }
          ok = _md.item.prototype.loadChild.call(this, child);
          return ok;
      }
      see.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      return see;
  })(item);
  
  _md.see = see;
  // element h1
  var h1 = (function (item) {
      _inherits(h1, item);
      function h1(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(h1.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, h1);
          this.wzElement = "h1";
      }
      h1.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      h1.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      h1.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      h1.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      h1.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      h1.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return h1;
  })(item);
  
  _md.h1 = h1;
  // element h2
  var h2 = (function (item) {
      _inherits(h2, item);
      function h2(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(h2.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, h2);
          this.wzElement = "h2";
      }
      h2.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      h2.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      h2.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      h2.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      h2.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      h2.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return h2;
  })(item);
  
  _md.h2 = h2;
  // element h3
  var h3 = (function (item) {
      _inherits(h3, item);
      function h3(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(h3.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, h3);
          this.wzElement = "h3";
      }
      h3.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      h3.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      h3.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      h3.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      h3.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      h3.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return h3;
  })(item);
  
  _md.h3 = h3;
  // element h4
  var h4 = (function (item) {
      _inherits(h4, item);
      function h4(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(h4.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, h4);
          this.wzElement = "h4";
      }
      h4.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      h4.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      h4.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      h4.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      h4.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      h4.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return h4;
  })(item);
  
  _md.h4 = h4;
  // element h5
  var h5 = (function (item) {
      _inherits(h5, item);
      function h5(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(h5.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, h5);
          this.wzElement = "h5";
      }
      h5.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      h5.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      h5.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      h5.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      h5.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      h5.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return h5;
  })(item);
  
  _md.h5 = h5;
  // element h6
  var h6 = (function (item) {
      _inherits(h6, item);
      function h6(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(h6.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, h6);
          this.wzElement = "h6";
      }
      h6.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      h6.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      h6.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      h6.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      h6.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      h6.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return h6;
  })(item);
  
  _md.h6 = h6;
  // element table
  var table = (function (item) {
      _inherits(table, item);
      function table(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(table.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, table);
          this.wzElement = "table";
      }
      table.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      table.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      table.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      table.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      table.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      table.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return table;
  })(item);
  
  _md.table = table;
  // element tbody
  var tbody = (function (item) {
      _inherits(tbody, item);
      function tbody(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(tbody.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, tbody);
          this.wzElement = "tbody";
      }
      tbody.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      tbody.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      tbody.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      tbody.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      tbody.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      tbody.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return tbody;
  })(item);
  
  _md.tbody = tbody;
  // element th
  var th = (function (item) {
      _inherits(th, item);
      function th(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(th.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, th);
          this.wzElement = "th";
      }
      th.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      th.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      th.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      th.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      th.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      th.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return th;
  })(item);
  
  _md.th = th;
  // element tr
  var tr = (function (item) {
      _inherits(tr, item);
      function tr(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(tr.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, tr);
          this.wzElement = "tr";
      }
      tr.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      tr.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      tr.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      tr.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      tr.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      tr.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return tr;
  })(item);
  
  _md.tr = tr;
  // element td
  var td = (function (item) {
      _inherits(td, item);
      function td(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(td.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, td);
          this.wzElement = "td";
      }
      td.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      td.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      td.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      td.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      td.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      td.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return td;
  })(item);
  
  _md.td = td;
  // element br
  var br = (function (item) {
      _inherits(br, item);
      function br(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(br.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, br);
          this.wzElement = "br";
      }
      br.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      br.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      br.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      br.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      br.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      br.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return br;
  })(item);
  
  _md.br = br;
  // element plus
  var plus = (function (item) {
      _inherits(plus, item);
      function plus(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(plus.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, plus);
          this.wzElement = "plus";
      }
      plus.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      plus.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      plus.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      plus.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      plus.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      plus.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return plus;
  })(item);
  
  _md.plus = plus;
  // element apiObject
  var apiObject = (function (item) {
      _inherits(apiObject, item);
      function apiObject(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(apiObject.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, apiObject);
          this.wzElement = "apiObject";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.package = null
      }
      apiObject.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      apiObject.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.package)) {
              result["package"] = this.package;
          }
      }
      apiObject.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      apiObject.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      apiObject.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('item', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.package, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      apiObject.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      apiObject.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 7 && _ch == 'p') {
              if (name === 'package') {
                  this.package = child.v; return true;
              }
          }
          ok = _md.item.prototype.loadChild.call(this, child);
          return ok;
      }
      apiObject.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      return apiObject;
  })(item);
  
  _md.apiObject = apiObject;
  // element apiMethod
  var apiMethod = (function (item) {
      _inherits(apiMethod, item);
      function apiMethod(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(apiMethod.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, apiMethod);
          this.wzElement = "apiMethod";
      }
      apiMethod.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      apiMethod.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      apiMethod.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      apiMethod.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      apiMethod.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      apiMethod.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return apiMethod;
  })(item);
  
  _md.apiMethod = apiMethod;
  // element apiParam
  var apiParam = (function (item) {
      _inherits(apiParam, item);
      function apiParam(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(apiParam.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, apiParam);
          this.wzElement = "apiParam";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.type = null
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.defaultValue = null
          this.optional = false;
      }
      apiParam.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      apiParam.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.type)) {
              result["type"] = this.type;
          }
          if (!isEmpty(this.defaultValue)) {
              result["defaultValue"] = this.defaultValue;
          }
          result["optional"] = this.optional;
      }
      apiParam.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      apiParam.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      apiParam.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('item', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.type, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('type', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.defaultValue, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('defaultValue', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.optional, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      apiParam.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      apiParam.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 4 && _ch == 't') {
              if (name === 'type') {
                  this.type = child.v; return true;
              }
          }
          if (_l == 7 && _ch == 'd') {
              if (name === 'default') {
                  this.defaultValue = child.v; return true;
              }
          }
          if (_l == 8 && _ch == 'o') {
              if (name === 'optional') {
                  this.optional = parseboolean(child.v, null, child); return true;
              }
          }
          ok = _md.item.prototype.loadChild.call(this, child);
          return ok;
      }
      apiParam.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      return apiParam;
  })(item);
  
  _md.apiParam = apiParam;
  // element sampleGroup
  var sampleGroup = (function (item) {
      _inherits(sampleGroup, item);
      function sampleGroup(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(sampleGroup.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, sampleGroup);
          this.wzElement = "sampleGroup";
      }
      sampleGroup.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      sampleGroup.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      sampleGroup.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      sampleGroup.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      sampleGroup.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      sampleGroup.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return sampleGroup;
  })(item);
  
  _md.sampleGroup = sampleGroup;
  // element sample
  var sample = (function (item) {
      _inherits(sample, item);
      function sample(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(sample.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, sample);
          this.wzElement = "sample";
      }
      sample.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      sample.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      sample.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      sample.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      sample.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      sample.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      sample.prototype.wzInitialize = function(ctx) {
          this.summary = _.find(this.items, { wzElement: 'summary' });
          _md.item.prototype.wzInitialize.call(this, ctx);
      }
      sample.prototype.getPrimaryIttf = function() {
          return _.find(this.items, { kind: 'primary' });
      }
      sample.prototype.getMixins = function() {
          return _.filter(this.items, { kind: 'mixin' });
      }
      sample.prototype.getIncludes = function() {
          return _.filter(this.items, { kind: 'include' });
      }
      sample.prototype.getSchema = function() {
          return _.find(this.items, { kind: 'schema' });
      }
      return sample;
  })(item);
  
  _md.sample = sample;
  // element ittf
  var ittf = (function (item) {
      _inherits(ittf, item);
      function ittf(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(ittf.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, ittf);
          this.allowedKINDS = [ "primary", "mixin", "include", "schema"];
          this.KIND_PRIMARY = "primary";
          this.KIND_MIXIN = "mixin";
          this.KIND_INCLUDE = "include";
          this.KIND_SCHEMA = "schema";
          this.wzElement = "ittf";
          // TODO avoid this declaration, attributes should be tested for undefined not null
          // set this.kind = null
      }
      ittf.KIND_PRIMARY = "primary";ittf.KIND_MIXIN = "mixin";ittf.KIND_INCLUDE = "include";ittf.KIND_SCHEMA = "schema";ittf.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      ittf.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
          if (!isEmpty(this.kind)) {
              result["kind"] = this.kind;
          }
      }
      ittf.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      ittf.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      ittf.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.writePrettySpaces(ctx.state.level * 4);
          ctx.hb.writePrettySpan('item', 'attr-tag');
          ctx.hb.writePrettySpan(' ' + this.kind, 'attr-value');
          ctx.hb.closeTag('li');
          ctx.state.line++;
      }
      ittf.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      ittf.prototype.loadChild = function(child) {
          // Make test case insensitive
          var item,
              ok = false,
              name = child.n.toLowerCase(),
              _l = name.length,
              _ch = name[0];
          if (_l == 4 && _ch == 'k') {
              if (name === 'kind') {
                  this.kind = child.v; return true;
              }
          }
          ok = _md.item.prototype.loadChild.call(this, child);
          return ok;
      }
      ittf.prototype.loadFromNode = function(node) {
          var loaded = false;
          // TODO VIA after transition to node.children
          var children = node.children;
          var i, i_items=children, i_len=children.length, item;
          for (i=0; i<i_len; i++) {
              item = children[i];
              loaded = this.loadChild(item);
              if (!loaded) {
                  throw new _md.docsModelException("Tag not recognized: " + item.n, item, this);
              }
          }
      }
      ittf.prototype.wzVerify = function(ctx) {
          ctx.verifyEnum("ittf", "kind", this.kind, this.allowedKINDS, this);
          _md.item.prototype.wzVerify.call(this, ctx);
      }
      return ittf;
  })(item);
  
  _md.ittf = ittf;
  // element js
  var js = (function (item) {
      _inherits(js, item);
      function js(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(js.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, js);
          this.wzElement = "js";
      }
      js.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      js.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      js.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      js.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      js.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      js.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return js;
  })(item);
  
  _md.js = js;
  // element ittfnode
  var ittfnode = (function (item) {
      _inherits(ittfnode, item);
      function ittfnode(name, sourceLineInfo) {
          _get(Object.getPrototypeOf(ittfnode.prototype), 'constructor', this).call(this, name,sourceLineInfo);
          _classCallCheck(this, ittfnode);
          this.wzElement = "ittfnode";
      }
      ittfnode.prototype.toJson = function() {
          var result = {};
          this.toJsonProperties(result);
          this.toJsonChildren(result);
          return result;
      }
      ittfnode.prototype.toJsonProperties = function(result) {
          _md.item.prototype.toJsonProperties.call(this, result);
          if (this.__jsonProps) {
              for (var k in this.__jsonProps) {
                  result[k] = this.__jsonProps[k];
              }
          }
      }
      ittfnode.prototype.toJsonChildren = function(result) {
          _md.item.prototype.toJsonChildren.call(this, result);
      }
      ittfnode.prototype.toPrettify = function(ctx) {
          var start = false;
          if (typeof ctx.state === 'undefined') {
              startPrettify(ctx);
              start = true;
          }
          ctx.hb.openTag('li');
          ctx.hb.writeAttribute('class', 'L' + ('' + ctx.state.line).substr(-1,1));
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'pnl');
          ctx.hb.writeSpaces(ctx.state.level * 4);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-tag');
          ctx.hb.writeText('item');
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.openTag('span', { inline: true });
          ctx.hb.writeAttribute('class', 'el-value');
          ctx.hb.writeText(' ' + this.wzName);
          ctx.hb.closeTag('span', { inline: true });
          ctx.hb.closeTag('li');
          ctx.state.line++;
          ctx.state.level++;
          this.toPrettifyProperties(ctx);
          this.toPrettifyChildren(ctx);
          ctx.state.level--;
          if (start) {
              endPrettify(ctx);
          }
      }
      ittfnode.prototype.toPrettifyProperties = function(ctx) {
          _md.item.prototype.toPrettifyProperties.call(this, ctx);
      }
      ittfnode.prototype.toPrettifyChildren = function(ctx) {
          _md.item.prototype.toPrettifyChildren.call(this, ctx);
      }
      return ittfnode;
  })(item);
  
  _md.ittfnode = ittfnode;
  _md.__tagElementMapping = { '<': 'element', '@': 'attribute', '+': 'plus', 'api-object': 'apiObject', 'apiobject': 'apiObject', 'api-m': 'apiMethod', 'apim': 'apiMethod', 'api-param': 'apiParam', 'apiparam': 'apiParam', 'sample-group': 'sampleGroup', 'samplegroup': 'sampleGroup', '-': 'ittfnode' };
  // model/replaceUnknownElement( )
  var docsModelException = (function () {
      function docsModelException(message, node, instance) {
          _classCallCheck(this, docsModelException);
          // TODO node seems superflous
          if (node && instance) {
              this.message = message + ', wzElement: ' + node.wzElement + ', wzName:' + (node.wzName || '') + ', row:' + node.r + ', col:' + node.c + ', source:' + instance.wzSourceFilepath(node.u);
              this.errorLines = instance.wzSourceErrorLines(node, message);
          }
          else if (instance) {
              this.message = message + instance.wzSourceLineInfo.toString(instance);
          }
          else {
              this.message = message;
          }
          console.log('message', this.message);
          this.stack = (new Error()).stack;
          this.node = node;
      }
      return docsModelException;
  })();
  
  _md.docsModelException = docsModelException;
  var docsContext = (function () {
      function docsContext() {
          _classCallCheck(this, docsContext);
          this.validationErrors = [];
      }
      docsContext.prototype.schemaIsValid = function() {
          return this.validationErrors.length == 0;
      }
      docsContext.prototype.addError = function(message, node) {
          var at = node ? ' At ' + node.wzSourceLineInfo.toString(node) : '';
          this.validationErrors.push(message + at);
      }
      docsContext.prototype.verifyEnum = function(valueType, valueName, value, allowed, node) {
          if (value && allowed.indexOf(value) < 0) {
              var allowedStr = 'allowed: ' + allowed.join(', ');
              this.validationErrors.push(valueType + ' ' + valueName + ' has an invalid value: ' + value + ' ' + allowedStr + '. At ' + (node.wzSourceLineInfo ? node.wzSourceLineInfo.toString(node) : 'location unavailable'));
          }
      }
      return docsContext;
  })();
  
  _md.docsContext = docsContext;
  function parsestring(value, defaultValue, node) {
      if (isEmpty( value )) {
          return defaultValue;
      }
      return value;
  }
  function parseboolean(value, defaultValue, node) {
      if (isEmpty( value )) {
          return defaultValue;
      }
      if (!isBoolean(value)) {
          throw new docsModelException('Must be a boolean value (\"true\" or \"false\"), got:' + value, node);
      }
      return value === 'true' ? true : false;
  }
  function isString(value) {
      return (typeof value === 'string' || value instanceof String);
  }
  function isEmpty(value) {
      return !isString( value ) || value.length === 0;
  }
  function isBoolean(value) {
      return value === 'true' || value === 'false';
  }
  
  