code: function combineFilterFirstValues(options) {
  	return function(inSet, gt) {
  		var values = inSet.values.filter(function(value) {
  			return options.values.test(value, gt.value);
  		});
  		var range = options.with ? new options.with(gt.value) : gt;
  		return values.length ?
  			options.combinedUsing([new options.arePut(values), range]) : range;
  	};
  }
docs: `value` - has a test function to check values `with` - the type we use to combined with the "other" value. `combinedUsing` - If there are values, how do we stick it together with `with`