// tok = CNC // returns (index, tree leaf) static Pair matchStartUsingWordTree(L tok, Map tree) { O best = null; // best leaf int bestIndex = 0; // best index int j = 1; while (j < l(tok)) { O def = tree.get(""); if (def != null) { best = def; bestIndex = j; } O t = tree.get(tok.get(j)); j += 2; if (t == null) break; if (!t instanceof Map) ret pair(j, t); // leaf! tree = (Map) t; } ret pair(bestIndex, best); }