anchor.diff:          isProfileFrame(parser: 'letter expected', count: 1),
         ]);
       });
  +    test('labeled', () {
  +      final frames = <ProfileFrame>[];
  +      final parser = profile(labeledIdentifier,
  +          output: frames.add, predicate: (parser) => parser is LabeledParser);
  +      expect(parser.parse('ab123').isSuccess, isTrue);
  +      expect(frames, [
  +        isProfileFrame(parser: 'remaining', count: 1),
  +        isProfileFrame(parser: 'first', count: 1),
  +      ]);
  +    });
       test('failure', () {
         final frames = <ProfileFrame>[];
         final parser = profile(identifier, output: frames.add);
  
positive.code: import 'test_utils.dart';
  
  final identifier = letter() & word().star();
  
  Matcher isProfileFrame({required String parser, int count = 0}) =>
      isA<ProfileFrame>()
  
negative.code:         isProgressFrame(parser: 'letter or digit expected', position: 3),
          isProgressFrame(parser: 'letter or digit expected', position: 4),
          isProgressFrame(parser: 'letter or digit expected', position: 5),
        ]);
      });
      test('labeled', () {
        final frames = <ProgressFrame>[];
        final parser = progress(labeledIdentifier,
            output: frames.add, predicate: (parser) => parser is LabeledParser);
        expect(parser.parse('ab123').isSuccess, isTrue);
        expect(frames, [
          isProgressFrame(parser: 'first', position: 0),
          isProgressFrame(parser: 'remaining', position: 1),
        ]);
      });
      test('failure', () {
  