List<PyCallable> (@Nullable Object expression, @Nullable String functionName, int index) { if (!isCallArgument(expression, functionName, index)) { return Collections.emptyList(); } final PyCallExpression call = (PyCallExpression)((PyExpression)expression).getParent().getParent(); // TODO is it better or worse to allow implicits here? final var context = TypeEvalContext.codeAnalysis(call.getProject(), call.getContainingFile()); return call.multiResolveCalleeFunction(PyResolveContext.defaultContext(context)); }