code: def _get_type_hints(func, args = None, res = None, infer_defaults = None):
      
      if args is None or res is None:
          args2, res2 = _get_types(func, util.is_classmethod(func),
                  util.is_method(func), unspecified_type = type(NotImplemented),
                  infer_defaults = infer_defaults)
          if args is None:
              args = args2
          if res is None:
              res = res2
      slf = 1 if util.is_method(func) else 0
      argNames = util.getargnames(util.getargspecs(util._actualfunc(func)))
      result = {}
      if not args is Any:
          prms = get_Tuple_params(args)
          for i in range(slf, len(argNames)):
              if not prms[i-slf] is type(NotImplemented):
                  result[argNames[i]] = prms[i-slf]
      result['return'] = res
      return result
docs: Helper for get_type_hints.