anchor.diff:            elementType ?? DynamicTypeImpl.instance, null);
       }
   
  -    _visitBody(body, context);
  +    visitBody();
   
       _resolver.flowAnalysis.flow?.forEach_end();
     }
   
  -  void _forParts(AstNode node, ForParts forParts, AstNode body,
  -      {CollectionLiteralContext? context}) {
  +  void _forParts(AstNode node, ForParts forParts, void Function() visitBody) {
       if (forParts is ForPartsWithDeclarations) {
         forParts.variables.accept(_resolver);
       } else if (forParts is ForPartsWithExpression) {
  
positive.code:     }
    }
  
    void _forEachParts(
        AstNode node, bool isAsync, ForEachParts forEachParts, AstNode body,
        {CollectionLiteralContext? context}) {
      Expression iterable = forEachParts.iterable;
      DeclaredIdentifier? loopVariable;
      SimpleIdentifier? identifier;
  
negative.code:     _resolver.checkUnreachableNode(node);
  
      var forLoopParts = node.forLoopParts;
      void visitBody() {
        node.body.accept(_resolver);
      }
  
      if (forLoopParts is ForPartsImpl) {
        _forParts(node, forLoopParts, visitBody);
      } else if (forLoopParts is ForEachPartsImpl) {
        _forEachParts(node, node.awaitKeyword != null, forLoopParts, visitBody);
      }
    }
  
  