@Override public void visitInstanceOfExpression(@NotNull PsiInstanceOfExpression expression) {
    startElement(expression);

    PsiPattern pattern = expression.getPattern();
    PsiExpression operand = expression.getOperand();
    PsiType operandType = operand.getType();
    PsiTypeElement checkType = InstanceOfUtils.findCheckTypeElement(expression);
    CFGBuilder builder = new CFGBuilder(this);
    if (pattern == null) {
      if (checkType == null || operandType == null) {
        pushUnknown();
      }
      else {
        buildSimpleInstanceof(builder, expression, operand, operandType, checkType);
      }
    }
    else if (operandType != null) {
      builder
        .pushForWrite(createTempVariable(operand.getType()))
        .pushExpression(operand)
        .assign();
      processPatternInInstanceof(pattern, expression, operandType);
    }
    else {
      pushUnknown();
    }

    finishElement(expression);
  }
@Override public void visitInstanceOfExpression(@NotNull PsiInstanceOfExpression expression)