/// <summary>
 /// Divide the Rights
 /// For numeric values the behaviour is to divide the Rights (lhs / rhs)
 /// For Lst values the behaviour is to divide all combinations of values in both lists
 /// to produce a new list
 /// Otherwise if the R type derives from IDivisible then the behaviour
 /// is to call lhs.Divide(rhs);
 /// </summary>
 /// <typeparam name="L">Left</typeparam>
 /// <typeparam name="R">Right</typeparam>
 /// <param name="lhs">Left-hand side of the operation</param>
 /// <param name="rhs">Right-hand side of the operation</param>
 /// <returns>lhs / rhs</returns>
 public static EitherUnsafe <L, R> divide <L, R>(EitherUnsafe <L, R> lhs, EitherUnsafe <L, R> rhs) =>
 lhs.Divide(rhs);