The closed
field is never read
Consequently it's possible to update the digest on a close stream we can't write to
This points us at another bug: the digest should be calculated after writing; not before to avoid digesting code that isn't written due to an IOException.
In over six years the book was print nobody noticed this bug.
Eclipse found it immediately.