code: def parametrized_type_hint_getinitargs(obj):
      # The distorted type check sematic for typing construct becomes:
      # ``type(obj) is type(TypeHint)``, which means "obj is a
      # parametrized TypeHint"
      if type(obj) is type(Literal):  # pragma: no branch
          initargs = (Literal, obj.__values__)
      elif type(obj) is type(Final):  # pragma: no branch
          initargs = (Final, obj.__type__)
      elif type(obj) is type(ClassVar):
          initargs = (ClassVar, obj.__type__)
      elif type(obj) is type(Generic):
          initargs = (obj.__origin__, obj.__args__)
      elif type(obj) is type(Union):
          initargs = (Union, obj.__args__)
      elif type(obj) is type(Tuple):
          initargs = (Tuple, obj.__args__)
      elif type(obj) is type(Callable):
          (*args, result) = obj.__args__
          if len(args) == 1 and args[0] is Ellipsis:
              args = Ellipsis
          else:
              args = list(args)
          initargs = (Callable, (args, result))
      else:  # pragma: no cover
          raise pickle.PicklingError(
              f"Cloudpickle Error: Unknown type {type(obj)}"
          )
      return initargs
  
imports: import builtins
  import dis
  import opcode
  import platform
  import sys
  import types
  import weakref
  import uuid
  import threading
  import typing
  import warnings
  from .compat import pickle
  from collections import OrderedDict
  from typing import ClassVar, Generic, Union, Tuple, Callable
  from pickle import _getattribute
  from importlib._bootstrap import _find_spec
label_desc: Use image node_id 17 for calling a global function with example usage: parametrized_type_hint_getinitargs(obj) and returns: initargs