factory ISet.fromFoldable(Order<A> order, Foldable foldable, fa) => foldable.foldLeft(fa, new ISet.empty(order), (p, a) => p.insert(cast(a)));