SolutionDescriptor solutionDescriptor, PlanningEntityDescriptor entityDescriptor,
SelectionCacheType minimumCacheType, SelectionOrder inheritedSelectionOrder) {
PlanningVariableDescriptor variableDescriptor = fetchVariableDescriptor(entityDescriptor);
SelectionCacheType resolvedCacheType = SelectionCacheType.resolve(cacheType, minimumCacheType);
minimumCacheType = SelectionCacheType.max(minimumCacheType, resolvedCacheType);
SelectionOrder resolvedSelectionOrder = SelectionOrder.resolve(selectionOrder,
inheritedSelectionOrder);
// baseValueSelector and lower should be SelectionOrder.ORIGINAL if they are going to get cached completely
ValueSelector valueSelector = buildBaseValueSelector(environmentMode, variableDescriptor,
minimumCacheType, resolvedCacheType.isCached() ? SelectionOrder.ORIGINAL : resolvedSelectionOrder);