docs: function parseDescription(text){
      var listItem = false;
      var lines = basis.array.flatten(text.trimRight().split(/(?:\r\n?|\n\r?){2,}|((?:\r\n?|\n\r?)\s*\-\s+)/).map(function(line, idx){
        if (idx % 2)
        {
          listItem = !!line;
          return;
        }
  
        var m = line.match(/^\s*(.+):(\r\n?|\n\r?)/);
        var h;
        if (m)
        {
          h = DOM.createElement('SPAN.definition', m[1]);
          line = line.substr(m[0].length);
        }
  
        var parts = line.split(/\{([a-z0-9\_\.\#]+)\}/i);
        for (var i = 1; i < parts.length; i += 2)
        {
          var mapPath = parts[i].replace(/#/, '.prototype.');
          var descr = mapDO[mapPath];
          if (descr)
            parts[i] = DOM.createElement(basis.string.format('A[href=#{fullPath}].doclink-{kind}', descr.data), descr.data.title);
          else
            parts[i] = '{' + parts[i] + '}';
        }
  
        return DOM.createElement(listItem ? 'LI' : 'P', h, parts);
      }).filter(basis.fn.$isNotNull));
  
      var result = [];
      var listContext;
      for (var i = 0; i < lines.length; i++)
      {
        if (lines[i].tagName == 'LI')
        {
          if (!listContext)
          {
            listContext = DOM.createElement('UL');
            result.push(listContext);
          }
          listContext.appendChild(lines[i]);
        }
        else
        {
          listContext = null;
          result.push(lines[i]);
        }
      }
      return result;
    }