def METHOD_NAME(self):
    class A:
        __metaclass__ = abc.ABCMeta
    A.register(A)  # should pass silently
    class A1(A):
        pass
    self.assertRaises(RuntimeError, A1.register, A)  # cycles not allowed
    class B(object):
        pass
    A1.register(B)  # ok
    A1.register(B)  # should pass silently
    class C(A):
        pass
    A.register(C)  # should pass silently
    self.assertRaises(RuntimeError, C.register, A)  # cycles not allowed
    C.register(B)  # ok