@Nullable
  private static PyType analyzeCallType(@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);
  }
@Nullable
  private static PyType analyzeCallType(@Nullable PyType type,
                                        @NotNull Map<PyExpression, PyCallableParameter> actualParameters,
                                        @NotNull Collection<PyCallableParameter> allParameters,
                                        @Nullable PyExpression receiver,
                                        @NotNull TypeEvalContext context)