code: public static <T> PowerSet<T> getPowerSet(Set<T> hashSet) {
  		Validate.notNull(hashSet);
  		if (hashSet.isEmpty())
  			throw new IllegalArgumentException("set size 0");
  		HashList<T> hashList = new HashList<>(hashSet);
  		PowerSet<T> result = new PowerSet<>(hashList.size());
  		for (int i = 0; i < Math.pow(2, hashList.size()); i++) {
  			int setSize = Integer.bitCount(i);
  			HashSet<T> newList = new HashSet<>(setSize);
  			result.get(setSize).add(newList);
  			for (int j = 0; j < hashList.size(); j++) {
  				if ((i & (1 << j)) != 0) {
  					newList.add(hashList.get(j));
  				}
  			}
  		}
  		return result;
  	}
docs: Generates a new Powerset out of the given set.
  
  @param <T>
  Type of set elements
  @param hashSet
  Underlying set of elements
  @return Powerset of <code>set</code>