code: function copy(source, target, hidden) {
  	for (var key in source) {
  		Object.defineProperty(target, key, {
  			enumerable: hidden !== true,
  			configurable: true, writable: true,
  			value: source[key]
  		});
  	}
  
  	return target;
  }
docs: Copies all properties from the source to the target (including inherited properties) and optionally makes them
  not enumerable.
  @private