### Question:
ColumnCombinationBitset implements Comparable<ColumnCombinationBitset> { public List<ColumnCombinationBitset> getAllSubsets() { List<ColumnCombinationBitset> subsets = new LinkedList<>(); Queue<ColumnCombinationBitset> currentLevel = new LinkedList<>(); currentLevel.add(this); subsets.add(this); Set<ColumnCombinationBitset> nextLevel = new HashSet<>(); for (int level = size(); level > 0; level--) { while (!currentLevel.isEmpty()) { ColumnCombinationBitset currentColumnCombination = currentLevel.remove(); nextLevel.addAll(currentColumnCombination.getDirectSubsets()); } currentLevel.addAll(nextLevel); subsets.addAll(nextLevel); nextLevel.clear(); } return subsets; } ColumnCombinationBitset(int... columnIndeces);  ColumnCombinationBitset(List<Integer> columnIndices);  ColumnCombinationBitset(ColumnCombinationBitset columnCombination); ColumnCombinationBitset addColumn(int columnIndex); ColumnCombinationBitset removeColumn(int columnIndex); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); boolean isSubsetOf(ColumnCombinationBitset potentialSuperset); boolean isProperSubsetOf(ColumnCombinationBitset potentialProperSuperSet); boolean containsSubset(ColumnCombinationBitset potentialSubset); boolean containsProperSubset(ColumnCombinationBitset potentialProperSubset); List<ColumnCombinationBitset> getAllSubsets(); List<ColumnCombinationBitset> getNSubsetColumnCombinations(int n); List<ColumnCombinationBitset> getNSubsetColumnCombinationsSupersetOf(
    ColumnCombinationBitset subSet, int n); List<Integer> getSetBits(); List<Integer> getClearedBits(int numberOfColumns); ColumnCombinationBitset minus(
    ColumnCombinationBitset otherColumnCombination); List<ColumnCombinationBitset> getContainedOneColumnCombinations(); ColumnCombinationBitset union(ColumnCombinationBitset other); ColumnCombinationBitset intersect(ColumnCombinationBitset other); List<ColumnCombinationBitset> getDirectSupersets(int numberOfColumns); List<ColumnCombinationBitset> getDirectSupersets(ColumnCombinationBitset maximalSuperset); List<ColumnCombinationBitset> getDirectSubsets(); List<ColumnCombinationBitset> getDirectSubsetsSupersetOf(ColumnCombinationBitset subSet); int size(); boolean isEmpty(); ColumnCombination createColumnCombination(String relationName,
                                                   List<String> columnNames); ColumnCombinationBitset setAllBits(int dimension); boolean containsColumn(int columnIndex); boolean containsColumn(int... columnIndices); ColumnCombinationBitset invert(int size); @Override int compareTo(ColumnCombinationBitset other);  }### Answer:
@Test public void testGetAllSubsets() { ColumnCombinationBitsetFixture fixture = new ColumnCombinationBitsetFixture(); ColumnCombinationBitset columnCombination = fixture.getColumnCombination1(); List<ColumnCombinationBitset> actualSubsets = columnCombination.getAllSubsets(); assertThat(actualSubsets, IsIterableContainingInAnyOrder .containsInAnyOrder(fixture.getExpectedSubsetArray1())); }