Folk, I have a class which delegates for Integer, and wants to behave as much like a real Integer as possible (except for being able to be subclassed). It *mostly* works... but falls foul of Ruby's various hacks, errors, and internal optimisations in the Fixnum and Hash classes. In particular, the Hash implementations work (and break!) differently in MRI, Rubinius and JRuby. It's documented to use only #hash and #eql?, but that's not always true (sometimes these have hard-wired optimsations). The Hash documentation does not say whether #eql? will be called only on items in the hash, or only on keys being used to probe the hash. It should be one or the other, since a.eql?(b) might not always mean b.eql?(a). Please peruse this code: <https://gist.github.com/906998>, try it on the various Ruby versions, and also try it with the Fixnum monkey-patches removed. You'll see that the behaviour is very unpredictable. Clifford Heath.