Developing a metaclass that provides self-registration of subclasses (somewhat similar to this idea), I came across the following problem:
Given a class that may be either an abstract base class or an implementation of one, how do I distinguish which it is?