The cache needs to be based on `cls.entry_point`, as well as identifier. We 'avoided' this before because different subclasses had different caches.