While redoing the pr #19843 to showcase how we will add new services to the ComponentInterface, the outcome is not really satisfying. @wilsonge brought up the idea turning the ComponentInterface into a service locator. I was playing with this and added a generic getService function to the interface and removed the getAssociationsExtension function. The AssociationExtensionInterface is now loaded the new way.
This pr acted as an example only. Closing in favor of #20176.