http://fullstackprep.dev/articles/webd/java/wildcard-types-generics-java