public void MoveCheckerToNewPosition(CheckerModel checkerToMove, int newPositionColumn, int newPositionRow) { int fromColumn = checkerToMove.Column; int fromRow = checkerToMove.Row; CheckerModel oldPositionedItem = _data[newPositionColumn, newPositionRow]; if (checkerToMove == oldPositionedItem) { return; } if (fromColumn == newPositionColumn && fromRow == newPositionRow) { _data[newPositionColumn, newPositionRow] = checkerToMove; _added.Add(checkerToMove); _deleted.Add(oldPositionedItem); return; } _data[newPositionColumn, newPositionRow] = checkerToMove; checkerToMove.SetNewPosition(newPositionColumn, newPositionRow); _data[fromColumn, fromRow] = oldPositionedItem; oldPositionedItem.SetNewPosition(fromColumn, fromRow); _modified.Add(oldPositionedItem); _modified.Add(checkerToMove); }