/// <summary>
        /// Compares the value of this instance to a specified <see cref="ZonedDateTime"/> value and returns an integer
        /// that indicates whether this instance is earlier than, the same as, or later than the specified
        /// DateTime value.
        /// </summary>
        /// <param name="other">The object to compare to the current instance.</param>
        /// <returns>A signed number indicating the relative values of this instance and the value parameter.</returns>
        public int CompareTo(ZonedDateTime other)
        {
            if (ReferenceEquals(this, other))
            {
                return(0);
            }
            if (other is null)
            {
                return(1);
            }
            var thisEpochSeconds  = this.ToEpochSeconds() - OffsetSeconds;
            var otherEpochSeconds = other.ToEpochSeconds() - other.OffsetSeconds;
            var epochComparison   = thisEpochSeconds.CompareTo(otherEpochSeconds);

            if (epochComparison != 0)
            {
                return(epochComparison);
            }
            return(Nanosecond.CompareTo(other.Nanosecond));
        }