anchor.diff:  
     @override
     List<dart.Code> visitWhileExpression(WhileExpression node) => [
  -        unitInstance
  -            .assignVar(_name(node.id), compileType(context, node.type))
  -            .statement,
  +        unitInstance.assignVarTypesafe(
  +            _name(node.id), compileType(context, node.type)),
           dart.Code('${_label(node.id)}:\nwhile (true) {'),
           ...node.condition.accept(this),
           dart.Code('if (!${_name(node.condition.id)}.value) {'),
  
positive.code:   @override
    List<dart.Code> visitLoopExpression(LoopExpression node) => [
          dart.literalNull
              .assignVar(_name(node.id), compileType(context, node.type))
              .statement,
          dart.Code('${_label(node.id)}:\nwhile (true) {'),
          for (final expression in node.body) ...expression.accept(this),
          dart.Code('}'),
  
negative.code:     final iteratorName = '${_name(node.id)}_iterator';
      final rawItemName = '${_name(node.id)}_rawItem';
      return [
        unitInstance.assignVarTypesafe(
            _name(node.id), compileType(context, node.type)),
        ...node.iterable.accept(this),
        _refer(node.iterable.id)
            .property('iterator')
  