def METHOD_NAME(self):
    from Merlin.Testing import Flag
    from Merlin.Testing.Delegate import Base, BaseDerivedDelegate, ClassWithTargetMethods, Derived, DerivedBaseDelegate
    b, d = Base(), Derived()
    target = ClassWithTargetMethods()
    x = BaseDerivedDelegate(target.MDerivedBase)
    x(d)
    Flag.Check(345)
    self.assertRaises(TypeError, lambda: x(b))
    x = DerivedBaseDelegate(target.MBaseDerivedReturnNull)
    x(d)
    Flag.Check(678)
    x = DerivedBaseDelegate(target.MBaseDerived)
    self.assertRaises(TypeError, lambda: x(d))
    self.assertRaises(TypeError, lambda: x(b))