public bool MoveNext() { iter = iter + 1; if (iter >= parent.Count) { return(false); } currentElem = parent.Random(); Contract.Assume(parent.Contains(currentElem) && !currentSet.Contains(currentElem)); currentSet.Add(currentElem); return(true); }