private void AddIter(InternalTransaction txNew)
{
BucketSet headBucketSet = this.headBucketSet;
while (headBucketSet.AbsoluteTimeout != txNew.AbsoluteTimeout)
{
BucketSet set3 = null;
do
{
WeakReference nextSetWeak = (WeakReference)headBucketSet.nextSetWeak;
BucketSet target = null;
if (nextSetWeak != null)
{
target = (BucketSet)nextSetWeak.Target;
}
if (target == null)
{
BucketSet set6 = new BucketSet(this, txNew.AbsoluteTimeout);
WeakReference reference5 = new WeakReference(set6);
WeakReference reference4 = (WeakReference)Interlocked.CompareExchange(ref headBucketSet.nextSetWeak, reference5, nextSetWeak);
if (reference4 == nextSetWeak)
{
set6.prevSet = headBucketSet;
}
}
else
{
set3 = headBucketSet;
headBucketSet = target;
}
}while (headBucketSet.AbsoluteTimeout > txNew.AbsoluteTimeout);
if (headBucketSet.AbsoluteTimeout != txNew.AbsoluteTimeout)
{
BucketSet set2 = new BucketSet(this, txNew.AbsoluteTimeout);
WeakReference reference3 = new WeakReference(set2);
set2.nextSetWeak = set3.nextSetWeak;
WeakReference reference2 = (WeakReference)Interlocked.CompareExchange(ref set3.nextSetWeak, reference3, set2.nextSetWeak);
if (reference2 == set2.nextSetWeak)
{
if (reference2 != null)
{
BucketSet set5 = (BucketSet)reference2.Target;
if (set5 != null)
{
set5.prevSet = set2;
}
}
set2.prevSet = headBucketSet;
}
headBucketSet = set3;
set3 = null;
}
}
headBucketSet.Add(txNew);
}