Well, according to the documentation, this service is used to answer questions "is this class or some of its superclasses matches specific predicate or not?". And only only classes can have supertypes
If you need to just match arbitrary elements by predicates it's ok to just use
predicateBasedProvider
, as it uses caching under the hood