code: def _to_dict(self, node):
          
          if node == BLANK_NODE:
              return {}
  
          node_type = self._get_node_type(node)
  
          if is_key_value_type(node_type):
              nibbles = without_terminator(unpack_to_nibbles(node[0]))
              key = b'+'.join([to_string(x) for x in nibbles])
              if node_type == NODE_TYPE_EXTENSION:
                  sub_dict = self._to_dict(self._decode_to_node(node[1]))
              else:
                  sub_dict = {to_string(NIBBLE_TERMINATOR): node[1]}
  
              # prepend key of this node to the keys of children
              res = {}
              for sub_key, sub_value in sub_dict.items():
                  full_key = (key + b'+' + sub_key).strip(b'+')
                  res[full_key] = sub_value
              return res
  
          elif node_type == NODE_TYPE_BRANCH:
              res = {}
              for i in range(16):
                  sub_dict = self._to_dict(self._decode_to_node(node[i]))
  
                  for sub_key, sub_value in sub_dict.items():
                      full_key = (
                          str_to_bytes(
                              str(i)) +
                          b'+' +
                          sub_key).strip(b'+')
                      res[full_key] = sub_value
  
              if node[16]:
                  res[to_string(NIBBLE_TERMINATOR)] = node[-1]
              return res
docs: convert (key, value) stored in this and the descendant nodes
          to dict items.
  
          :param node: node in form of list, or BLANK_NODE
  
          .. note::
  
              Here key is in full form, rather than key of the individual node