Annotation Interface PlanningEntity


@Target(TYPE) @Retention(RUNTIME) public @interface PlanningEntity
Specifies that the class is a planning entity. There are two types of entities:
Genuine entity
Must have at least 1 genuine planning variable, and 0 or more shadow variables.
Shadow entity
Must have at least 1 shadow variable, and no genuine variables.
If a planning entity has neither a genuine nor a shadow variable, it is not a planning entity and the solver will fail fast.

The class should have a public no-arg constructor, so it can be cloned (unless the PlanningSolution.solutionCloner() is specified).