Perhaps this class could be package-private, and the feature could be folded into MessageAdapter, which is already designed to cache information about a message class.