>If we don't have to, I'd rather we not add language specific versions of methods to Rubinius specific namespaces. We should keep a single version, or having explicit versions.

Uh I don't understand what you mean, there are -18.rb and -19.rb files for that purpose.
What I wanted to achieve is having a single #initialize implementation in kernel/common/array.rb (without duplicating it into -18.rb and -19.rb), thus having one Rubinius::Type.object_respond_to? with different behavior in 18 and 19 mode. If you think there's a better way to do it, I'm all ears. :)
Also, default args don't work with primitives invocation, that's why I came up with the __ in front of the method as a workaround. Might be a bug?

>Does the to_ary logic have different handling for 1.8 and 1.9 mode? As in, does it needs to call privates in one but not the other?

Yes, that's right.

Thanks for assisting me with this tricky patch.