since Flush() won't necessarily always be the last operation, it should
maintain matcher state

i kind of wonder if Flush should also flush the underlying writer when
possible.  that would make a "pipe" with a GzipWriter simpler to implement.
other writers don't seem to do that, though, and i'm wary of breaking
expectations