public virtual IEnumerator ExecuteSnapshot() { QQueryBase.CreateCandidateCollectionResult r = CreateCandidateCollection(); Collection4 executionPath = ExecutionPath(r); IEnumerator candidatesIterator = new Iterator4Impl(r.candidateCollection); Collection4 snapshots = new Collection4(); while (candidatesIterator.MoveNext()) { QCandidates candidates = (QCandidates)candidatesIterator.Current; snapshots.Add(candidates.ExecuteSnapshot(executionPath)); } IEnumerator snapshotsIterator = snapshots.GetEnumerator(); CompositeIterator4 resultingIDs = new CompositeIterator4(snapshotsIterator); if (!r.checkDuplicates) { return(resultingIDs); } return(CheckDuplicates(resultingIDs)); }