anchor.diff:      mainSquareDiv.children.clear();
       mainSquareDiv.appendHtml('<span class="main-mark">$littleBoardWinner</span>');
   
  +    // check for win
       if (mainBoardWinner != null) {
  -      clearAvailableLittleSquares();
         messageDiv.text = "Player $mainBoardWinner wins!";
  +      return;
  +    }
  +    else if (mainBoard._moveCount >= 9) {
  +      messageDiv.text = "It's a tie!";
         return;
       }
     }
  
positive.code:   }
  }
  
  void clearAvailableLittleSquares() {
    // remove click listeners from last turn
    availableLittleSquares.forEach((DivElement squareDiv, StreamSubscription listener) {
      squareDiv.classes.toggle("current-square");
      listener.cancel();
    });
  
    availableLittleSquares.clear();
  }
  
  void move(int mainSquare, int littleSquare) {
    clearAvailableLittleSquares();
  
    getLittleSquareDiv(mainSquare, littleSquare).text = currentPlayer;
  
    String littleBoardWinner = littleBoards[mainSquare].move(littleSquare, currentPlayer);
  
    if (littleBoardWinner != null) {
      String mainBoardWinner = mainBoard.move(mainSquare, littleBoardWinner);
  
  
negative.code:     availableMainSquares = mainBoard.unoccupiedSquares;
    }
  
    // find, save, and highlight all available little squares
    for (int mainSquare in availableMainSquares) {
      List<int> littleSquares = littleBoards[mainSquare].unoccupiedSquares;
  
  