function(obj, deep) {
      var target;
      // Preserve internal UTC flag when applicable.
      if(isDate(obj) && obj.clone) {
        return obj.clone();
      } else if(!isObjectPrimitive(obj)) {
        return obj;
      } else if (obj instanceof Hash) {
        target = new Hash;
      } else {
        target = new obj.constructor;
      }
      return object.merge(target, obj, deep);
    }
function(obj, deep) {
      var target;
      
      if(isDate(obj) && obj.clone) {
        return obj.clone();
      } else if(!isObjectPrimitive(obj)) {
        return obj;
      } else if (obj instanceof Hash) {
        target = new Hash;
      } else {
        target = new obj.constructor;
      }
      return object.merge(target, obj, deep);
    }
function ( obj , deep ) { var target ; // Preserve internal UTC flag when applicable. if ( isDate ( obj ) && obj . clone ) { return obj . clone ( ) ; } else if ( ! isObjectPrimitive ( obj ) ) { return obj ; } else if ( obj instanceof Hash ) { target = new Hash ; } else { target = new obj . constructor ; } return object . merge ( target , obj , deep ) ; }
*
@method clone(<obj> = {}, [deep] = false)
@returns Cloned object
@short Creates a clone (copy) of <obj>.
@extra Default is a shallow clone, unless [deep] is true. %clone% is available as an instance method on extended objects.
@example

Object.clone({foo:'bar'})            -> { foo: 'bar' }
Object.clone()                       -> {}
Object.extended({foo:'bar'}).clone() -> { foo: 'bar' }

*
* @method clone ( <obj > = {} [ deep ] = false ) @returns Cloned object @short Creates a clone ( copy ) of <obj > . @extra Default is a shallow clone unless [ deep ] is true . %clone% is available as an instance method on extended objects . @example