static Pair findUsingWordTree(L tok, Map tree) { ret findUsingWordTree(tok, tree, 0); } // tok = CNC // returns (index range C to N, tree leaf) static Pair findUsingWordTree(L tok, Map tree, int i) { if (tree == null) null; O best = null; // best leaf int bestIndex = 0; // best index int n = l(tok); i |= 1; // Proceed to C token while (i <= n) { int j = i; while true { O def = tree.get(""); if (def != null) { best = def; bestIndex = j; } if (j >= n) break; O t = tree.get(tok.get(j)); j += 2; if (t == null) break; if (!t instanceof Map) ret pair(intRange(i, j-1), t); // leaf! tree = (Map) t; } if (best != null) ret pair(intRange(i, bestIndex), best); i += 2; } null; }