SelectionCacheType minimumCacheType, SelectionCacheType resolvedCacheType,
SelectionOrder resolvedSelectionOrder, ValueSelector valueSelector) {
boolean randomSelection = resolvedSelectionOrder.toRandomSelectionBoolean();
EntitySelector originEntitySelector = originEntitySelectorConfig.buildEntitySelector(
configPolicy, minimumCacheType, resolvedSelectionOrder);
NearbyDistanceMeter nearbyDistanceMeter = ConfigUtils.newInstance(this,
"nearbyDistanceMeterClass", nearbyDistanceMeterClass);
// TODO Check nearbyDistanceMeterClass.getGenericInterfaces() to confirm generic type S is an entityClass
NearbyRandom nearbyRandom = buildNearbyRandom();
return new NearEntityNearbyValueSelector(valueSelector, originEntitySelector,
nearbyDistanceMeter, nearbyRandom, randomSelection);