anchor.diff:      boolExpressionVerifier.checkForNonBoolCondition(condition,
           whyNotPromoted: whyNotPromoted);
   
  -    Statement thenStatement = node.thenStatement;
       flowAnalysis.flow?.ifStatement_thenBegin(condition, node);
  -    thenStatement.accept(this);
  -    nullSafetyDeadCodeVerifier.flowEnd(thenStatement);
  +    node.thenStatement.accept(this);
  +    nullSafetyDeadCodeVerifier.flowEnd(node.thenStatement);
   
       var elseStatement = node.elseStatement;
       if (elseStatement != null) {
  
positive.code:     var expression = node.expression;
      InferenceContext.setType(expression, fieldType);
      expression.accept(this);
      var whyNotPromoted = flowAnalysis.flow?.whyNotPromoted(expression);
      node.accept(elementResolver);
      node.accept(typeAnalyzer);
  
negative.code:     boolExpressionVerifier.checkForNonBoolCondition(node.condition,
          whyNotPromoted: whyNotPromoted);
  
      flowAnalysis.flow?.whileStatement_bodyBegin(node, condition);
      node.body.accept(this);
      flowAnalysis.flow?.whileStatement_end();
      nullSafetyDeadCodeVerifier.flowEnd(node.body);
      // TODO(brianwilkerson) If the loop can only be exited because the condition
  