private List<Cell> getNeighborCells(int row, int col){
    List<Cell> neighborList = new ArrayList<Cell>(8);
    
    if( isValidCell(row-1, col-1) ) // top-left
      neighborList.add(gameCell[row-1][col-1]);
    if( isValidCell(row-1, col  ) ) // top
      neighborList.add(gameCell[row-1][col  ]);
    if( isValidCell(row-1, col+1) ) // top-right
      neighborList.add(gameCell[row-1][col+1]);
    if( isValidCell(row  , col-1) ) // left
      neighborList.add(gameCell[row  ][col-1]);
    if( isValidCell(row  , col+1) ) // right
      neighborList.add(gameCell[row  ][col+1]);
    if( isValidCell(row+1, col-1) ) // bot-left
      neighborList.add(gameCell[row+1][col-1]);
    if( isValidCell(row+1, col  ) ) // bot
      neighborList.add(gameCell[row+1][col  ]);
    if( isValidCell(row+1, col+1) ) // bot-right
      neighborList.add(gameCell[row+1][col+1]);
    
    return neighborList;
  }