/// <summary>
        /// Initializes a new instance of the <see cref="TrimLineOperation"/> class
        /// using the data read from persistent storage.
        /// </summary>
        /// <param name="editDeserializer">The mechanism for reading back content.</param>
        internal TrimLineOperation(EditDeserializer editDeserializer)
            : base(editDeserializer)
        {
            m_Lines = editDeserializer.ReadFeatureRefArray<LineFeature>(this, DataField.Lines);
            m_Points = editDeserializer.ReadFeatureRefArray<PointFeature>(this, DataField.Points);

            ProcessFeatures(null);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TrimLineOperation"/> class
        /// using the data read from persistent storage.
        /// </summary>
        /// <param name="editDeserializer">The mechanism for reading back content.</param>
        internal TrimLineOperation(EditDeserializer editDeserializer)
            : base(editDeserializer)
        {
            m_Lines  = editDeserializer.ReadFeatureRefArray <LineFeature>(this, DataField.Lines);
            m_Points = editDeserializer.ReadFeatureRefArray <PointFeature>(this, DataField.Points);

            ProcessFeatures(null);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DeletionOperation"/> class
        /// using the data read from persistent storage.
        /// </summary>
        /// <param name="editDeserializer">The mechanism for reading back content.</param>
        internal DeletionOperation(EditDeserializer editDeserializer)
            : base(editDeserializer)
        {
            try
            {
                Feature[] dels = editDeserializer.ReadFeatureRefArray<Feature>(this, DataField.Delete);
                m_Deletions = new List<Feature>(dels);

                // Deactivate features (means they will never make it into the spatial index, and
                // any lines will be invisible as far as intersection tests are concerned).
                DeserializationFactory dff = new DeserializationFactory(this);
                ProcessFeatures(dff);
            }

            catch (Exception ex)
            {
                throw new ApplicationException("Error loading edit " + this.EditSequence, ex);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DeletionOperation"/> class
        /// using the data read from persistent storage.
        /// </summary>
        /// <param name="editDeserializer">The mechanism for reading back content.</param>
        internal DeletionOperation(EditDeserializer editDeserializer)
            : base(editDeserializer)
        {
            try
            {
                Feature[] dels = editDeserializer.ReadFeatureRefArray <Feature>(this, DataField.Delete);
                m_Deletions = new List <Feature>(dels);

                // Deactivate features (means they will never make it into the spatial index, and
                // any lines will be invisible as far as intersection tests are concerned).
                DeserializationFactory dff = new DeserializationFactory(this);
                ProcessFeatures(dff);
            }

            catch (Exception ex)
            {
                throw new ApplicationException("Error loading edit " + this.EditSequence, ex);
            }
        }