func getNextNode(node, root *trie.TernaryNode, r rune) *trie.TernaryNode { for { next, _ := node.Get(r).(*trie.TernaryNode) if next != nil { return next } else if node == root { return root } node = getNodeFailure(node, root) } }