def METHOD_NAME(self):
    def get_dead_weakref():
        class C: pass
        a = C()
        x = _weakref.proxy(a)
        del(a)
        return x
    wr = get_dead_weakref()
    # Uncomment the next line after fixing merlin#243506
    # type(wr).__add__.__get__(wr, None) # no exception
    try:
        type(wr).__add__.__get__(wr, None)() # object is dead, should throw
    except: pass
    else: self.fail("Unreachable code reached")
    # kwarg call
    class C:
        def __add__(self, other):
            return "abc" + other
    a = C()
    x = _weakref.proxy(a)
    if is_cli:      # cli accepts kw-args everywhere
        res = type(x).__add__.__get__(x, None)(other = 'xyz')
        self.assertEqual(res, "abcxyz")
    res = type(x).__add__.__get__(x, None)('xyz') # test success-case without keyword args
    self.assertEqual(res, "abcxyz")
    # calling non-existent method should raise attribute error
    try:
        type(x).__sub__.__get(x, None)('abc')
    except AttributeError: pass
    else: self.fail("Unreachable code reached")
    if is_cli:      # cli accepts kw-args everywhere
        # calling non-existent method should raise attribute error (kw-arg version)
        try:
            type(x).__sub__.__get(x, None)(other='abc')
        except AttributeError: pass
        else: self.fail("Unreachable code reached")