+
+ /// <inheritdoc/>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public override int GetHashCode() => (State.GetHashCode() * 397) ^ Value.GetHashCode();
+
+
+ /// <summary>
+ /// Compares whether the two StateValuePair are different or not.
+ /// </summary>
+ /// <param name="lhs">A <see cref="StateValuePair{T}"/> on the left hand side.</param>
+ /// <param name="rhs">A <see cref="StateValuePair{T}"/> on the right hand side.</param>
+ /// <returns>true if the StateValuePair are equal; otherwise, false.</returns>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static bool operator ==(StateValuePair<T> lhs, StateValuePair<T> rhs) => lhs.Equals(rhs);
+
+ /// <summary>
+ /// Compares whether the two StateValuePair are same or not.
+ /// </summary>
+ /// <param name="lhs">A <see cref="StateValuePair{T}"/> on the left hand side.</param>
+ /// <param name="rhs">A <see cref="StateValuePair{T}"/> on the right hand side.</param>
+ /// <returns>true if the StateValuePair are not equal; otherwise, false.</returns>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static bool operator !=(StateValuePair<T> lhs, StateValuePair<T> rhs) => !(lhs == rhs);
+
+ /// <inheritdoc/>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public override string ToString() => $"[{State}, {Value}]";