code: function (o) {
  			var type = _.util.type(o);
  
  			switch (type) {
  				case 'Object':
  					var clone = {};
  
  					for (var key in o) {
  						if (o.hasOwnProperty(key)) {
  							clone[key] = _.util.clone(o[key]);
  						}
  					}
  
  					return clone;
  
  				case 'Array':
  					return o.map(function(v) { return _.util.clone(v); });
  			}
  
  			return o;
  		}
docs: Deep clone a language definition (e.g. to extend it)