code: def _sync_batch(self, args_list, kwargs_list):
      if len(args_list) == 0:
          return []
      elif self.batch_func:
          return self.batch_func(args_list, kwargs_list)
      else:
          # this function has no batch implementation
          # call it separately
          return [
              self.func(*args, **kwargs)
              for args, kwargs in zip(args_list, kwargs_list)
          ]
  
imports: import asyncio
  import inspect
  import textwrap
  from collections import namedtuple
  from dataclasses import dataclass
  from typing import Callable, Dict, Optional, Tuple
label_desc: Use image node_id 4 for calling the _ExtensibleWrapper obj's underlying member method code with example usage: obj._sync_batch(args_list, kwargs_list) and returns: list, self, unknown