PyType (@Nullable PyType type, @NotNull Map<PyExpression, PyCallableParameter> actualParameters, @NotNull Collection<PyCallableParameter> allParameters, @Nullable PyExpression receiver, @NotNull TypeEvalContext context) { final var substitutions = PyTypeChecker.unifyGenericCall(receiver, actualParameters, context); final var substitutionsWithUnresolvedReturnGenerics = PyTypeChecker.getSubstitutionsWithUnresolvedReturnGenerics(allParameters, type, substitutions, context); return PyTypeChecker.substitute(type, substitutionsWithUnresolvedReturnGenerics, context); }