Refactor Lexeme type out of actual constructors, to avoid repetition.
* This means that in the general case the compiler will not be able to unpack fields,
  but whatever.