// Address of the IEnumString pointer variable that receives the interface
 // pointer to the enumeration object. If the method is unsuccessful, the
 // value of this output variable is undefined.
 /// <summary>
 ///   This method creates another enumerator that contains the same enumeration state as the current one. 
 ///   Using this function, a client can record a particular point in the enumeration sequence and return to 
 ///   that point at a later time. The new enumerator supports the same interface as the original one.
 /// </summary>
 public void Clone(
     out UCOMIEnumString ppenum)
 {
     SourceCustomList clone = new SourceCustomList();
       clone.currentPosition = currentPosition;
       clone.StringList = (String[])StringList.Clone();
       ppenum = clone;
 }
        /// <summary>
        ///   This method creates another enumerator that contains the same enumeration state as the current one.
        ///   Using this function, a client can record a particular point in the enumeration sequence and return to
        ///   that point at a later time. The new enumerator supports the same interface as the original one.
        /// </summary>
        public void Clone(
            out UCOMIEnumString ppenum) // Address of the IEnumString pointer variable that receives the interface
        // pointer to the enumeration object. If the method is unsuccessful, the
        // value of this output variable is undefined.
        {
            SourceCustomList clone = new SourceCustomList();

            clone.currentPosition = currentPosition;
            clone.StringList      = (String[])StringList.Clone();
            ppenum = clone;
        }