/// <summary>
 /// Checks if the left and right hand side are equal.
 /// </summary>
 /// <typeparam name="TLeft">The type of the left hand side.</typeparam>
 /// <typeparam name="TRight">The type of the right hand side.</typeparam>
 /// <param name="left">The left hand side parameter.</param>
 /// <param name="right">The right hand side parameter.</param>
 /// <returns>True if equal, otherwise false.</returns>
 internal static bool Equal <TLeft, TRight>(TLeft left, TRight right) =>
 EqualImplementation <TLeft, TRight> .Invoke(left, right);
 /// <summary>
 /// Checks if the left and right hand side are equal.
 /// </summary>
 /// <typeparam name="T">The type of both the left and right hand side.</typeparam>
 /// <param name="left">The left hand side parameter.</param>
 /// <param name="right">The right hand side parameter.</param>
 /// <returns>True if equal, otherwise false.</returns>
 internal static bool Equal <T>(T left, T right) => EqualImplementation <T, T> .Invoke(left, right);