Given a hash, h1, will the following always hold? keys, values = h1.keys, h1.values h2 = Hash.make (keys,values) # Hash::make is user defined h1 == h2 More than equality, I'm interested in the sequence of values returned by Hash#keys and Hash#values. Is this sequence deterministic and the same? Is this order the same as that obtained when one #inspects a hash? Simple testing seems to indicate so. Thanks, Raja p.s. is there a way to override a class method like Hash.new -without- sub-classing? It appears that class methods can't be aliased hence redefinition of something like Hash.new doesn't seem possible?