anchor.diff:  import 'dart:math';
   
  +import 'package:petitparser/debug.dart';
   import 'package:petitparser/petitparser.dart';
   import 'package:test/test.dart' hide anyOf;
   
  
positive.code:           ')'
          ]));
    });
  }
  
negative.code: class ParensGrammar extends GrammarDefinition {
    @override
    Parser start() => char('(') & ref0(start) & char(')') | epsilon();
  }
  
  class NestedGrammar1 {
    Parser start() => ref0(term).end();
    Parser term() => ref0(nestedTerm) | ref0(singleCharacter);
    Parser nestedTerm() =>
        (char('(')).map((value) => "'$value' (nestedTerm)") &
        ref0(term) &
        char(')').map((value) => "'$value' (nestedTerm)");
    Parser singleCharacter() =>
        char('(').map((value) => "'$value' (singleCharacter)") |
        char(')').map((value) => "'$value' (singleCharacter)") |
        char('0').map((value) => "'$value' (singleCharacter)");
  }
  
  class NestedGrammar2 {
    Parser start() => ref0(term).end();
    Parser term() => (ref0(nestedTerm) | ref0(singleCharacter)).plus();
    Parser nestedTerm() =>
        (char('(')).map((value) => "'$value' (nestedTerm)") &
        ref0(term) &
        char(')').map((value) => "'$value' (nestedTerm)");
    Parser singleCharacter() =>
        char('(').map((value) => "'$value' (singleCharacter)") |
        char(')').map((value) => "'$value' (singleCharacter)") |
        char('0').map((value) => "'$value' (singleCharacter)");
  }
  
  class NestedGrammar3 {
    Parser start() => ref0(term).end();
    Parser term() => (ref0(nestedTerm) | ref0(singleCharacter)).plus();
    Parser nestedTerm() =>
        (char('(')).map((value) => "'$value' (nestedTerm)") &
        ref0(term) &
        char(')').map((value) => "'$value' (nestedTerm)");
    Parser singleCharacter() =>
        char('(').map((value) => "'$value' (singleCharacter)") |
        char('0').map((value) => "'$value' (singleCharacter)");
  }
  
  void main() {
  