anchor.diff:      }
     }
   
  +  void _writeListItem(StringBuffer buffer, writer()) {
  +    buffer.write('<li>');
  +    writer();
  +    buffer.write('</li>');
  +  }
  +
     void _writeListOfStrings(
         StringBuffer buffer, String listName, Iterable<String> items) {
       List<String> itemList = items.toList();
  
positive.code:       b = b.toLowerCase();
        return a.compareTo(b);
      });
      buffer.write('List "listName" containing ${itemList.length} entries:');
      buffer.write('<ul>');
      for (String member in itemList) {
        buffer.write('<li>');
        buffer.write(member);
        buffer.write('</li>');
      }
      buffer.write('</ul>');
    }
  
negative.code:       buffer.write('List containing ${value.length} entries');
        buffer.write('<ul>');
        for (var entry in value) {
          _writeListItem(buffer, () {
            _writeValueAsHtml(buffer, entry, linkParameters);
          });
        }
        buffer.write('</ul>');
      } else if (value is AstNode) {
  