private boolean didLastPlayWin()
    {
        // If one player hasn't gone at least enough times
        // to win, don't bother checking for a winner
        if(gameBoard.size() < boardSize*2-1)
            return false;
        
        // Check all the different possible ways to win
        Square lastPlayedSquare = getLastPlayedSquare();
        Token lastPlayedToken = gameBoard.get(lastPlayedSquare);
        
        // Check across in the current row
        if(didWinAcross(lastPlayedToken, lastPlayedSquare))
            return true;
        
        // Check down in the current column
        if(didWinDown(lastPlayedToken, lastPlayedSquare))
            return true;
        
        // Check L->R diagonal
        if(didWinDiagonalLR(lastPlayedToken, lastPlayedSquare))
            return true;
        
        // Check R->L diagonal
        if(didWinDiagonalRL(lastPlayedToken, lastPlayedSquare))
            return true;
                
        // None of our tests resulted in a winning run of
        // the current token so no one has won yet.
        return false;
    }