public IEnumerable <ChessMove> GetAvailableLegalMoves(IReadOnlyChessPiece chessPiece) { var filteredMoves = new List <ChessMove>(); foreach (var chessMove in movement.GetAvailableMoves(chessPiece)) { chessBoard.Move(chessMove); if (!checkDetector.IsChecked(chessPiece.Color)) { filteredMoves.Add(chessMove); } chessBoard.ReverseLastMove(); } return(filteredMoves); }