As part of restoring lenient matching for events with unresolvable generics in #30712, it turns out that we're calling ResolvableType.hasUnresolvableGenerics() on the given event type quite often. It seems sensible to cache it within ResolvableType itself, also to the benefit of our conditional type converter matching etc.