factory ISet.fromIterable(Order<A> order, Iterable<A> i) => i.fold(new ISet.empty(order), (acc, a) => acc.insert(a));