code: def _get_node_by_key(self, key, path=None):
          
          prefix, subkey, node = Bits(), key, self
          while prefix != key:
              for idx,link in enumerate(node.children):
                  if subkey.startswith(link.prefix):
                      if link.pruned:
                          return (prefix, node)
                      subkey = subkey[len(link.prefix):]
                      prefix += link.prefix
                      if path is not None:
                          path.append((node, idx, link.prefix))
                      node = link.node
                      break
              else:
                  break
          return (prefix, node)
docs: Returns the 2-tuple (prefix, node) where node either contains the value
          corresponding to the key, or is the most specific prefix on the path which
          would contain the key if it were there. The key was found if prefix==key
          and the node.value is not None.