def METHOD_NAME(self: 'Bit', other: tp.Union['Bit', bool]) -> 'Bit':
    if isinstance(other, Bit):
        return fn(self, other)
    try:
        other = Bit(other)
    except TypeError:
        return NotImplemented
    return fn(self, other)