function deepCopy(val) {
  if (!(val instanceof Object))
    return val;
  return Array.isArray(val) ? deepCopyArray(/** @type {!Array} */ (val)) :
                              deepCopyObject(val);
}
/**
 * Returns a recursive copy of the value.
 * @param {*} val Value to copy. Should be a primitive or only contain
 *     serializable data (primitives, serializable arrays and
 *     serializable objects).
 * @return {*} A deep copy of the value.
 */
Returns a recursive copy of the value.
@param {*} val Value to copy. Should be a primitive or only contain
serializable data (primitives, serializable arrays and
serializable objects).
@return {*} A deep copy of the value.
Returns a recursive copy of the value . @param { * } val Value to copy . Should be a primitive or only contain serializable data ( primitives serializable arrays and serializable objects ) . @return { * } A deep copy of the value .
function deepCopy(val) {
  if (!(val instanceof Object))
    return val;
  return Array.isArray(val) ? deepCopyArray( (val)) :
                              deepCopyObject(val);
}
function deepCopy ( val ) { if ( ! ( val instanceof Object ) ) return val ; return Array . isArray ( val ) ? deepCopyArray ( ( val ) ) : deepCopyObject ( val ) ; }
Returns a recursive copy of the value.
Returns a recursive copy of the value .
/** @type {!Array} */