code: function(a, b, aParent, bParent, prop, compares, options){
  		if(typeof compares === "function") {
  			var compareResult = compares(a, b, aParent, bParent, prop, options);
  			if(typeof compareResult === "boolean") {
  				return compareResult;
  			} else if(compareResult && typeof compareResult === "object"){
  				if( compareResult.getSubset ) {
  					if(h.indexOf.call(options.getSubsets, compareResult.getSubset) === -1) {
  						options.getSubsets.push(compareResult.getSubset);
  					}
  				}
  				if(compareResult.intersection === h.ignoreType || compareResult.difference === h.ignoreType) { // as in the case of a sort props
  					return true;
  				}
  				// A \ B subset intersects in both directions
  				// but does not diff from
  				if( ("intersection" in compareResult) && !("difference" in compareResult)) {
  					var reverseResult =  compares(b, a,bParent, aParent, prop, options);
  					return ("intersection" in reverseResult);
  				}
  				return false;
  			}
  			return compareResult;
  		}
  	}
docs: Checks if A is a subset of B.  If A is a subset of B if:
  - A \ B = undefined
  - A ∩ B = defined
  - B ∩ A = defined