It's probably a good idea to check with the implementation of kernel/common/array.rb to see how the coercion protocol is handled there.