code: def handle_request_trial_jobs(self, data):
      # data: number or trial jobs
      ids = [_create_parameter_id() for _ in range(data)]
      _logger.debug("requesting for generating params of %s", ids)
      params_list = self.tuner.generate_multiple_parameters(
          ids, st_callback=self.send_trial_callback
      )
  
      for i, _ in enumerate(params_list):
          self.send(
              CommandType.NewTrialJob,
              _pack_parameter(ids[i], params_list[i]),
          )
      # when parameters is None.
      if len(params_list) < len(ids):
          self.send(
              CommandType.NoMoreTrialJobs, _pack_parameter(ids[0], "")
          )
  
imports: import logging
  from collections import defaultdict
  from nni import NoMoreTrialError
  from nni.assessor import AssessResult
  from .common import multi_phase_enabled
  from .env_vars import dispatcher_env_vars
  from .msg_dispatcher_base import MsgDispatcherBase
  from .tuner_command_channel import CommandType
  from ..common.serializer import dump, load
  from ..utils import MetricType
label_desc: Use image node_id 6 for calling the MsgDispatcher obj's underlying member method code with example usage: obj.handle_request_trial_jobs(data) without return types