This is my understanding of the customary use of coerce: it is a request 
to convert the receiver into the same type as the argument:

x.coerce(y)

is asking x to return a copy of itself that is the same class as y. I 
understand that the return value is an array: [y1, x1].

What if x cannot be represented in the same class as y, but both could 
be represented in a third class? Is it acceptable to return [y1, x1] 
such that both objects have been rendered in a third class?

What if nothing can be done? Is it customary to raise an exception, or 
return something like [y, nil]?

I'm working on implementing #coerce in my Oracle library, and I want to 
make sure I do it the Ruby Way as much as possible.