title: How does Ruby's Array.| compare elements for equality?
body: <p>Here's some example code: </p>
  
  <pre><code>class Obj
    attr :c, true
  
    def == that
      p '=='
      that.c == self.c
    end
    def &lt;=&gt; that
      p '&lt;=&gt;'
      that.c &lt;=&gt; self.c
    end
    def equal? that
      p 'equal?'
      that.c.equal? self.c
    end
    def eql? that
      p 'eql?'
      that.c.eql? self.c
    end
  end
  
  a = Obj.new
  b = Obj.new
  
  a.c = 1
  b.c = 1
  
  p [a] | [b]
  </code></pre>
  
  <p>It prints 2 objects but it should print 1 object. None of the comparison methods get called. How is Array.| comparing for equality?</p>