def METHOD_NAME():
    sdfg = dace.SDFG('mapfission_offsets2')
    sdfg.add_array('A', [20], dace.float64)
    sdfg.add_array('interim', [1], dace.float64, transient=True)
    state = sdfg.add_state()
    me, mx = state.add_map('outer', dict(i='10:20'))
    t1 = state.add_tasklet('addone', {'a'}, {'b'}, 'b = a + 1')
    interim = state.add_access('interim')
    t2 = state.add_tasklet('addtwo', {'a'}, {'b'}, 'b = a + 2')
    aread = state.add_read('A')
    awrite = state.add_write('A')
    state.add_memlet_path(aread, me, t1, dst_conn='a', memlet=dace.Memlet.simple('A', 'i'))
    state.add_edge(t1, 'b', interim, None, dace.Memlet.simple('interim', '0'))
    state.add_edge(interim, None, t2, 'a', dace.Memlet.simple('interim', '0'))
    state.add_memlet_path(t2, mx, awrite, src_conn='b', memlet=dace.Memlet.simple('A', 'i'))
    sdfg.apply_transformations(MapFission)
    dace.propagate_memlets_sdfg(sdfg)
    sdfg.validate()
    # Test
    A = np.random.rand(20)
    expected = A.copy()
    expected[10:] += 3
    A_cpy = A.copy()
    csdfg = sdfg.compile()
    csdfg(A=A_cpy)
    del csdfg
    print(np.linalg.norm(A_cpy))
    print(np.linalg.norm(expected))
    assert (np.allclose(A_cpy, expected))
    subgraph = SubgraphView(sdfg.nodes()[0], sdfg.nodes()[0].nodes())
    sf = SubgraphFusion()
    sf.setup_match(subgraph)
    assert sf.can_be_applied(sdfg, subgraph)
    fusion(sdfg, sdfg.nodes()[0], None)
    A_cpy = A.copy()
    csdfg = sdfg.compile()
    csdfg(A=A_cpy)
    assert (np.allclose(A_cpy, expected))