public void Run() { if (this.enumerator.MoveNext()) { CountedSet <TValue> .Node current = this.enumerator.Current; if (current.Release()) { this.s.totalRetains--; this.count++; this.Run(); this.dict.Remove(current.v); this.s.nodeCount--; this.array[this.count--] = current.v; } else { this.s.totalRetains--; } } else { this.Dispose(); if (this.count > 0) { this.array = new TValue[this.count]; } this.count--; } }
public void Run() { if (!this.enumerator.MoveNext()) { this.Dispose(); if (this.count > 0) { this.array = new TValue[this.count]; } CountedSet <TValue> .ReleaseRecursor releaseRecursor = this; releaseRecursor.count = releaseRecursor.count - 1; } else { CountedSet <TValue> .Node current = this.enumerator.Current; if (!current.Release()) { CountedSet <TValue> tValues = this.s; tValues.totalRetains = tValues.totalRetains - 1; } else { CountedSet <TValue> tValues1 = this.s; tValues1.totalRetains = tValues1.totalRetains - 1; CountedSet <TValue> .ReleaseRecursor releaseRecursor1 = this; releaseRecursor1.count = releaseRecursor1.count + 1; this.Run(); this.dict.Remove(current.v); CountedSet <TValue> tValues2 = this.s; tValues2.nodeCount = tValues2.nodeCount - 1; TValue[] tValueArray = this.array; CountedSet <TValue> .ReleaseRecursor releaseRecursor2 = this; int num = releaseRecursor2.count; int num1 = num; releaseRecursor2.count = num - 1; tValueArray[num1] = current.v; } } }