/// <summary>
 /// Returns <c>true</c> if and only if this timestamp is less than or equal to the <paramref name="other"/>
 /// timestamp.
 /// </summary>
 /// <param name="other">The other timestamp.</param>
 /// <returns><c>true</c> if and only if <c>this</c> is less than or equal to <c>other</c>.</returns>
 public bool LessThan(IterationIn <TTime> other)
 {
     if (this.iteration <= other.iteration)
     {
         return(this.outerTime.LessThan(other.outerTime));
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// Compares this timestamp with the <paramref name="other"/> timestamp.
        /// </summary>
        /// <param name="other">The other timestamp.</param>
        /// <returns>A value that indicates the relative order of the objects being compared.</returns>
        public int CompareTo(IterationIn <TTime> other)
        {
            var sCompare = this.outerTime.CompareTo(other.outerTime);

            if (sCompare != 0)
            {
                return(sCompare);
            }
            else
            {
                return(this.iteration - other.iteration);
            }
        }
 /// <summary>
 /// Returns the earlier of this and the <paramref name="other"/> timestamps.
 /// </summary>
 /// <param name="other">The other timestamps.</param>
 /// <returns>The earlier of this and the <paramref name="other"/> timestamps.</returns>
 public IterationIn <TTime> Meet(IterationIn <TTime> other)
 {
     return(new IterationIn <TTime>(this.outerTime.Meet(other.outerTime), Math.Min(this.iteration, other.iteration)));
 }
 /// <summary>
 /// Returns the later of this and the <paramref name="other"/> timestamps.
 /// </summary>
 /// <param name="other">The other timestamp.</param>
 /// <returns>The later of this and the <paramref name="other"/> timestamps.</returns>
 public IterationIn <TTime> Join(IterationIn <TTime> other)
 {
     return(new IterationIn <TTime>(this.outerTime.Join(other.outerTime), Math.Max(this.iteration, other.iteration)));
 }
 /// <summary>
 /// Returns <c>true</c> if and only if this timestamp is equal to the <paramref name="other"/>
 /// timestamp.
 /// </summary>
 /// <param name="other">The other timestamp.</param>
 /// <returns><c>true</c> if and only if <c>this</c> is equal to <c>other</c>.</returns>
 public bool Equals(IterationIn <TTime> other)
 {
     return(this.iteration == other.iteration && this.outerTime.Equals(other.outerTime));
 }