/// <summary>
 /// Returns <c>true</c> if <paramref name="left"/> has a value that is less than the value of <paramref name="right"/>.
 /// </summary>
 /// <param name="left">A value of type <typeparamref name="T"/> or <c>null</c>.</param>
 /// <param name="right">A value of type <typeparamref name="T"/> or <c>null</c>.</param>
 /// <returns><c>true</c> if <paramref name="left"/> has a value that is less than the value of <paramref name="right"/>; otherwise, <c>false</c>.</returns>
 public static bool operator <(ComparableBaseWithOperators <T> left, ComparableBaseWithOperators <T> right)
 {
     Contract.Assume(DefaultComparer != null);
     return(ComparableImplementations.ImplementOpLessThan(DefaultComparer, (T)left, (T)right));
 }
 /// <summary>
 /// Returns <c>true</c> if <paramref name="left"/> has a value that is less than the value of <paramref name="right"/>.
 /// </summary>
 /// <param name="left">A value of type <typeparamref name="T"/> or <c>null</c>.</param>
 /// <param name="right">A value of type <typeparamref name="T"/> or <c>null</c>.</param>
 /// <returns><c>true</c> if <paramref name="left"/> has a value that is less than the value of <paramref name="right"/>; otherwise, <c>false</c>.</returns>
 public static bool operator <(ComparableBaseWithOperators <T> left, ComparableBaseWithOperators <T> right) =>
 ComparableImplementations.ImplementOpLessThan(DefaultComparer, (T)left, (T)right);