lib/Object.js
function DataType_Object_clone(source, // @arg Any             - source object.
                               depth,  // @arg Integer = 0     - max depth, 0 is infinity.
                               hook) { // @arg Function = null - handle the unknown object.
                                       // @ret Any             - copied object.
                                       // @throw TypeError("DataCloneError: ...")
                                       // @desc Object with the reference -> deep copy
                                       //       Object without the reference -> shallow copy
                                       //       do not look prototype chain.
//{@dev
    $valid($type(depth, "Number|omit"),  DataType_Object_clone, "depth");
    $valid($type(hook, "Function|omit"), DataType_Object_clone, "hook");
//}@dev

    return _clone(source, depth || 0, hook, 0);
}
function DataType_Object_clone(source, // @arg Any             - source object.
                               depth,  // @arg Integer = 0     - max depth, 0 is infinity.
                               hook) { // @arg Function = null - handle the unknown object.
                                       // @ret Any             - copied object.
                                       // @throw TypeError("DataCloneError: ...")
                                       // @desc Object with the reference -> deep copy
                                       //       Object without the reference -> shallow copy
                                       //       do not look prototype chain.
//{@dev
    $valid($type(depth, "Number|omit"),  DataType_Object_clone, "depth");
    $valid($type(hook, "Function|omit"), DataType_Object_clone, "hook");
//}@dev

    return _clone(source, depth || 0, hook, 0);
}
--- implements ------------------------------------------