def METHOD_NAME(self, source: CFGBlock, targets: List[CFGBlock]) -> None:
    """Link source to multiple target, or merge source into targets if source is empty.
    An "empty" node for this purpose is when source has no statements.
    source with a jump statement cannot be further linked or merged to
    another target.
    Precondition:
        - source != cfg.start
    """
    if source.statements == []:
        for edge in source.predecessors:
            for t in targets:
                CFGEdge(edge.source, t)
            edge.source.successors.remove(edge)
        source.predecessors = []
        self.unreachable_blocks.remove(source)
    else:
        for target in targets:
            self.link(source, target)