The indentation in this file is a little off, and I'm not sure that this is the best way to go about this. This trait seems very specific and I don't understand why you have `FiniteWriter` implementations for various writers, but not various other writers.

Can you explain a little more about why this is necessary? Is this purely because you can't call generic methods from destructors?