docs: function addWrapper(ast, vname) {
      var ns = config.get('ns'),
          wrapper = [],
          exports = ns + '.' + vname,
          cAst;
  
      wrapper.push('window.' + ns + ' = window.' + ns + ' || {};(function(' + ns + '){');
  
      vname && wrapper.push(exports + ' = ' + exports + ' || {};');
  
      wrapper.push('})(' + ns + ');');
  
      cAst = esprima.parse(wrapper.join(''));
  
      estraverse.replace(cAst, {
          leave: function(node, parent) {
              var nodeType = node.type,
                  body,
                  item;
  
              if (nodeType === Syntax.BlockStatement && parent.type === Syntax.FunctionExpression && parent.params[0].name === ns) {
                  body = [].slice.call(node.body, 0);
                  item = [].slice.call(ast.body, 0);
  
                  for (var i = 0, len = item.length; i < len; i++) {
                      body.splice(1 + i, 0, item[i]);
                  }
  
                  return {
                      type: node.type,
                      body: body
                  };
              }
          }
      });
  
      return cAst;
  }