void (@NotNull PyBinaryExpression node) { // We have to visit both branches of a binary expression first to preserve the execution order as it is in a CPython interpreter, // E.g. in the `f() + g()` expression the execution order goes like `f()`, `g()`, `+`, but it's `f()`, `+`, `g()` in the PSI tree. node.getLeftExpression().accept(this); if (node.getRightExpression() != null) node.getRightExpression().accept(this); node.acceptChildren(this); if (alreadyVisited.contains(node)) return; alreadyVisited.add(node); if (myVariantIndex == myVariantsFromPython.size() - 1) return; PyElementType operator = node.getOperator(); if (PyTokenTypes.OPERATIONS.contains(operator)) processOperator(operator, node); }