anchor.diff:  
     /// Adds a postfix operator [parser]. Evaluates the optional [action] with the
     /// parsed `value` and `operator`.
  -  void postfix(Parser parser, [Function action]) {
  +  void postfix<T>(Parser<T> parser, [Object action(Object value, T operator)]) {
       action ??= (value, operator) => [value, operator];
       _postfix.add(parser.map((operator) => ExpressionResult(operator, action)));
     }
  
positive.code: 
  /// Models a group of operators of the same precedence.
  class ExpressionGroup {
    /// Defines a new primitive or literal [parser]. Evaluates the optional [action].
    void primitive<T, R>(Parser<T> parser, [ActionCallback<T, R> action]) {
      _primitives.add(action != null ? parser.map(action) : parser);
    }
  
  
negative.code: library petitparser.core.expression.group;
  
  import 'package:petitparser/src/core/combinators/choice.dart';
  import 'package:petitparser/src/core/combinators/sequence.dart';
  import 'package:petitparser/src/core/expression/result.dart';
  