def METHOD_NAME(self, sdfg: dace.SDFG, scope: ScopeSubgraphView, state_id: int, function_stream: CodeIOStream,
                   callsite_stream: CodeIOStream):
    entry_node: nd.MapEntry = scope.source_nodes()[0]
    index_list = []
    for begin, end, stride in entry_node.map.range:
        l = []
        while begin <= end:
            l.append(begin)
            begin += stride
        index_list.append(l)
    sdfgconsts = sdfg.constants_prop
    sdfg.constants_prop = copy.deepcopy(sdfg.constants_prop)
    mapsymboltypes = entry_node.new_symbols(sdfg, scope, [entry_node.map.params])
    for indices in product(*index_list):
        callsite_stream.write('{')
        nsdfg_unroll_info = None
        for param, index in zip(entry_node.map.params, indices):
            if nsdfg_unroll_info is None:
                nsdfg_unroll_info = self.nsdfg_prepare_unroll(scope, str(param), str(index))
            else:
                self.nsdfg_prepare_unroll(scope, str(param), str(index))
            callsite_stream.write(
                f"constexpr {mapsymboltypes[param]} {param} = "
                f"{dace.codegen.common.sym2cpp(index)};\n", sdfg)
            sdfg.add_constant(param, int(index))
        callsite_stream.write('{')
        self._dispatcher.dispatch_subgraph(
            sdfg,
            scope,
            state_id,
            function_stream,
            callsite_stream,
            skip_entry_node=True,
            skip_exit_node=True,
        )
        callsite_stream.write('}')
        callsite_stream.write('}')
        self.nsdfg_after_unroll(nsdfg_unroll_info)
    sdfg.constants_prop = sdfgconsts