These are notes from reading Effective Java by J. Bloch