code: def _iter_branch(self, node):
          
          if node == BLANK_NODE:
              raise StopIteration
  
          node_type = self._get_node_type(node)
  
          if is_key_value_type(node_type):
              nibbles = key_nibbles_from_key_value_node(node)
              key = b'+'.join([to_string(x) for x in nibbles])
              if node_type == NODE_TYPE_EXTENSION:
                  sub_tree = self._iter_branch(self._get_inner_node_from_extension(node))
              else:
                  sub_tree = [(to_string(NIBBLE_TERMINATOR), node[1])]
  
              # prepend key of this node to the keys of children
              for sub_key, sub_value in sub_tree:
                  full_key = (key + b'+' + sub_key).strip(b'+')
                  yield (full_key, sub_value)
  
          elif node_type == NODE_TYPE_BRANCH:
              for i in range(16):
                  sub_tree = self._iter_branch(self._decode_to_node(node[i]))
                  for sub_key, sub_value in sub_tree:
                      full_key = (str_to_bytes(str(i)) +
                                  b'+' + sub_key).strip(b'+')
                      yield (full_key, sub_value)
              if node[16]:
                  yield (to_string(NIBBLE_TERMINATOR), node[-1])
docs: yield (key, value) stored in this and the descendant nodes
          :param node: node in form of list, or BLANK_NODE
  
          .. note::
              Here key is in full form, rather than key of the individual node