def METHOD_NAME(self, job):
    preamble = [
        self._format_option(job.name, '-J {0}'),
        self._format_option(job.stdout, '-o {0}'),
        self._format_option(job.stderr, '-e {0}'),
    ]
    if job.num_tasks is not None and job.num_tasks_per_node is not None:
        num_nodes = job.num_tasks // job.num_tasks_per_node
        preamble.append(self._format_option(num_nodes, '-nnodes {0}'))
    else:
        preamble.append(self._format_option(job.num_tasks, '-n {0}'))
    if job.num_cpus_per_task is not None:
        preamble.append(self._format_option(job.num_cpus_per_task,
                                            '-R "affinity[core({0})]"'))
    # add job time limit in minutes
    if job.time_limit is not None:
        preamble.append(
            f'{self._prefix} -W {int(job.time_limit // 60)}'
        )
    for opt in job.sched_access:
        preamble.append(f'{self._prefix} {opt}')
    # emit the rest of the options
    options = job.options + job.cli_options
    for opt in options:
        if opt.startswith('#'):
            preamble.append(opt)
        else:
            preamble.append(self._prefix + ' ' + opt)
    if job.exclusive_access:
        preamble.append(f'{self._prefix} -x')
    # Filter out empty statements before returning
    return list(filter(None, preamble))