/// <summary>
        /// Compares the current object with another object of the same type.
        /// </summary>
        /// <param name="other">An object to compare with this object.</param>
        /// <returns>A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has the following meanings: Value Meaning Less than zero This object is less than the <paramref name="other"/> parameter.Zero This object is equal to <paramref name="other"/>. Greater than zero This object is greater than <paramref name="other"/>.</returns>
        public int CompareTo(StoreStatus <TStatus> other)
        {
            if (other == null)
            {
                return(1);
            }

            if (this.isEmpty)
            {
                if (other.isEmpty)
                {
                    return(0);
                }

                return(-1);
            }

            if (other.isEmpty)
            {
                return(1);
            }

            return(this.Status.CompareTo(other.Status));
        }