code: def log_type(args_kw, ret, func, slf=False, prop_getter=False, clss=None, argspecs=None,
              args_kw_type=None, ret_type = None):
      
      if args_kw_type is None:
          args_kw_type = deep_type(args_kw)
      if ret_type is None:
          ret_type = deep_type(ret)
      if argspecs is None:
          argspecs = getargspecs(func)
      node = _register_logged_func(func, slf, prop_getter, clss, argspecs)
      node.add_observation(args_kw_type, ret_type)
      
      md = util.getmodule_for_member(func, prop_getter)
      if not md.__name__ in _module_file_map:
          _module_file_map[md.__name__] = md.__file__
  
      if clss is None:
          try:
              clss = util.get_class_that_defined_method(func)
          except ValueError:
              pass
      if not clss is None and not clss in _member_line_map:
          _member_line_map[clss] = findsource(clss)[1]
docs: Stores information of a function or method call into a cache, so pytypes can
      create a PEP 484 stubfile from this information later on (see dump_cache).