Assignment context can be used by a class (e.g., a constraint, a extension, a neighborhood selection, or a criterion) to
contain any assignment dependent data. Instead of holding the data directly, the class only holds a reference to the
appropriate assignment context, which is stored with the assignment and returned from the assignment using the reference.