anchor.diff:  	*	@hint Converts a collection to an XML object. Element names default to variable types. If provided, element names will be assigned to unnamed elements (any element without a key) in the order they are listed.
   	*	@example _.toXml([1, 2]); <br />=> &lt;array>&lt;element>1&lt;/element>&lt;element>2&lt;/element>&lt;/array> <br /><br />_.toXml([3], 'myArray', 'number'); <br />=> &lt;myArray>&lt;number>3&lt;/number>&lt;myArray>
   	*/
  -	public xml function toXml(required any value) {
  -		var toXmlString = function(required any value, array elementNames = []) {
  +	public xml function toXml(obj = this.obj) {
  +		var toXmlString = function(required any obj, array elementNames = []) {
   			var xmlString = '';
   			var elementName = '';
  -			var isArray = isArray(arguments.value);
  -			var isQuery = isQuery(arguments.value);
  +			var isArray = isArray(arguments.obj);
  +			var isQuery = isQuery(arguments.obj);
   
   			if (_.size(arguments.elementNames) > 0)
   				elementName = _.first(arguments.elementNames);
  
positive.code: 			return xmlString;
  		};
  		var elementNames = _.slice(arguments, 2);
  		var xmlString = toXmlString(arguments.value, elementNames);
  		return xmlParse(xmlString);
  	}	
  
  
negative.code: 				elementName = 'array';
  			else if (isQuery)
  				elementName = 'query';
  			else if (isObject(arguments.obj))
  				elementName = 'object';
  			else if (isStruct(arguments.obj))
  				elementName = 'struct';
  			else
  				elementName = 'element';
  
  			xmlString &= '<' & elementName & '>';
  
  			if (isSimpleValue(arguments.obj) || _.isFunction(arguments.obj)) {
  				xmlString &= _.result(arguments, 'obj');
  			}
  			else {
  				var remainingNames = _.rest(arguments.elementNames);
  				_.each(arguments.obj, function (val, key) {
  					if (!isArray && !isQuery)
  						remainingNames = _.concat([key], remainingNames);// key is el name for non-array, non-query types
  					xmlString &= toXmlString(val, remainingNames);
  