whole_func_string: function clone(value, deep, callback, thisArg) {
        // allows working with "Collections" methods without using their `index`
        // and `collection` arguments for `deep` and `callback`
        if (typeof deep != 'boolean' && deep != null) {
          thisArg = callback;
          callback = deep;
          deep = false;
        }
        return baseClone(value, deep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));
      }
func_code_string: function clone(value, deep, callback, thisArg) {
        // allows working with "Collections" methods without using their `index`
        // and `collection` arguments for `deep` and `callback`
        if (typeof deep != 'boolean' && deep != null) {
          thisArg = callback;
          callback = deep;
          deep = false;
        }
        return baseClone(value, deep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));
      }
func_documentation_string: Creates a clone of `value`. If `deep` is `true` nested objects will also
  be cloned, otherwise they will be assigned by reference. If a callback
  is provided it will be executed to produce the cloned values. If the
  callback returns `undefined` cloning will be handled by the method instead.
  The callback is bound to `thisArg` and invoked with one argument; (value).
  
  @static
  @memberOf _
  @category Objects
  @param {*} value The value to clone.
  @param {boolean} [deep=false] Specify a deep clone.
  @param {Function} [callback] The function to customize cloning values.
  @param {*} [thisArg] The `this` binding of `callback`.
  @returns {*} Returns the cloned value.
  @example
  
  var stooges = [
  { 'name': 'moe', 'age': 40 },
  { 'name': 'larry', 'age': 50 }
  ];
  
  var shallow = _.clone(stooges);
  shallow[0] === stooges[0];
  // => true
  
  var deep = _.clone(stooges, true);
  deep[0] === stooges[0];
  // => false
  
  _.mixin({
  'clone': _.partialRight(_.clone, function(value) {
  return _.isElement(value) ? value.cloneNode(false) : undefined;
  })
  });
  
  var clone = _.clone(document.body);
  clone.childNodes.length;
  // => 0