public object Clone() { var toReturn = new DynamicCSP(); foreach (Variable variable in this.getVariables().toArray()) { toReturn.addVariable(variable); toReturn.setDomain(variable, new Domain(this.getDomain(variable).asList())); } foreach (Constraint constraint in this.getConstraints().toArray()) { toReturn.addConstraint(constraint); } return(toReturn); }