code: function collect(what, which) {
      var res = {};
      while (what) {
        res = Object.assign({}, what[which], res); // Respect prototype priority
        what = Object.getPrototypeOf(what);
      }
      return res;
    }
docs: Merges a property's object value using the defaults way.
  
  @private
  @param {Object} what Initial prototype
  @param {String} which Property to collect.
  @return {Object} the collected values