'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'

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 = '+'.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]}
        res = {}
        for (sub_key, sub_value) in sub_dict.items():
            full_key = ((key + '+') + sub_key).strip('+')
            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)) + '+') + sub_key).strip('+')
                res[full_key] = sub_value
        if node[16]:
            res[to_string(NIBBLE_TERMINATOR)] = node[(-1)]
        return res
