private void visitSwitchElement(@NotNull GrSwitchElement switchElement) {
    final GrCondition condition = switchElement.getCondition();
    if (condition != null) {
      condition.accept(this);
    }
    final InstructionImpl instruction = startNode(switchElement);
    final GrCaseSection[] sections = switchElement.getCaseSections();
    if (!containsAllCases(switchElement)) {
      addPendingEdge(switchElement, instruction);
    }
    FList<ConditionInstruction> conditionsBefore = myConditions;
    for (GrCaseSection section : sections) {
      myConditions = conditionsBefore;
      myHead = instruction;
      GrExpression[] expressionPatterns = section.getExpressions();
      if (!section.isDefault() &&
          expressionPatterns.length > 0 &&
          ContainerUtil.and(expressionPatterns, expr -> expr instanceof GrReferenceExpression &&
                                                        ((GrReferenceExpression)expr).getStaticReference().resolve() instanceof PsiClass)) {
        GrExpression expressionPattern = expressionPatterns[0];
        if (expressionPattern != null && expressionPattern.getParent() instanceof GrExpressionList) {
          ConditionInstruction cond = registerCondition(section, false);
          addNodeAndCheckPending(cond);
          addNode(new InstanceOfInstruction((GroovyPsiElement)expressionPattern.getParent(), cond, myVariableMapping));
        }
      }
      section.accept(this);
    }
    myConditions = conditionsBefore;
    finishNode(instruction);
  }
private void visitSwitchElement(@NotNull GrSwitchElement switchElement)