Effective Java - Joshua Bloch; Joshua Bloch (Effective Java, 2017)