This change addresses this situation:

    class A
      private

      def to_ary
        [1, 2]
      end
    end

    a, b = A.new
    # => NoMethodError #to_ary etc.
    # While it should assign 1 and 2 to a and b, respectively

`Dispatch::send/4` gets called here: https://github.com/rubinius/rubinius/blob/master/vm/builtin/array.cpp#L100
Another way to solve this without changing `Dispatch::send/4` so drastically is to create the same `LookupData` object in `Array::to_ary` and passing it to `Dispatch::send/5`.