anchor.diff:          | Char _       -> false
           | Union (a, b) -> nullable a || nullable b
           | Cat (a, b)   -> nullable a && nullable b
  -        | Star a       -> true
  +        | Star _       -> true
   
       // empty returns true if a parser has failed to recognise a string.
       let rec empty = function
  
positive.code:                                 | false, []
                                  | false, _::_
                                  | true,  [] -> baseParser::rest // Add a new parser for non-maximal munchers
                                  | true,  p::ps -> rest)         // Otherwise, just keep the old one ticking along.
                                  |> List.map (fun p -> dP x p)
                                  |> List.map compact
                                  |> reject empty
  
negative.code:         | Char _       -> false
          | Union (a, b) -> empty a && empty b
          | Cat (a, b)   -> empty a || empty b
          | Star _       -> false
  
      // Given two sequences and a function, return the result of applying
      // that function to every pair of values in the sequences.
  