http://fullstackprep.dev/articles/webd/java/explain-anonymous-classes