docs: function() {
      var dir, leaf, name, names, root, _i, _j, _len, _name;
      root = arguments[0], names = 3 <= arguments.length ? __slice.call(arguments, 1, _i = arguments.length - 1) : (_i = 1, []), name = arguments[_i++];
      leaf = this;
      dir = path.resolve(root);
      for (_j = 0, _len = names.length; _j < _len; _j++) {
        _name = names[_j];
        if (!isObject(leaf[_name])) {
          leaf[_name] = {};
        }
        leaf = leaf[_name];
        dir = path.resolve(dir, _name);
      }
      if (name == null) {
        name = path.basename(dir, path.extname(dir));
        dir = path.dirname(dir);
      }
      walk(leaf, dir, name);
      return this;
    }