title: Primitive types and IN operator
body: <p>I use the <code>in</code> operator in groovy very much. But now I found an odd behavior.<br>
  See the following script.</p>
  
  <pre><code>int x = 1
  long y = 1
  
  println "x == y           " + (x == y)           // true
  println "x == new Long(y) " + (x == new Long(y)) // true
  println "x in [y]         " + (x in [y])         // false Why?
  println "[y].contains(x)  " + [y].contains(x)    // false Why?
  </code></pre>
  
  <p>The <code>in</code> operator or the <code>contains()</code> return <code>false</code>, although the two numbers are equal. But why? </p>
  
  <p>I've learned that a collection can't contain primitive types, but <code>x == new Long(y)</code> is true.</p>