### Question:
SubSetGraph { public SubSetGraph add(ColumnCombinationBitset columnCombination) { SubSetGraph subGraph = this; for (int setColumnIndex : columnCombination.getSetBits()) { subGraph = subGraph.lazySubGraphGeneration(setColumnIndex); } subGraph.subSetEnds = true; return this; }  SubSetGraph add(ColumnCombinationBitset columnCombination); SubSetGraph addAll(Collection<ColumnCombinationBitset> columnCombinations); ArrayList<ColumnCombinationBitset> getExistingSubsets(
    ColumnCombinationBitset columnCombinationToQuery); boolean containsSubset(ColumnCombinationBitset superset); Set<ColumnCombinationBitset> getMinimalSubsets(); boolean isEmpty(); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void testAdd() { SubSetGraph graph = new SubSetGraph(); ColumnCombinationBitset columnCombination = new ColumnCombinationBitset(2, 4, 7); SubSetGraph graphAfterAdd = graph.add(columnCombination); SubSetGraph actualSubGraph = graph; for (int setColumnIndex : columnCombination.getSetBits()) { assertTrue(actualSubGraph.subGraphs.containsKey(setColumnIndex)); actualSubGraph = actualSubGraph.subGraphs.get(setColumnIndex); } assertSame(graph, graphAfterAdd); }
@Test public void testEqualsAndHashCode() { SubSetGraph actualGraph = new SubSetGraph(); SubSetGraph equalsGraph = new SubSetGraph(); SubSetGraph notEqualsGraph = new SubSetGraph(); actualGraph.add(new ColumnCombinationBitset(2, 5, 10, 20)); actualGraph.add((new ColumnCombinationBitset(2, 5, 8, 15))); equalsGraph.add((new ColumnCombinationBitset(2, 5, 8, 15))); equalsGraph.add(new ColumnCombinationBitset(2, 5, 10, 20)); notEqualsGraph.add(new ColumnCombinationBitset(2, 5, 12, 20)); notEqualsGraph.add((new ColumnCombinationBitset(2, 5, 10, 15))); EqualsAndHashCodeTester<SubSetGraph> tester = new EqualsAndHashCodeTester<>(); tester.performBasicEqualsAndHashCodeChecks(actualGraph, equalsGraph, notEqualsGraph); }