With this code, you can never create a `Defaltor` unless you use the `Deflator::xxx` method, but because none of the fields are private, once created the fields will all be accessible.

I still believe that this file should be pretty much just a Reader and a Writer implementation. There should perhaps be some interesting constructors, but that's all deflate really is, a stream of bytes going in and out. Implementation-wise, if someone asked to read 4 bytes but you actually inflate 4k, then I think that it's fine to have an internal buffer or two which things are inflated into. I'm always a fan of simple code first, and then add the optimizations later.