@patrick We used to call this "Uber Super Meta Programming." Not writing the application, but writing classes that make it easier to create the classes that implement the application.
It's not wrong, but it's so bafflingly indirect that it breaks the tools.