void retract() {
        assert movesMade() > 0;
        Move lastMove = _moves.remove(_moves.size() - 1).reversed();
        makeMove(lastMove);
        _moves.remove(_moves.size() - 1);
        if (numOnLine(lastMove) != lastMove.length()) {
            setPiece(lastMove.getRow0(), lastMove.getCol0(),
                    get(lastMove.getRow1(), lastMove.getCol1()) == WP
                    ? BP : WP);
        }
    }