// ----------------------------------------------------------------------
        // Copy history
        public void CopyFrom(iCS_NavigationHistory from)
        {
            // Copy cursor
            myCursor = from.myCursor;
            // Adjust size
            int fromLen = from.myMementos.Count;
            int toLen   = myMementos.Count;

            if (toLen > fromLen)
            {
                myMementos.RemoveRange(fromLen, toLen - fromLen);
            }
            myMementos.Capacity = fromLen;
            // Copy each memento
            for (int i = 0; i < fromLen; ++i)
            {
                if (i < myMementos.Count)
                {
                    myMementos[i].CopyFrom(from.myMementos[i]);
                }
                else
                {
                    myMementos.Add(from.myMementos[i].Clone());
                }
            }
        }
 // ----------------------------------------------------------------------
 // Equivalence operator
 public bool IsEquivalentTo(iCS_NavigationHistory other)
 {
     if (myCursor != other.myCursor)
     {
         return(false);
     }
     for (int i = 0; i < myCursor; ++i)
     {
         if (!myMementos[i].IsEquivalentTo(other.myMementos[i]))
         {
             return(false);
         }
     }
     return(true);
 }