public int GetHashCode(ComparableStruct <TMember> obj)
        {
            var setter   = _memberComparer as IHashSeedSetter;
            var combiner = HashCodeCombiner.Start();

            setter?.SetHashSeed(combiner.CombinedHash);
            combiner.CombineObjects(obj.Field is null ? 0 : _memberComparer.GetHashCode(obj.Field));

            setter?.SetHashSeed(combiner.CombinedHash);
            return(combiner.CombineObjects(obj.Property is null ? 0 : _memberComparer.GetHashCode(obj.Property)));
        }
        public bool Equals(ComparableStruct <TMember> x, ComparableStruct <TMember> y)
        {
            var compare = _memberComparer.Equals(x.Field, y.Field);

            if (!compare)
            {
                return(false);
            }

            return(_memberComparer.Equals(x.Property, y.Property));
        }