Transitioning on every digit is slow -- three orders of magnitude.
Skipping the transitions does not solve the problem.
    i.e. meta-tokens are slow.
Skipping all meta-lexer work other than read() does not solve the problem.
Skipping write() does solve the problem.
Conclusion: the problem is with the pipe.
Rewriting the pipe with synchronized (vs java.util.concurrency) and strong assumptions (e.g. one reader, one writer) does not solve the problem -- 10% speedup.
