class HoleFinder {

    public void update(ColumnCombinationBitset maximalNegative) {
        ColumnCombinationBitset singleComplementMaxNegative = this.allBitsSet.minus(maximalNegative);

        if (this.complementarySet.size() == 0) {
            for (ColumnCombinationBitset combination : singleComplementMaxNegative.getContainedOneColumnCombinations()) {
                this.complementarySet.add(combination);
            }

            return;
        }


        ArrayList<ColumnCombinationBitset> complementarySetsArray = new ArrayList<>();
        this.addPossibleCombinationsToComplementArray(complementarySetsArray, singleComplementMaxNegative);
        this.removeSubsetsFromComplementarySetsArray(complementarySetsArray);

        this.complementarySet.clear();
        for (ColumnCombinationBitset c : complementarySetsArray) {
            if (c != null) {
                this.complementarySet.add(c);
            }
        }
    }

    public  HoleFinder(int numberOfColumns);

}