anchor.diff:      return [
         ...node.condition.accept(this),
         dart.literalNull
  -          .assignVar(_name(node.id), compileType(context, node.type))
  -          .statement,
  +          .assignVarTypesafe(_name(node.id), compileType(context, node.type)),
         dart.Code('if (${_name(node.condition.id)}.value) {'),
         ...visitBody(node.thenBody),
         dart.Code('} else {'),
  
positive.code:         code,
          const dart.Code(')'),
        ]));
  }
  
  dart.Expression lambdaOf(List<dart.Code> code) {
  
negative.code: 
    @override
    List<dart.Code> visitWhileExpression(WhileExpression node) => [
          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) {'),
  