@Nullable private ResolvedCallWithTrace<FunctionDescriptor> getResolvedCallForFunction( @NotNull Call call, @NotNull JetExpression callExpression, @NotNull ReceiverValue receiver, @NotNull ResolutionContext context, @NotNull ResolveMode resolveMode, @NotNull ResolutionResultsCache resolutionResultsCache, @NotNull boolean[] result) { CallResolver callResolver = expressionTypingServices.getCallResolver(); OverloadResolutionResultsImpl<FunctionDescriptor> results = callResolver.resolveFunctionCall( BasicCallResolutionContext.create(context, call, resolveMode, resolutionResultsCache)); if (!results.isNothing()) { checkSuper(receiver, results, context.trace, callExpression); result[0] = true; if (results.isSingleResult() && resolveMode == ResolveMode.TOP_LEVEL_CALL) { if (!CallResolverUtil.hasInferredReturnType(results.getResultingCall())) return null; } return results.isSingleResult() ? results.getResultingCall() : null; } result[0] = false; return null; }