### Question:
ColumnCombinationBitset implements Comparable<ColumnCombinationBitset> { @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((bitset == null) ? 0 : bitset.hashCode()); result = prime * result + (int) (size ^ (size >>> 32)); return result; } 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 testEqualsHashCode() { ColumnCombinationBitset columnCombination1 = new ColumnCombinationBitset(0, 3); ColumnCombinationBitset columnCombination2Equals = new ColumnCombinationBitset(0, 3); ColumnCombinationBitset columnCombination3Unequals = new ColumnCombinationBitset(0, 2, 3); ColumnCombinationBitset columnCombination1WrongSize = new ColumnCombinationBitset(0, 3); columnCombination1WrongSize.size = 0; assertEquals(columnCombination1, columnCombination1); assertEquals(columnCombination1.hashCode(), columnCombination1.hashCode()); assertNotSame(columnCombination1, columnCombination2Equals); assertEquals(columnCombination1, columnCombination2Equals); assertEquals(columnCombination1.hashCode(), columnCombination2Equals.hashCode()); assertNotEquals(columnCombination1, columnCombination3Unequals); assertNotEquals(columnCombination1.hashCode(), columnCombination3Unequals.hashCode()); assertNotEquals(columnCombination1, columnCombination1WrongSize); assertNotEquals(columnCombination1.hashCode(), columnCombination1WrongSize.hashCode()); }