}
public List<Set<K>> supersetQuery(Set<K> query, int maxMatches) {
// Run subset query on all children of the root.
IntBitSet supersetQuery = new IntBitSet(getIndices(query));
List<Collection<Integer>> matches = new LinkedList<Collection<Integer>>();
matchSuperset(supersetQuery, getRoot(), matches, new Stack<Integer>(), maxMatches);
List<Set<K>> matchesReversed = new ArrayList<Set<K>>(matches.size());