private void visitConjunctOrDisjunct(@NotNull PyBinaryExpression node,
                                       @NotNull PyExpression subExpression,
                                       @Nullable PyTypeAssertionEvaluator previousAssertionEvaluator,
                                       @Nullable PyTypeAssertionEvaluator assertionEvaluator,
                                       boolean conditionResultToContinue) {
    if (previousAssertionEvaluator != null) {
      InstructionBuilder.addAssertInstructions(myBuilder, previousAssertionEvaluator);
    }

    subExpression.accept(this);

    if (assertionEvaluator != null) {
      subExpression.accept(assertionEvaluator);
    }

    final var branchingPoint = myBuilder.prevInstruction;

    final var outside = new ConditionalInstructionImpl(myBuilder, null, subExpression, !conditionResultToContinue);
    myBuilder.addNode(outside);
    myBuilder.addPendingEdge(node, myBuilder.prevInstruction);

    myBuilder.prevInstruction = branchingPoint;
    final var toTheNext = new ConditionalInstructionImpl(myBuilder, null, subExpression, conditionResultToContinue);
    myBuilder.addNode(toTheNext);
  }
private void visitConjunctOrDisjunct(@NotNull PyBinaryExpression node,
                                       @NotNull PyExpression subExpression,
                                       @Nullable PyTypeAssertionEvaluator previousAssertionEvaluator,
                                       @Nullable PyTypeAssertionEvaluator assertionEvaluator,
                                       boolean conditionResultToContinue)