private void illegalDrunkerSearch(Cell inpStartPosition, Set<Cell> visitedCells) {
        visitedCells.add(inpStartPosition);
        if (inpStartPosition.getObject() instanceof Drunker && ((Drunker) inpStartPosition.getObject()).isIllegal() && inpStartPosition.isIlluminated()) {
            this.illegalDrunkers.add((Drunker) inpStartPosition.getObject());
        } else {
            for (Cell neighbor : inpStartPosition.getNeighbours()) {
                if (!visitedCells.contains(neighbor) && (neighbor.isEmpty() || neighbor.getObject() instanceof Drunker)) {
                    this.illegalDrunkerSearch(neighbor, visitedCells);
                }
            }
        }
    }