Interfaces

public interface IComparable {int  CompareTo(object obj );} 
public interface IComparable<in T> { int CompareTo(	T other ); }

public interface IComparer { int Compare( object x, object y); } 
public interface IComparer<in T> { int Compare( T x, T y); }

// https://msdn.microsoft.com/en-us/library/s793z9y2(v=vs.110).aspx
public interface IEnumerable<out T> : IEnumerable
{ 
  IEnumerator<T> GetEnumerator();
}  

// https://msdn.microsoft.com/en-us/library/78dfe2yb(v=vs.110).aspx
public interface IEnumerator<out T> : IDisposable, IEnumerator  {  
  bool MoveNext();  
  T Current { get; }
}