class Not
def initialize(obj)
@obj = obj
end
def __getobj__
@obj
end
def __setobj__(obj)
@obj = obj
end
def method_missing(*splat)
not @obj.__send__(*splat)
end
end
class Object
def not
Not.new(self)
end
end
>> [].not.empty?
=> false
>> [1].not.empty?
=> true
>> [].not.not.empty?
=> true