def METHOD_NAME(self):
    class A:
        __metaclass__ = abc.ABCMeta
    self.assertTrue(issubclass(A, A))
    self.assertTrue(issubclass(A, (A,)))
    class B:
        __metaclass__ = abc.ABCMeta
    self.assertFalse(issubclass(A, B))
    self.assertFalse(issubclass(A, (B,)))
    self.assertFalse(issubclass(B, A))
    self.assertFalse(issubclass(B, (A,)))
    class C:
        __metaclass__ = abc.ABCMeta
    A.register(B)
    class B1(B):
        pass
    self.assertTrue(issubclass(B1, A))
    self.assertTrue(issubclass(B1, (A,)))
    class C1(C):
        pass
    B1.register(C1)
    self.assertFalse(issubclass(C, B))
    self.assertFalse(issubclass(C, (B,)))
    self.assertFalse(issubclass(C, B1))
    self.assertFalse(issubclass(C, (B1,)))
    self.assertTrue(issubclass(C1, A))
    self.assertTrue(issubclass(C1, (A,)))
    self.assertTrue(issubclass(C1, B))
    self.assertTrue(issubclass(C1, (B,)))
    self.assertTrue(issubclass(C1, B1))
    self.assertTrue(issubclass(C1, (B1,)))
    C1.register(int)
    class MyInt(int):
        pass
    self.assertTrue(issubclass(MyInt, A))
    self.assertTrue(issubclass(MyInt, (A,)))
    self.assertIsInstance(42, A)
    self.assertIsInstance(42, (A,))