docs: function ValueToString(value) {
      if (value && typeof value === "object" && value.constructor === Array) {
        return JSON.stringify(value);
      }
  
      if (value && typeof value === "object" && value.constructor === Object) {
        return JSON.stringify(value);
      }
  
      /**
       * seeing some really weird cases where the above fail but "" + value
       * returns '[object Object]'
       */
      if (value && typeof value === "object") {
        return JSON.stringify(value);
      }
  
      if (value === null || typeof value === "undefined") {
        return "";
      }
  
      if (typeof value === "boolean") {
        if (value) {
          return "true";
        } else {
          return "false";
        }
      }
  
      if (typeof value === "number" && isFinite(value)) {
        return value.toString();
      }
  
      if (!!(value && value.constructor && value.call && value.apply)) {
        return value.toString();
      }
  
      return "" + value;
    }