This insane refactoring can be divided into two areas:
The invariant graph class has been split into two: InvariantGraphBase and FznInvariantGraph (the latter extends the former)
The Fzn parsing/backend has been moved from the (violation) invariant node definitions into their own files, one for each Fzn constraint. The class FznInvariantGraph makes use of these files.
The design for the Fzn backend might not be final: the backend could become a class where each Fzn constraint becomes one or more methods.
Additionally, tests have been modified and added where needed.
This insane refactoring can be divided into two areas:
The design for the Fzn backend might not be final: the backend could become a class where each Fzn constraint becomes one or more methods.
Additionally, tests have been modified and added where needed.