def METHOD_NAME(self, is_local, *nodes):
    if not isinstance(is_local, bool):
        raise AngrValueError('_register_nodes(): the "is_local" parameter must be a bool')
    for node in nodes:
        self.transition_graph.add_node(node)
        node._graph = self.transition_graph
        if node.addr not in self or self._block_sizes[node.addr] == 0:
            self._block_sizes[node.addr] = node.size
        if node.addr == self.addr.addr:
            if self.startpoint is None or not self.startpoint.is_hook:
                self.startpoint = node
        if is_local:
            self._local_blocks[node.addr] = node
            self._local_block_addrs.add(node.addr)
        # add BlockNodes to the addr_to_block_node cache if not already there
        if isinstance(node, BlockNode):
            if node.addr not in self._addr_to_block_node:
                self._addr_to_block_node[node.addr] = node