code: def test_multi_agent(self):
      eps_ids = [1, 1, 1, 5, 5, 5, 5, 5]
      agent_ids = [1, 1, 2, 1, 1, 2, 2, 3]
      f = [
          [101, 102, 103, 201, 202, 203, 204, 205],
          [[101], [102], [103], [201], [202], [203], [204], [205]],
      ]
      s = [[209, 208, 207, 109, 108, 107, 106, 105]]
      f_pad, s_init, seq_lens = chop_into_sequences(
          episode_ids=eps_ids,
          unroll_ids=np.ones_like(eps_ids),
          agent_indices=agent_ids,
          feature_columns=f,
          state_columns=s,
          max_seq_len=4,
          dynamic_max=False,
      )
      self.assertEqual(seq_lens.tolist(), [2, 1, 2, 2, 1])
      self.assertEqual(len(f_pad[0]), 20)
      self.assertEqual(len(s_init[0]), 5)
  
imports: import numpy
  import pickle
  import unittest
  import ray
  from ray.rllib.algorithms.ppo import PPOConfig
  from ray.rllib.examples.env.debug_counter_env import DebugCounterEnv
  from ray.rllib.examples.models.rnn_spy_model import RNNSpyModel
  from ray.rllib.models import ModelCatalog
  from ray.rllib.policy.rnn_sequencing import chop_into_sequences
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.test_utils import check
  from ray.tune.registry import register_env
label_desc: Use image node_id 5 for calling the TestLSTMUtils obj's underlying member method code with example usage: obj.test_multi_agent() without return types