code: def infer_returned_object(pyfunction, args):
      
      object_info = pyfunction.pycore.object_info
      result = object_info.get_exact_returned(pyfunction, args)
      if result is not None:
          return result
      result = _infer_returned(pyfunction, args)
      if result is not None:
          if args and pyfunction.get_module().get_resource() is not None:
              params = args.get_arguments(
                  pyfunction.get_param_names(special_args=False))
              object_info.function_called(pyfunction, params, result)
          return result
      result = object_info.get_returned(pyfunction, args)
      if result is not None:
          return result
      hint_return = get_type_hinting_factory(pyfunction.pycore.project).make_return_provider()
      type_ = hint_return(pyfunction)
      if type_ is not None:
          return rope.base.pyobjects.PyObject(type_)
docs: Infer the `PyObject` this `PyFunction` returns after calling