code: def full_name(cla55: Optional[type]) -> str:
      
      # Special case to handle None:
      if cla55 is None:
          return "?"
  
      if issubclass(cla55, Initializer) and cla55 not in [Initializer, PretrainedModelInitializer]:
          init_fn = cla55()._init_function
          return f"{init_fn.__module__}.{init_fn.__name__}"
  
      origin = getattr(cla55, '__origin__', None)
      args = getattr(cla55, '__args__', ())
  
      # Special handling for compound types
      if origin in (Dict, dict):
          key_type, value_type = args
          return f"""Dict[{full_name(key_type)}, {full_name(value_type)}]"""
      elif origin in (Tuple, tuple, List, list, Sequence, collections.abc.Sequence):
          return f"""{_remove_prefix(str(origin))}[{", ".join(full_name(arg) for arg in args)}]"""
      elif origin == Union:
          # Special special case to handle optional types:
          if len(args) == 2 and args[-1] == type(None):
              return f"""Optional[{full_name(args[0])}]"""
          else:
              return f"""Union[{", ".join(full_name(arg) for arg in args)}]"""
      else:
          return _remove_prefix(f"{cla55.__module__}.{cla55.__name__}")
docs: Return the full name (including module) of the given class.