public void next() {
    boolean[][] newField = new boolean[field.length][field[0].length];

    for (int y = 0; y < field.length; y++) {
      for (int x = 0; x < field[0].length; x++) {
        int neighborCnt = neighborCount(x, y);
        if (field[y][x] && neighborCnt >= 2 && neighborCnt <= 3) {
          newField[y][x] = true;
        } else if (!field[y][x] && neighborCnt == 3) {
          newField[y][x] = true;
        }
      }
    }

    field = newField;
  }