private void UndoCastlingLong(Piece pieceToGoBack, Position origin, Position destination)
 {
     if (pieceToGoBack is King && destination.Column == origin.Column - 2)
     {
         Position rookOrigin      = new Position(origin.Line, origin.Column - 4);
         Position rookDestination = new Position(origin.Line, origin.Column - 1);
         Piece    rook            = Board.RemovePieceFromBoard(rookDestination);
         rook.DecrementMovementQuantity();
         Board.AddPieceToBoard(rook, rookOrigin);
     }
 }
        private void UndoMovement(Position origin, Position destination, Piece capturedPiece)
        {
            Piece pieceToGoBack = Board.RemovePieceFromBoard(destination);

            pieceToGoBack.DecrementMovementQuantity();
            if (capturedPiece != null)
            {
                Board.AddPieceToBoard(capturedPiece, destination);
                piecesCaptured.Remove(capturedPiece);
            }
            Board.AddPieceToBoard(pieceToGoBack, origin);
            // Special Play - Castling Short
            UndoCastlingShort(pieceToGoBack, origin, destination);
            // Special Play - Castling Long
            UndoCastlingLong(pieceToGoBack, origin, destination);
            // Special Play - En Passant
            UndoEnPassant(pieceToGoBack, capturedPiece, origin, destination);
        }