code: function (itemObj, opts) {
  		var processedObj = {};
  		var computes = [];
  		var self = this;
  
  		// Loop through each validation option
  		canReflect.eachKey(opts, function (item, key) {
  			processedObj[key] = item;
  			if (typeof item === "function") {
  				// create compute and add it to computes array
  				var newCompute = compute(item.bind(self));
  				computes.push({key: key, compute: newCompute});
  				processedObj[key] = newCompute;
  			}
  		});
  
  		// Using the computes array, create necessary listeners
  		// We do this afterwards instead of inline so we can have access
  		// to the final set of validation options.
  		canReflect.each(computes, function (item) {
  			item.compute.bind("change", function () {
  				itemObj.value = self.attr(itemObj.key);
  				self._validateOne(itemObj, processedObj);
  			});
  		});
  
  		return processedObj;
  	}
docs: @function _processValidateOpts Process Validate Opts
  @hide
  @description Allows the ability to pass computes in validation properties,
  this allows for things like making a property required based on the value on
  another property.
  
  Processes validation options, creates computes from functions and adds
  listeners to computes.
  @param {object} itemObj Property to validate
  @param {object} opts Map of validation options