code: function cloneDeep(value, callback, thisArg) {
        callback = typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1);
        return baseClone(value, true, callback);
      }
docs: Creates a deep clone of `value`. 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).
  
  Note: This method is loosely based on the structured clone algorithm. Functions
  and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and
  objects created by constructors other than `Object` are cloned to plain `Object` objects.
  See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm)
  for more details.
  
  @static
  @memberOf _
  @category Objects
  @param {*} value The value to deep clone.
  @param {Function} [callback] The function to customize cloning values.
  @param {*} [thisArg] The `this` binding of `callback`.
  @returns {*} Returns the deep cloned value.
  @example
  
  var characters = [
  { 'name': 'barney', 'age': 36 },
  { 'name': 'fred',   'age': 40 }
  ];
  
  var deep = _.cloneDeep(characters);
  deep[0] === characters[0];
  // => false
  
  var view = {
  'label': 'docs',
  'node': element
  };
  
  var clone = _.cloneDeep(view, function(value) {
  return _.isElement(value) ? value.cloneNode(true) : undefined;
  });
  
  clone.node == view.node;
  // => false