def METHOD_NAME(self):
    # check that signatures are properly preserved
    self.assertEqual(
        inspect.signature(_simple.construct),
        inspect.signature(_abstract_simple.construct),
    )
    self.assertEqual(
        inspect.signature(_simple.a), inspect.signature(_abstract_simple.a)
    )
    self.assertEqual(
        inspect.signature(_simple.b), inspect.signature(_abstract_simple.b)
    )
    self.assertEqual(
        inspect.signature(_simple.c), inspect.signature(_abstract_simple.c)
    )
    self.assertEqual(
        inspect.signature(_simple.d.fget),
        inspect.signature(_abstract_simple.d.fget),
    )
    self.assertEqual(
        inspect.signature(_simple.d.fset),
        inspect.signature(_abstract_simple.d.fset),
    )
    self.assertEqual(
        inspect.signature(_simple.e.fget),
        inspect.signature(_abstract_simple.e.fget),
    )
    self.assertEqual(
        inspect.signature(_simple.e.fset),
        inspect.signature(_abstract_simple.e.fset),
    )
    self.assertEqual(
        inspect.signature(_simple.f), inspect.signature(_abstract_simple.f)
    )
    self.assertEqual(
        inspect.signature(_simple.g.fget),
        inspect.signature(_abstract_simple.g.fget),
    )
    self.assertIsNone(_simple.g.fset)
    self.assertIsNone(_abstract_simple.g.fset)
    self.assertEqual(
        inspect.signature(_simple.h.fget),
        inspect.signature(_abstract_simple.h.fget),
    )
    self.assertIsNone(_simple.h.fset)
    self.assertIsNone(_abstract_simple.h.fset)