transient sclass DoubleWordIndex { new WordIndex index1; // forwards (normal words) new WordIndex index2; // backwards (reversed words) *() {} *(Comparator valueComparator) { index1 = new WordIndex(valueComparator); index2 = new WordIndex(valueComparator); } *(Map map) { fOr (A a, S text : map) add(a, text); } void add(A a, S text) { index1.add(a, text); index2.add(a, text); } Set get(S word) { ret index1.get(word); } L wordRanges(S text) { ret index1.wordRanges(text); } }