Effective Java : programming language guide - Bloch, Joshua (The Java series, 2008)