whole_func_string: function clone(v) {
      if (v === null || typeof v !== "object") {
          return v;
      }
  
      if (isArray(v)) {
          var arr = v.slice();
          for (var i = 0; i < v.length; i++) {
              arr[i] = clone(arr[i]);
          }
          return arr;
      }
      else {
          var obj = {};
          for (var k in v) {
              obj[k] = clone(v[k]);
          }
          return obj;
      }
  }
func_code_string: function clone(v) {
      if (v === null || typeof v !== "object") {
          return v;
      }
  
      if (isArray(v)) {
          var arr = v.slice();
          for (var i = 0; i < v.length; i++) {
              arr[i] = clone(arr[i]);
          }
          return arr;
      }
      else {
          var obj = {};
          for (var k in v) {
              obj[k] = clone(v[k]);
          }
          return obj;
      }
  }
func_documentation_string: Recursively copies given object into a new object. Helper method for merge