The return type of SearchService.fetch (String) must be Map <Class <? Extends Entity>, List <? Extends Entity >> because in general lists of specific subclasses are returned by Entity.
Generally it should be always used <? extends T> instead of <T> in collections, if the collections are only for read access - this often saves the implementation from an unnecessary copying task and creates a compile error, if the recipient of the collection accidentally calls adds() or a similar Mutating method.