@codingricky I think the factory could do the caching, so the public API for the factory would have just `getAnnotationValidator`