'Get counts of (key, value) stored in this and the descendant nodes
:param node: node in form of list, or BLANK_NODE'

def _get_size(self, node):

    if (node == BLANK_NODE):
        return 0
    node_type = self._get_node_type(node)
    if is_key_value_type(node_type):
        value_is_node = (node_type == NODE_TYPE_EXTENSION)
        if value_is_node:
            return self._get_size(self._decode_to_node(node[1]))
        else:
            return 1
    elif (node_type == NODE_TYPE_BRANCH):
        sizes = [self._get_size(self._decode_to_node(node[x])) for x in range(16)]
        sizes = (sizes + [(1 if node[(-1)] else 0)])
        return sum(sizes)
