In Ruby 1.8, Array#sort had special-cased logic for Fixnum and String, and did not actually dispatch to their methods. In Ruby 1.9, it does dispatch if those methods have been overridden. We must honor this behavior.
Along with this we will need a fast way to check whether a method on a target class has been overridden, so we can quickly determine whether to try a full dispatch or not. This will have applicability to other bugs.
At any rate, getting the basic behavior in comes first.