anchor.diff:      // prepare environment
       String indentOld = utils.getNodePrefix(firstStatement);
       String indentNew = "${indentOld}${utils.getIndent(1)}";
  +    String indentedCode =
  +        utils.replaceSourceRangeIndent(statementsRange, indentOld, indentNew);
       // "block"
       {
         _addInsertEdit(statementsRange.offset, "${indentOld}{${eol}");
  
positive.code:   /**
     * Inserts the given [SourceBuilder] at its offset.
     */
    void _insertBuilder(SourceBuilder builder) {
      String text = builder.toString();
      _addInsertEdit(builder.offset, text);
      // add linked positions
      builder.linkedPositionGroups.forEach((String id, LinkedEditGroup group) {
        LinkedEditGroup fixGroup = _getLinkedPosition(id);
  
negative.code:     }
      // "if"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        sb.append(indentOld);
        sb.append("if (");
        {
          sb.startPosition("CONDITION");
          sb.append("condition");
          sb.endPosition();
        }
        sb.append(") {");
        sb.append(eol);
        sb.append(indentedCode);
        sb.append(indentOld);
        sb.append('}');
        exitPosition = _newPosition(sb.offset + sb.length);
        sb.append(eol);
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_IF, []);
      }
      // "while"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        sb.append(indentOld);
        sb.append("while (");
        {
          sb.startPosition("CONDITION");
          sb.append("condition");
          sb.endPosition();
        }
        sb.append(") {");
        sb.append(eol);
        sb.append(indentedCode);
        sb.append(indentOld);
        sb.append('}');
        exitPosition = _newPosition(sb.offset + sb.length);
        sb.append(eol);
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_WHILE, []);
      }
      // "for-in"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        sb.append(indentOld);
        sb.append("for (var ");
        {
          sb.startPosition("NAME");
          sb.append("item");
          sb.endPosition();
        }
        sb.append(" in ");
        {
          sb.startPosition("ITERABLE");
          sb.append("iterable");
          sb.endPosition();
        }
        sb.append(") {");
        sb.append(eol);
        sb.append(indentedCode);
        sb.append(indentOld);
        sb.append('}');
        exitPosition = _newPosition(sb.offset + sb.length);
        sb.append(eol);
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_FOR_IN, []);
      }
      // "for"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        sb.append(indentOld);
        sb.append("for (var ");
        {
          sb.startPosition("VAR");
          sb.append("v");
          sb.endPosition();
        }
        sb.append(" = ");
        {
          sb.startPosition("INIT");
          sb.append("init");
          sb.endPosition();
        }
        sb.append("; ");
        {
          sb.startPosition("CONDITION");
          sb.append("condition");
          sb.endPosition();
        }
        sb.append("; ");
        {
          sb.startPosition("INCREMENT");
          sb.append("increment");
          sb.endPosition();
        }
        sb.append(") {");
        sb.append(eol);
        sb.append(indentedCode);
        sb.append(indentOld);
        sb.append('}');
        exitPosition = _newPosition(sb.offset + sb.length);
        sb.append(eol);
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_FOR, []);
      }
      // "do-while"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        sb.append(indentOld);
        sb.append("do {");
        sb.append(eol);
        sb.append(indentedCode);
        sb.append(indentOld);
        sb.append("} while (");
        {
          sb.startPosition("CONDITION");
          sb.append("condition");
          sb.endPosition();
        }
        sb.append(");");
        exitPosition = _newPosition(sb.offset + sb.length);
        sb.append(eol);
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_DO_WHILE, []);
      }
      // "try-catch"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        sb.append(indentOld);
        sb.append("try {");
        sb.append(eol);
        sb.append(indentedCode);
        sb.append(indentOld);
        sb.append("} on ");
        {
          sb.startPosition("EXCEPTION_TYPE");
          sb.append("Exception");
          sb.endPosition();
        }
        sb.append(" catch (");
        {
          sb.startPosition("EXCEPTION_VAR");
          sb.append("e");
          sb.endPosition();
        }
        sb.append(") {");
        sb.append(eol);
        //
        sb.append(indentNew);
        {
          sb.startPosition("CATCH");
          sb.append("// TODO");
          sb.endPosition();
          sb.setExitOffset();
        }
        sb.append(eol);
        //
        sb.append(indentOld);
        sb.append("}");
        sb.append(eol);
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_TRY_CATCH, []);
      }
      // "try-finally"
      {
        int offset = statementsRange.offset;
        SourceBuilder sb = new SourceBuilder(file, offset);
        //
        sb.append(indentOld);
        sb.append("try {");
        sb.append(eol);
        //
        sb.append(indentedCode);
        //
        sb.append(indentOld);
        sb.append("} finally {");
        sb.append(eol);
        //
        sb.append(indentNew);
        {
          sb.startPosition("FINALLY");
          sb.append("// TODO");
          sb.endPosition();
          sb.setExitOffset();
        }
        sb.setExitOffset();
        sb.append(eol);
        //
        sb.append(indentOld);
        sb.append("}");
        sb.append(eol);
        //
        _insertBuilder(sb, statementsRange.length);
        // add proposal
        _addAssist(AssistKind.SURROUND_WITH_TRY_FINALLY, []);
      }
  