diff --git a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java index 881d373d20e7..4b16c7183de8 100644 --- a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java @@ -235,19 +235,15 @@ public class PsiDiamondTypeImpl extends PsiDiamondType { } final MethodCandidateInfo staticFactoryCandidateInfo = createMethodCandidate(staticFactory, context, false, argumentList); - if (staticFactory.isVarArgs()) { - final Computable computable = new Computable() { - @Override - public Integer compute() { - return staticFactoryCandidateInfo.getPertinentApplicabilityLevel(); - } - }; - final Integer applicability = MethodCandidateInfo.ourOverloadGuard.doPreventingRecursion(newExpression, true, computable); - if ((applicability != null ? applicability : staticFactoryCandidateInfo.getApplicabilityLevel()) < MethodCandidateInfo.ApplicabilityLevel.FIXED_ARITY) { - return createMethodCandidate(staticFactory, context, true, argumentList); - } + if (!staticFactory.isVarArgs()) { + return staticFactoryCandidateInfo; } - return staticFactoryCandidateInfo; + + final JavaMethodsConflictResolver resolver = new JavaMethodsConflictResolver(argumentList, PsiUtil.getLanguageLevel(argumentList)); + final ArrayList conflicts = new ArrayList(); + conflicts.add(staticFactoryCandidateInfo); + conflicts.add(createMethodCandidate(staticFactory, context, true, argumentList)); + return resolver.resolveConflict(conflicts); } @Nullable