anchor.diff:  
     List<Move> moves = [];
     Piece clickedPiece = gamestate.pieceAt(coordinate);
  -  if (clickedPiece != null) {
  -    moves.addAll(clickedPiece.moves(gamestate));
  -  }
  -
  -  validMoves = moves;
  +  if (clickedPiece == selectedPiece) {
  +    selectedPiece = null;
  +  } else {
  +    selectedPiece = clickedPiece;
  +  }
  +
     render(gamestate);
   }
   
  
positive.code: 
  var camera = new Camera();
  Bench bench;
  List<Move> validMoves = [];
  
  
  void main() {
  
negative.code:     return;
    }
    bench = new Bench(parsedGame.player1, parsedGame.player2);
    selectedPiece = null;
    gamestate.initialize(parsedGame.gameEvents);
    gamestate.step(1);
    render(gamestate);
  }
  
  void showNextMove(GameState gamestate) {
    selectedPiece = null;
    gamestate.stepBy(1);
  
    render(gamestate);
  }
  
  void showPreviousMove(GameState gamestate) {
    selectedPiece = null;
    gamestate.stepBy(-1);
  
    render(gamestate);
  }
  
  void showFirstMove(GameState gamestate) {
    selectedPiece = null;
    gamestate.step(1);
  
    render(gamestate);
  }
  
  void showLastMove(GameState gamestate) {
    selectedPiece = null;
    gamestate.stepToEnd();
  
    render(gamestate);
  