docs: function (cpon, obj) {
    if (typeof cpon !== 'string')
      throw new Error('expected CPON string');
  
    if (obj === undefined)
      obj = {};
  
    var caret = cpon.indexOf('^');
    if (caret < 0)
      throw new Error('caret (^) not found in garden');
  
    var key = left(cpon, caret);
    var value = cpon.substring(caret + 1);
    var pipe = value.indexOf('|');
    if (pipe > -1) {
      obj = getObjectFromCPON(value.substring(pipe + 1),obj);
      value = left(value,pipe);
    }
    obj[key] = value;
    return obj;
  }