Interface ElementLocation

All Known Implementing Classes:
LocationInList, UnassignedLocation

public sealed interface ElementLocation permits LocationInList, UnassignedLocation
A supertype for LocationInList and UnassignedLocation.

PlanningListVariable.allowsUnassignedValues() introduces UnassignedLocation, and the handling of unassigned values is brittle. These values may leak into code which expects LocationInList instead. Therefore, we use ElementLocation and we force calling code to cast to either of the two subtypes. This prevents accidental use of UnassignedLocation in places where LocationInList is expected, catching this error as early as possible.