What does this mean? Anonymous for-iterator
<p>I'm looking at the decompiled source of some of the <code>System.Collections.Concurrent</code> class (Framework 4.0). I see code like this in a number of places:</p>

<pre><code>for (int index = 0; index &lt; buckets.Length; ++index)
{
    for (
            ConcurrentDictionary&lt;TKey, TValue&gt;.Node node1 = buckets[index]; 
            node1 != null; 
            {
                ConcurrentDictionary&lt;TKey, TValue&gt;.Node node2;
                node1 = node2;
            })
    {
        node2 = node1.m_next;
        int bucketNo;
        int lockNo;
        this.GetBucketAndLockNo(
            node1.m_hashcode, 
            out bucketNo, 
            out lockNo, 
            nodeArray.Length);
        nodeArray[bucketNo] = new ConcurrentDictionary&lt;TKey, TValue&gt;.Node(
            node1.m_key, 
            node1.m_value, 
            node1.m_hashcode, 
            nodeArray[bucketNo]);
        checked { ++numArray[lockNo]; }
    }
}
</code></pre>

<p>Can someone explain what is going on with the for-iterator?  (I mean the piece that reads</p>

<pre><code>{
    ConcurrentDictionary&lt;TKey, TValue&gt;.Node node2;
    node1 = node2;
}
</code></pre>

<p>I looked at the C# Language Specification for 4.0 but honestly don't have the skill of reading these things and would appreciate any clarity that someone can provide, especially in which language version this functionality became possible.</p>
