code: function cloneObject (obj, options) {
    var retainKeyOrder = options && options.retainKeyOrder
      , minimize = options && options.minimize
      , ret = {}
      , hasKeys
      , keys
      , val
      , k
      , i
  
    if (retainKeyOrder) {
      for (k in obj) {
        val = clone(obj[k], options);
  
        if (!minimize || ('undefined' !== typeof val)) {
          hasKeys || (hasKeys = true);
          ret[k] = val;
        }
      }
    } else {
      // faster
  
      keys = Object.keys(obj);
      i = keys.length;
  
      while (i--) {
        k = keys[i];
        val = clone(obj[k], options);
  
        if (!minimize || ('undefined' !== typeof val)) {
          if (!hasKeys) hasKeys = true;
          ret[k] = val;
        }
      }
    }
  
    return minimize
      ? hasKeys && ret
      : ret;
  }
docs: /*!
  ignore