protected void fireStateChanged(Assignment assignment, CSP csp) {
   for (CSPStateListener listener : listeners)
     listener.stateChanged(assignment.copy(), csp.copyDomains());
 }
 protected void fireStateChanged(CSP csp) {
   for (CSPStateListener listener : listeners) listener.stateChanged(csp.copyDomains());
 }