class CombinationSet {

  public List<Combination> getAllCombinations() {
    List<Combination> combinations = new ArrayList<Combination>();
    for (long i = 1; i <= totalNb; i++) {
      Set<Object> subSet = new HashSet<Object>();
      BigInteger bigInt = BigInteger.valueOf(i);
      for (int j = 0; j < bigInt.bitLength(); j++) {
        if (bigInt.testBit(j))
          subSet.add(internalList.get(j));
      }
      Combination comb = new Combination(subSet, this);
      combinations.add(comb);
    }
    return combinations;
  }

  public  CombinationSet(Set<? extends Object> set);

}