ValueSource defines the following method...
...where ValueSourceSortField builds up a ValueSourceComparator containing a double based on the FunctionValues of the original ValueSource.
meanwhile, the abstract FieldCacheSource exists as a base implementation for classes like IntFieldSource and DoubleFieldSource which wrap a ValueSource around DocValues for the specified field.
But neither FieldCacheSource nor any of it's subclasses override the getSortField(boolean) method – so attempting to sort on something like an IntFieldSource winds up using a bunch of ram to build that double to give users a less accurate sort (because of casting) then if they just sorted directly on the field.
is there any good reason why FieldCacheSource subclases like IntFieldSource shouldn't all override getSortField with something like...