class LhsUtils {

    public static List<BitSet> generateLhsSubsets(BitSet lhs) {
        List<BitSet> results = new LinkedList<>();
        for (int i = lhs.nextSetBit(0); i >= 0; i = lhs.nextSetBit(i + 1)) {
            BitSet subset = (BitSet) lhs.clone();
            subset.flip(i);
            if (subset.cardinality() > 0) {
                results.add(subset);
            }
        }
        return results;
    }

}