adt.js
function () {
      var ctr = this.constructor;
      var names = ctr.__names__;
      var args = [], i = 0, n, val;
      for (; n = names[i]; i++) {
        val = this[n];
        args[i] = val instanceof adt.__Base__ 
          ? val.clone()
          : adt.nativeClone(val);
      }
      return ctr.apply(null, args);
    }
function () {
      var ctr = this.constructor;
      var names = ctr.__names__;
      var args = [], i = 0, n, val;
      for (; n = names[i]; i++) {
        val = this[n];
        args[i] = val instanceof adt.__Base__ 
          ? val.clone()
          : adt.nativeClone(val);
      }
      return ctr.apply(null, args);
    }
function ( ) { var ctr = this . constructor ; var names = ctr . __names__ ; var args = [ ] , i = 0 , n , val ; for ( ; n = names [ i ] ; i ++ ) { val = this [ n ] ; args [ i ] = val instanceof adt . __Base__ ? val . clone ( ) : adt . nativeClone ( val ) ; } return ctr . apply ( null , args ) ; }
Clones any value that is an adt.js type, delegating other JS values to `adt.nativeClone`.
Clones any value that is an adt . js type delegating other JS values to adt . nativeClone .