public void Unexecute()
        {
            ConstraintSolver solver = ConstraintSolver.Instance();

            this.target.Move(this.delta);

            solver.SetMemento(this.state); // restore solver state
            solver.Solve();
        }
        public void Execute()
        {
            ConstraintSolver solver = ConstraintSolver.Instance();

            this.state = solver.CreateMemento(); // create a memento

            this.target.Move(this.delta);

            solver.Solve();
        }