Yeah, forgive me if you're aware of all this, but making a class aware
of its descendants is a violation of OOP principles, especially if
there's any conditional logic involved. Classes should take care of
themselves, if only to encapsulate the code so you can make changes
and track down bugs easier. I know it's sometimes necessary to break
the rules, but if you wouldn't mind, I'd be interested too in what the
goal is here.