anchor.diff:  
     /// Adds a prefix operator [parser]. Evaluates the optional [action] with the
     /// parsed `operator` and `value`.
  -  void prefix<T>(Parser<T> parser,
  -      [Object Function(T operator, Object value) action]) {
  +  void prefix<O, V>(Parser<O> parser,
  +      [Object Function(O operator, V value) action]) {
       action ??= (operator, value) => [operator, value];
       _prefix.add(parser.map((operator) => ExpressionResult(operator, action)));
     }
  
positive.code: 
    /// Adds a postfix operator [parser]. Evaluates the optional [action] with the
    /// parsed `value` and `operator`.
    void postfix<T>(Parser<T> parser,
        [Object Function(Object value, T operator) action]) {
      action ??= (value, operator) => [value, operator];
      _postfix.add(parser.map((operator) => ExpressionResult(operator, action)));
    }
  
negative.code: 
    /// Adds a right-associative operator [parser]. Evaluates the optional
    /// [action] with the parsed `left` term, `operator`, and `right` term.
    void right<O, V>(Parser<O> parser,
        [Object Function(V left, O operator, V right) action]) {
      action ??= (left, operator, right) => [left, operator, right];
      _right.add(parser.map((operator) => ExpressionResult(operator, action)));
    }
  