code: function(prop, enumData){
  		var compares = new clause.Where({});
  		compares[prop] = function(vA, vB, A, B){
  			vA = cleanUp(vA, enumData);
  			vB = cleanUp(vB, enumData);
  
  			var data = h.arrayUnionIntersectionDifference(vA, vB);
  			// if the difference is empty ... there is no difference
  			if( !data.difference.length ) {
  				delete data.difference;
  			}
  
  			// if any of them have everything, return undefined
  			each(data, function(value, prop){
  				if(Array.isArray(value)) {
  					if(h.arraySame(enumData, value)) {
  						data[prop] = undefined;
  					} else if(value.length === 1) {
  						data[prop] = value[0];
  					}
  				}
  			});
  
  			return data;
  		};
  		return compares;
  	}
docs: @function can-set.props.enum enum
  @parent can-set.props
  
  @signature `set.props.enum(property, propertyValues)`
  
  Makes a prop for a set of values.
  
  ```
  var compare = set.props.enum("type", ["new","accepted","pending","resolved"])
  ```