title: What does Queue<T> actually implement
body: <p>While attempting to implement my own Queue by wrapping  the generic Queue, I noticed that Queue implements ICollection. However, the method signature of ICollection.CopyTo is as follows</p>
  
  <pre><code>void CopyTo(
      Array array,
      int index)
  </code></pre>
  
  <p>Whereas the method signature of the generic Queue.CopyTo is </p>
  
  <pre><code>public void CopyTo(
      T[] array, 
      int arrayIndex)
  </code></pre>
  
  <p>This is the same as the signature of the generic version of ICollection.CopyTo. My confusion comes from the fact that the generic queue doesn't seem to implement the generic ICollection, but instead implements the standard ICollection. So what exactly is going on here?</p>