'get value inside a node
:param node: node in form of list, or BLANK_NODE
:param key: nibble list without terminator
:return:
BLANK_NODE if does not exist, otherwise value or hash'

def _get(self, node, key):

    node_type = self._get_node_type(node)
    if (node_type == NODE_TYPE_BLANK):
        return BLANK_NODE
    if (node_type == NODE_TYPE_BRANCH):
        if (not key):
            return node[(-1)]
        sub_node = self._decode_to_node(node[key[0]])
        return self._get(sub_node, key[1:])
    curr_key = without_terminator(unpack_to_nibbles(node[0]))
    if (node_type == NODE_TYPE_LEAF):
        return (node[1] if (key == curr_key) else BLANK_NODE)
    if (node_type == NODE_TYPE_EXTENSION):
        if starts_with(key, curr_key):
            sub_node = self._decode_to_node(node[1])
            return self._get(sub_node, key[len(curr_key):])
        else:
            return BLANK_NODE
