Node<T> (final Interner<String> table, final String text, final int nameStartIndex, final int nameEndIndex) { if (myChildren == null) { myChildren = new HashMap<>(3, 0.95f); } Node<T> newChild = new Node<>(); final String key = table.intern(text.substring(nameStartIndex, nameEndIndex)); myChildren.put(key, newChild); if (nameEndIndex == text.length()) { return newChild; } Node<T> restNodes = newChild.findRelative(text, nameEndIndex + 1, true, table); assert restNodes != null; return restNodes; }