anchor.diff:  import 'package:test/test.dart';
   
   final identifier = letter() & word().star();
  +
  +Matcher isProfileFrame({required String parser, int count = 0}) =>
  +    isA<ProfileFrame>()
  +        .having((frame) => frame.parser.toString(), 'parser', contains(parser))
  +        .having((frame) => frame.count, 'count', count)
  +        .having((frame) => frame.elapsed, 'elapsed',
  +            greaterThanOrEqualTo(Duration.zero))
  +        .having((frame) => frame.toString(), 'toString',
  +            allOf(startsWith(count.toString()), contains(parser)));
  +
  +Matcher isProgressFrame({required String parser, required int position}) =>
  +    isA<ProgressFrame>()
  +        .having((frame) => frame.parser.toString(), 'parser', contains(parser))
  +        .having((frame) => frame.context.position, 'position', position)
  +        .having((frame) => frame.toString(), 'toString',
  +            allOf(startsWith('*' * (position + 1)), contains(parser)));
   
   void main() {
     group('trace', () {
  
positive.code:     });
    });
    group('progress', () {
      Matcher isProgressFrame({required String parser, required int position}) =>
          isA<ProgressFrame>()
              .having(
                  (frame) => frame.parser.toString(), 'parser', contains(parser))
              .having((frame) => frame.context.position, 'position', position)
              .having((frame) => frame.toString(), 'toString',
                  allOf(startsWith('*' * (position + 1)), contains(parser)));
  
      test('success', () {
        final frames = <ProgressFrame>[];
        final parser = progress(identifier, output: frames.add);
  
negative.code:     });
    });
    group('profile', () {
      test('success', () {
        final frames = <ProfileFrame>[];
        final parser = profile(identifier, output: frames.add);
  