public Optional<BoardTileModel> fillNextTileModel(GridModel.GridPosition gridPosition) { BoardTileModel boardTileModel, nextTileModel; Optional<BoardTileModel> boardTileModelOptional = Optional.absent(); try { boardTileModel = gridModel.get(gridPosition); boardTileModel.setFilling(false); boardTileModel.setFull(); GridModel.GridPosition nextGridPosition = boardTileModel.getNextGridPosition(); nextTileModel = gridModel.get(nextGridPosition); nextTileModel.setFillable(gridPosition.subtract(nextGridPosition)); boardTileModelOptional = Optional.of(nextTileModel); } catch (GridPositionOutOfBoundsException | NullPointerException e) { e.printStackTrace(); } return boardTileModelOptional; }