anchor.diff:          final parser = repeated | terminal;
           final analyzer = Analyzer(parser);
           final path = analyzer.findPathTo(parser, terminal)!;
  +        expect(path.source, parser);
  +        expect(path.target, terminal);
           expect(path.parsers, [parser, terminal]);
           expect(path.indexes, [1]);
           final paths = analyzer.findAllPathsTo(parser, terminal).toList();
  
positive.code:         final parser = char('a');
          final analyzer = Analyzer(parser);
          final path = analyzer.findPathTo(parser, parser)!;
          expect(path.parsers, [parser]);
          expect(path.indexes, []);
          final paths = analyzer.findAllPathsTo(parser, parser).toList();
  
negative.code:             .having((issue) => issue.parser, 'parser', same(input))
              .having((issue) => issue.description, 'description', 'Described')
              .having((issue) => issue.fixer, 'fixer', isNull)
              .having(
                  (issue) => issue.toString(),
                  'toString',
                  'LinterIssue(type: LinterType.error, title: Fake Rule, '
                      'parser: Instance of \'PredicateParser\'[trigger '
                      'expected], description: Described)')
        ]);
        expect(called, results);
      });
  