@Override
  public void visitLambdaExpression(@NotNull GrLambdaExpression expression) {
    GrLambdaBody body = expression.getBody();
    if (body == null) return;
    if (isFlatFlow) {
      FunctionalBlockBeginInstruction startClosure = new FunctionalBlockBeginInstruction(expression);
      myFunctionalScopeStack.addLast(expression);
      addNode(startClosure);
      addPendingEdge(expression, startClosure);
      addFunctionalExpressionParameters(expression);
      if (body instanceof GrBlockLambdaBody) {
        addControlFlowInstructions((GrStatementOwner)body);
      } else {
        super.visitLambdaBody(body);
      }
      InstructionImpl endClosure = new FunctionalBlockEndInstruction(startClosure);
      addNode(endClosure);
      checkPending(expression.getParent(), endClosure);
      myFunctionalScopeStack.removeLast();
    } else {
      List<kotlin.Pair<ReadWriteVariableInstruction, VariableDescriptor>> reads = ControlFlowBuilderUtil.getReadsWithoutPriorWrites(ControlFlowUtils.getGroovyControlFlow(body), false);
      addReadFromNestedControlFlow(expression, reads);
    }
  }
@Override
  public void visitLambdaExpression(@NotNull GrLambdaExpression expression)