anchor.diff:  
   class ListParserDefinition extends ListGrammarDefinition {
     element() => super.element().map((value) => int.parse(value));
  +}
  +
  +class TokenizedListGrammarDefinition extends GrammarDefinition {
  +  start()   => ref(list).end();
  +  list()    => ref(element) & ref(token, char(',')) & ref(list)
  +             | ref(element);
  +  element() => ref(token, digit().plus());
  +  token(p)  => p.flatten().trim();
   }
   
   class PluggableCompositeParser extends CompositeParser {
  
positive.code:   group('definition', () {
      var grammarDefinition = new ListGrammarDefinition();
      var parserDefinition = new ListParserDefinition();
      test('reference without parameters', () {
        var firstReference = grammarDefinition.ref(grammarDefinition.start);
        var secondReference = grammarDefinition.ref(grammarDefinition.start);
  
negative.code:       var parser = parserDefinition.build();
        expectSuccess(parser, '1,2', [1, ',', 2]);
        expectSuccess(parser, '1,2,3', [1, ',', [2, ',', 3]]);
      });
      test('token', () {
        var parser = tokenDefinition.build();
        expectSuccess(parser, '1, 2', ['1', ',', '2']);
        expectSuccess(parser, '1, 2, 3', ['1', ',', ['2', ',', '3']]);
      });
    });
    group('composite', () {
  