test_class.declarator: trie = new Trie<String>()
test_class.modifier: private final
test_class.original_string: private final Trie<String> trie = new Trie<String>();
test_class.type: Trie<String>
test_class.var_name: trie
test_class.file: rut/src/test/java/io/norberg/rut/TrieTest.java
test_class.identifier: TrieTest
test_case.body: @Test
    public void testToString() {
      assertThat(trie.toString(), not(Matchers.isEmptyOrNullString()));
  
      trie.insert(Path.of("/"), "/");
      assertThat(trie.toString(), not(Matchers.isEmptyOrNullString()));
  
      trie.insert(Path.of("/<foo>"), "/<foo>");
      assertThat(trie.toString(), not(Matchers.isEmptyOrNullString()));
  
      trie.insert(Path.of("/<foo>/<bar:path>"), "/<foo>/<bar:path>");
      assertThat(trie.toString(), not(Matchers.isEmptyOrNullString()));
    }
test_case.class_method_signature: TrieTest.testToString()
test_case.full_signature: @Test public void testToString()
test_case.identifier: testToString
test_case.invocations: assertThat toString not isEmptyOrNullString insert of assertThat toString not isEmptyOrNullString insert of assertThat toString not isEmptyOrNullString insert of assertThat toString not isEmptyOrNullString
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testToString()
focal_class.declarator: CAPTURE_SEG = 0x1000
focal_class.modifier: private static final
focal_class.original_string: private static final char CAPTURE_SEG = 0x1000;
focal_class.type: char
focal_class.var_name: CAPTURE_SEG
focal_class.declarator: CAPTURE_PATH = 0x2000
focal_class.modifier: private static final
focal_class.original_string: private static final char CAPTURE_PATH = 0x2000;
focal_class.type: char
focal_class.var_name: CAPTURE_PATH
focal_class.declarator: roots = new TreeMap<Character, Node<T>>()
focal_class.modifier: private final
focal_class.original_string: private final Map<Character, Node<T>> roots = new TreeMap<Character, Node<T>>();
focal_class.type: Map<Character, Node<T>>
focal_class.var_name: roots
focal_class.file: rut/src/main/java/io/norberg/rut/Trie.java
focal_class.identifier: Trie
focal_class.class_method_signature: Trie.insert(final Path path, final T value)
focal_class.full_signature:  T insert(final Path path, final T value)
focal_class.identifier: insert
focal_class.parameters: (final Path path, final T value)
focal_class.return: T
focal_class.signature: T insert(final Path path, final T value)
focal_class.class_method_signature: Trie.insert(final Path path, final Visitor<T> visitor)
focal_class.full_signature:  T insert(final Path path, final Visitor<T> visitor)
focal_class.identifier: insert
focal_class.parameters: (final Path path, final Visitor<T> visitor)
focal_class.return: T
focal_class.signature: T insert(final Path path, final Visitor<T> visitor)
focal_class.class_method_signature: Trie.insert(final Path path, final Node<T> node,
                                final Map<Character, Node<T>> edges,
                                final int partIndex, final Visitor<T> visitor)
focal_class.full_signature: private static T insert(final Path path, final Node<T> node,
                                final Map<Character, Node<T>> edges,
                                final int partIndex, final Visitor<T> visitor)
focal_class.identifier: insert
focal_class.modifiers: private static
focal_class.parameters: (final Path path, final Node<T> node,
                                final Map<Character, Node<T>> edges,
                                final int partIndex, final Visitor<T> visitor)
focal_class.return: T
focal_class.signature: T insert(final Path path, final Node<T> node,
                                final Map<Character, Node<T>> edges,
                                final int partIndex, final Visitor<T> visitor)
focal_class.class_method_signature: Trie.insertCapturePath(final Map<Character, Node<T>> edges,
                                           final Visitor<T> visitor)
focal_class.full_signature: private static T insertCapturePath(final Map<Character, Node<T>> edges,
                                           final Visitor<T> visitor)
focal_class.identifier: insertCapturePath
focal_class.modifiers: private static
focal_class.parameters: (final Map<Character, Node<T>> edges,
                                           final Visitor<T> visitor)
focal_class.return: T
focal_class.signature: T insertCapturePath(final Map<Character, Node<T>> edges,
                                           final Visitor<T> visitor)
focal_class.class_method_signature: Trie.insertCaptureSegment(final Path path, final Map<Character, Node<T>> edges,
                                              final int partIndex, final Visitor<T> visitor)
focal_class.full_signature: private static T insertCaptureSegment(final Path path, final Map<Character, Node<T>> edges,
                                              final int partIndex, final Visitor<T> visitor)
focal_class.identifier: insertCaptureSegment
focal_class.modifiers: private static
focal_class.parameters: (final Path path, final Map<Character, Node<T>> edges,
                                              final int partIndex, final Visitor<T> visitor)
focal_class.return: T
focal_class.signature: T insertCaptureSegment(final Path path, final Map<Character, Node<T>> edges,
                                              final int partIndex, final Visitor<T> visitor)
focal_class.class_method_signature: Trie.insertMatch(final Path path, final Node<T> node,
                                     final Map<Character, Node<T>> edges,
                                     final int pi, final Visitor<T> visitor,
                                     final Path.Match part, final int ci)
focal_class.full_signature: private static T insertMatch(final Path path, final Node<T> node,
                                     final Map<Character, Node<T>> edges,
                                     final int pi, final Visitor<T> visitor,
                                     final Path.Match part, final int ci)
focal_class.identifier: insertMatch
focal_class.modifiers: private static
focal_class.parameters: (final Path path, final Node<T> node,
                                     final Map<Character, Node<T>> edges,
                                     final int pi, final Visitor<T> visitor,
                                     final Path.Match part, final int ci)
focal_class.return: T
focal_class.signature: T insertMatch(final Path path, final Node<T> node,
                                     final Map<Character, Node<T>> edges,
                                     final int pi, final Visitor<T> visitor,
                                     final Path.Match part, final int ci)
focal_class.class_method_signature: Trie.compress()
focal_class.full_signature:  RadixTrie<T> compress()
focal_class.identifier: compress
focal_class.parameters: ()
focal_class.return: RadixTrie<T>
focal_class.signature: RadixTrie<T> compress()
focal_class.class_method_signature: Trie.compressEdges(final Map<Character, Node<T>> nodes)
focal_class.full_signature: private static RadixTrie.Node<T> compressEdges(final Map<Character, Node<T>> nodes)
focal_class.identifier: compressEdges
focal_class.modifiers: private static
focal_class.parameters: (final Map<Character, Node<T>> nodes)
focal_class.return: RadixTrie.Node<T>
focal_class.signature: RadixTrie.Node<T> compressEdges(final Map<Character, Node<T>> nodes)
focal_class.class_method_signature: Trie.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: Trie.reversed(final Collection<T> values)
focal_class.full_signature: private static Collection<T> reversed(final Collection<T> values)
focal_class.identifier: reversed
focal_class.modifiers: private static
focal_class.parameters: (final Collection<T> values)
focal_class.return: Collection<T>
focal_class.signature: Collection<T> reversed(final Collection<T> values)
focal_method.body: @Override
    public String toString() {
      return "Trie{" +
             "roots=" + roots +
             '}';
    }
focal_method.class_method_signature: Trie.toString()
focal_method.full_signature: @Override public String toString()
focal_method.identifier: toString
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: String
focal_method.signature: String toString()