def METHOD_NAME(node, parent_state, parent_sdfg, n=None, **kwargs):
    (buffer, count_str), root = node.validate(parent_sdfg, parent_state)
    dtype = buffer.dtype.base_type
    mpi_dtype_str = "MPI_BYTE"
    if dtype == dtypes.float32:
        mpi_dtype_str = "MPI_FLOAT"
    elif dtype == dtypes.float64:
        mpi_dtype_str = "MPI_DOUBLE"
    elif dtype == dtypes.complex64:
        mpi_dtype_str = "MPI_COMPLEX"
    elif dtype == dtypes.complex128:
        mpi_dtype_str = "MPI_COMPLEX_DOUBLE"
    elif dtype == dtypes.int32:
        mpi_dtype_str = "MPI_INT"
    elif dtype == dtypes.int64:
        mpi_dtype_str = "MPI_LONG_LONG"
    else:
        raise NotImplementedError("The datatype " + str(dtype) + " is not supported!")
    if buffer.dtype.veclen > 1:
        raise NotImplementedError
    if root.dtype.base_type != dtypes.int32 and root.dtype.base_type != dtypes.int64:
        raise ValueError("Bcast root must be an integer!")
    ref = ""
    if isinstance(buffer, dace.data.Scalar):
        ref = "&"
    init = ""
    comm = "MPI_COMM_WORLD"
    if node.grid:
        comm = f"__state->{node.grid}_comm"
    elif node.fcomm:
        init = f"MPI_Comm __comm = MPI_Comm_f2c({node.fcomm});"
        comm = "__comm"
    code = f"""
        {init}
        MPI_Bcast({ref}_inbuffer, {count_str}, {mpi_dtype_str}, _root, {comm});
        _outbuffer = _inbuffer;"""
    tasklet = dace.sdfg.nodes.Tasklet(node.name,
                                      node.in_connectors,
                                      node.out_connectors,
                                      code,
                                      language=dtypes.Language.CPP)
    return tasklet