code: def concurrent_class_factory(concurrent_class_name, thread_unsafe_class):
      '''
      Dynamically creates a thread-safe class which exposes the same API as
      the provided thread-unsafe class, but for which all public methods now:
      - accept an iterable of inputs,
      - parallelize processing of this iterable on a pool of workers.
  
      The resulting class's __init__ method optionally accepts: %s
      '''
      concurrent_class = _create_blank_concurrent_class(concurrent_class_name, thread_unsafe_class)
      for method_name, method in getmembers(thread_unsafe_class, lambda x: ismethod(x) or isfunction(x)):
          if not method_name.startswith('_'):
              setattr(concurrent_class, method_name, _mapper_for(method, method_name))
      return concurrent_clasf concurrent_class_factory(concurrent_class_name, thread_unsafe_class):
      '''
      Dynamically creates a thread-safe class which exposes the same API as
      the provided thread-unsafe class, but for which all public methods now:
      - accept an iterable of inputs,
      - parallelize processing of this iterable on a pool of workers.
  
      The resulting class's __init__ method optionally accepts: %s
      '''
      concurrent_class = _create_blank_concurrent_class(concurrent_class_name, thread_unsafe_class)
      for method_name, method in getmembers(thread_unsafe_class, lambda x: ismethod(x) or isfunction(x)):
          if not method_name.startswith('_'):
              setattr(concurrent_class, method_name, _mapper_for(method, method_name))
      return concurrent_class
docs: Dynamically creates a thread-safe class which exposes the same API as
      the provided thread-unsafe class, but for which all public methods now:
      - accept an iterable of inputs,
      - parallelize processing of this iterable on a pool of workers.
  
      The resulting class's __init__ method optionally accepts: %s