package org.zwobble.couscous.util; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; import java.util.stream.StreamSupport; public interface InsertionOrderSet extends Iterable { static InsertionOrderSet copyOf(Iterable iterable) { List list = StreamSupport.stream(iterable.spliterator(), false) .distinct() .collect(Collectors.toList()); return new InsertionOrderSet() { @Override public List asList() { return list; } @Override public Iterator iterator() { return list.iterator(); } @Override public boolean isEmpty() { return list.isEmpty(); } }; } List asList(); boolean isEmpty(); }