public virtual void Rollback(ArrayList snapshot) { this.marker = (Int32)snapshot[0]; snapshot.RemoveAt(0); if (this.marker == MarkerStart) { ResetMarker(); return; } else if ((this.marker == -1) || children.Count == 0) { return; } if (this.marker <= MarkerStart) { return; } int numChildren = children.Count; for (int i = this.marker + 1; i < numChildren; i++) { FONode fo = (FONode)children[i]; fo.ResetMarker(); } ((FONode)children[this.marker]).Rollback(snapshot); }