def METHOD_NAME(self, graph, expr_index, sdfg, permissive=False):
    # Check the edges between the entries of the two maps.
    outer_map_entry: nodes.MapEntry = self.outer_map_entry
    inner_map_entry: nodes.MapEntry = self.inner_map_entry
    # Check that inner map range is independent of outer range
    map_deps = set()
    for s in inner_map_entry.map.range:
        map_deps |= set(map(str, symlist(s)))
    if any(dep in outer_map_entry.map.params for dep in map_deps):
        return False
    # Check that the destination of all the outgoing edges
    # from the outer map's entry is the inner map's entry.
    for _src, _, dest, _, _ in graph.out_edges(outer_map_entry):
        if dest != inner_map_entry:
            return False
    # Check that the source of all the incoming edges
    # to the inner map's entry is the outer map's entry.
    for src, _, _, dst_conn, memlet in graph.in_edges(inner_map_entry):
        if src != outer_map_entry:
            return False
        # Check that dynamic input range memlets are independent of
        # first map range
        if dst_conn is not None and not dst_conn.startswith('IN_'):
            memlet_deps = set()
            for s in memlet.subset:
                memlet_deps |= set(map(str, symlist(s)))
            if any(dep in outer_map_entry.map.params for dep in memlet_deps):
                return False
    # Check the edges between the exits of the two maps.
    inner_map_exit = graph.exit_node(inner_map_entry)
    outer_map_exit = graph.exit_node(outer_map_entry)
    # Check that the destination of all the outgoing edges
    # from the inner map's exit is the outer map's exit.
    for _src, _, dest, _, _ in graph.out_edges(inner_map_exit):
        if dest != outer_map_exit:
            return False
    # Check that the source of all the incoming edges
    # to the outer map's exit is the inner map's exit.
    for src, _, _dest, _, _ in graph.in_edges(outer_map_exit):
        if src != inner_map_exit:
            return False
    if not permissive:
        if inner_map_entry.map.schedule != outer_map_entry.map.schedule:
            return False
    return True