docs: function(key, newValue) {
        var me = this;
        if (arguments.length === 1) {
          return this.map[key];
        }
        if (newValue === null) {
          delete this.map[key];
          if (this.hasOwnProperty(key)) {
            delete this[key];
          }
        } else {
          this.map[key] = newValue;
          if (!this.hasOwnProperty(key)) {
            Object.defineProperty(this, key, {
              enumerable: true,
              configurable: true,
              get: function() {
                return me.map[key];
              },
              set: function(value) {
                me.map[key] = value;
              }
            });
          }
        }
        return this;
      }