function extend(dst) {
  var h = dst.$$hashKey;

  for (var i = 1, ii = arguments.length; i < ii; i++) {
    var obj = arguments[i];
    if (obj) {
      var keys = Object.keys(obj);
      for (var j = 0, jj = keys.length; j < jj; j++) {
        var key = keys[j];
        dst[key] = obj[key];
      }
    }
  }

  setHashKey(dst, h);
  return dst;
}
@ngdoc function
@name angular.extend
@module ng
@kind function

@description
Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
Note: Keep in mind that `angular.extend` does not support recursive merge (deep copy).

@param {Object} dst Destination object.
@param {...Object} src Source object(s).
@returns {Object} Reference to `dst`.