title: Why IList<T> extends both IEnumerable<T> and IEnumerable interfaces?
body: <p>This is how looks <code>IList&lt;T&gt;</code> generic interface</p>
  
  <pre><code>public interface IList&lt;T&gt; : ICollection&lt;T&gt;, IEnumerable&lt;T&gt;, IEnumerable
  {
      T this[int index] { get; set; }
  
      int IndexOf(T item);
  
      void RemoveAt(int index);
  }
  </code></pre>
  
  <p>Why <code>IList&lt;T&gt;</code> extends both <code>IEnumerable&lt;T&gt;</code> and <code>IEnumerable</code> interfaces?</p>
  
  <p><code>IEnumerable&lt;T&gt;</code> already have <code>IEnumerable</code>. Same thing is with <code>ICollection&lt;T&gt;</code> interface.</p>