code: def _remove_dups_flatten(parameters):
      
  
      # Flatten out Union[Union[...], ...].
      params = []
      for p in parameters:
          if isinstance(p, _Union) and p.__origin__ is Union:
              params.extend(p.__args__)
          elif isinstance(p, tuple) and len(p) > 0 and p[0] is Union:
              params.extend(p[1:])
          else:
              params.append(p)
      # Weed out strict duplicates, preserving the first of each occurrence.
      all_params = set(params)
      if len(all_params) < len(params):
          new_params = []
          for t in params:
              if t in all_params:
                  new_params.append(t)
                  all_params.remove(t)
          params = new_params
          assert not all_params, all_params
      # Weed out subclasses.
      # E.g. Union[int, Employee, Manager] == Union[int, Employee].
      # If object is present it will be sole survivor among proper classes.
      # Never discard type variables.
      # (In particular, Union[str, AnyStr] != AnyStr.)
      all_params = set(params)
      for t1 in params:
          if not isinstance(t1, type):
              continue
          if any(isinstance(t2, type) and issubclass(t1, t2)
                 for t2 in all_params - {t1}
                 if not (isinstance(t2, GenericMeta) and
                         t2.__origin__ is not None)):
              all_params.remove(t1)
      return tuple(t for t in params if t in all_params)
docs: An internal helper for Union creation and substitution: flatten Union's
      among parameters, then remove duplicates and strict subclasses.