docs: function cast(string) {
  	var result = String(string);
  	switch (result) {
  		case 'null':
  			result = null;
  			break;
  		case 'true':
  		case 'false':
  			result = result === 'true';
  			break;
  		default:
  			if (String(parseInt(result, 10)) === result) {
  				result = parseInt(result, 10);
  			} else if (String(parseFloat(result)) === result) {
  				result = parseFloat(result);
  			}
  			break;
  	}
  	return result === '' ? true : result;
  }