On page 221 of the Pickaxe in table 18.4 if I'm interpreting it correctly, 
you should be able to overload the '!' operator (since there is a 
checkmark to the left) but the interpreter 
complains when I try:

class Foo
  def !()
    #...
  end
end

I notice that the '~' operator is overloadable and it works as I would 
expect, so that I can say:

a = MyObj.new
~a

Phil