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