code: def build_iter(self, epoch: int, shuffle: bool = None) -> Iterator:
      if shuffle is None:
          shuffle = self.shuffle
  
      build_funcs = list(self.build_funcs)
  
      if shuffle:
          np.random.RandomState(epoch + self.seed).shuffle(build_funcs)
  
      for i, build_func in enumerate(build_funcs):
          logging.info(f"Building {i}th iter-factory...")
          iter_factory = build_func()
          assert isinstance(iter_factory, AbsIterFactory), type(
              iter_factory
          )
          yield from iter_factory.build_iter(epoch, shuffle)
  
file_path: espnet/espnet2/iterators/multiple_iter_factory.py
imports: import logging
  from typing import Callable, Collection, Iterator
  import numpy
  from typeguard import check_argument_types
  from espnet2.iterators.abs_iter_factory import AbsIterFactory
label_desc: Use image node_id 2 for calling the MultipleIterFactory obj's underlying member method code with example usage: obj.build_iter(epoch, shuffle) without return types