boolean (@Nullable Object expression, @Nullable String functionName, int index) { if (!(expression instanceof PyExpression)) { return false; } final PsiElement argumentList = ((PyExpression)expression).getParent(); if (!(argumentList instanceof PyArgumentList)) { return false; } final PsiElement call = argumentList.getParent(); if (!(call instanceof PyCallExpression)) { return false; } final PyExpression referenceToCallee = ((PyCallExpression)call).getCallee(); if (!(referenceToCallee instanceof PyReferenceExpression)) { return false; } final String referencedName = ((PyReferenceExpression)referenceToCallee).getReferencedName(); if (referencedName == null || !referencedName.equals(functionName)) { return false; } final PsiElement[] arguments = argumentList.getChildren(); return index < arguments.length && expression == arguments[index]; }