docs: function(obj) {
                  // Object is array, plain object, Map or List
                  if (obj && typeof obj === "object") {
                      // Get native object or array from Map or List
                      if (obj instanceof can.Map) {
                          obj = obj.attr();
                          // Clone object to prevent change original values
                      } else {
                          obj = can.isFunction(obj.slice) ? obj.slice() : can.extend({}, obj);
                      }
                      // Convert each object property or array item into stringified new
                      can.each(obj, function(val, prop) {
                          obj[prop] = stringify(val);
                      });
                      // Object supports toString function
                  } else if (obj !== undefined && obj !== null && can.isFunction(obj.toString)) {
                      obj = obj.toString();
                  }
  
                  return obj;
              }