void (@NotNull PyCallExpression node) { node.acceptChildren(this); if (alreadyVisited.contains(node)) return; alreadyVisited.add(node); if (myVariantIndex == myVariantsFromPython.size() - 1) return; PyExpression callee = node.getCallee(); if (callee == null || callee.getName() == null) return; if (!callee.getName().equals(myVariantsFromPython.get(myVariantIndex + 1).first)) return; myVariantIndex++; int callOrder = getCallOrder(); mySeenVariants.put(myVariantsFromPython.get(myVariantIndex).first, ++callOrder); PsiElement ref = callee.getReference() != null ? callee.getReference().resolve() : null; if (ref != null && isBuiltIn(ref)) return; if (ref instanceof PyFunction && ((((PyFunction)ref).isAsync()) || ((PyFunction)ref).isGenerator())) return; if (isAlreadySeen()) return; myCollector.add(new PySmartStepIntoVariantCallExpression(node, callOrder, myContext)); }