docs: public static <E> Set<Set<E>> powerSet(Set<E> s) {
      if (s.isEmpty()) {
        Set<Set<E>> h = new HashSet<Set<E>>();
        Set<E> h0 = new HashSet<E>(0);
        h.add(h0);
        return h;
      } else {
        Iterator<E> i = s.iterator();
        E elt = i.next();
        s.remove(elt);
        Set<Set<E>> pow = powerSet(s);
        Set<Set<E>> pow1 = powerSet(s);
        // for (Iterator j = pow1.iterator(); j.hasNext();) {
        for (Set<E> t : pow1) {
          // Set<E> t = new HashSet<E>((Set<E>) j.next());
          t.add(elt);
          pow.add(t);
        }
        s.add(elt);
        return pow;
      }
    }