code: function copyProperties(obj, a, b, c, d, e, f) {
    obj = obj || {};
  
    if (process.env.NODE_ENV !== 'production') {
      if (f) {
        throw new Error('Too many arguments passed to copyProperties');
      }
    }
  
    var args = [a, b, c, d, e];
    var ii = 0, v;
    while (args[ii]) {
      v = args[ii++];
      for (var k in v) {
        obj[k] = v[k];
      }
  
      // IE ignores toString in object iteration.. See:
      // webreflection.blogspot.com/2007/07/quick-fix-internet-explorer-and.html
      if (v.hasOwnProperty && v.hasOwnProperty('toString') &&
          (typeof v.toString !== 'undefined') && (obj.toString !== v.toString)) {
        obj.toString = v.toString;
      }
    }
  
    return obj;
  }
docs: Copy properties from one or more objects (up to 5) into the first object.
  This is a shallow copy. It mutates the first object and also returns it.
  
  NOTE: `arguments` has a very significant performance penalty, which is why
  we don't support unlimited arguments.