@NotNull
  default PsiSubstitutor inferTypeArguments(PsiTypeParameter @NotNull [] typeParameters,
                                            PsiType @NotNull [] leftTypes,
                                            PsiType @NotNull [] rightTypes,
                                            @NotNull PsiSubstitutor partialSubstitutor,
                                            @NotNull LanguageLevel languageLevel){
    return inferTypeArguments(typeParameters, leftTypes, rightTypes, languageLevel);
  }
@NotNull
  default PsiSubstitutor inferTypeArguments(PsiTypeParameter @NotNull [] typeParameters,
                                            PsiType @NotNull [] leftTypes,
                                            PsiType @NotNull [] rightTypes,
                                            @NotNull PsiSubstitutor partialSubstitutor,
                                            @NotNull LanguageLevel languageLevel)