docs: function(base, extra, protect) {
          if (base) {
            Object.keys(extra || {}).forEach(function(key) {
              if (base[key] && protect) {
                throw new Error('utils.push attempted to overwrite "' + key + '" while running in protected mode');
              }
  
              if (typeof base[key] == 'object' && typeof extra[key] == 'object') {
                // recurse
                this.push(base[key], extra[key]);
              } else {
                // no protect, so extra wins
                base[key] = extra[key];
              }
            }, this);
          }
  
          return base;
        }