Index: tests/collections/.expect/queue.txt
===================================================================
--- tests/collections/.expect/queue.txt	(revision 62a7cc0ac31873baa3923dd92c537b60b4a3eac1)
+++ tests/collections/.expect/queue.txt	(revision 3e36f220446a0d1e743455b46dfab6d5d0e40c19)
@@ -16,6 +16,9 @@
 0 0 2 2 4 4 6 6 8 8 10 10 12 12 14 14 16 16 18 18 
 18 18 
--1 18 -1
+-1 18 -2
+-1 -1 18 18 1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 19 19 -2 -2 
 18 18 1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 
+18 18 1 1 3 3 5 5 7 7 
+empty
 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 
 5 5 6 6 7 7 8 8 9 9 
Index: tests/collections/.expect/sequence.txt
===================================================================
--- tests/collections/.expect/sequence.txt	(revision 62a7cc0ac31873baa3923dd92c537b60b4a3eac1)
+++ tests/collections/.expect/sequence.txt	(revision 3e36f220446a0d1e743455b46dfab6d5d0e40c19)
@@ -19,6 +19,9 @@
 0 0 2 2 4 4 6 6 8 8 10 10 12 12 14 14 16 16 18 18 
 18 18 
--1 18 -1
+-1 18 -2
+-1 -1 18 18 1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 19 19 -2 -2 
 18 18 1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 
+18 18 1 1 3 3 5 5 7 7 
+empty
 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 
 5 5 6 6 7 7 8 8 9 9 
Index: tests/collections/multi_list.cfa
===================================================================
--- tests/collections/multi_list.cfa	(revision 62a7cc0ac31873baa3923dd92c537b60b4a3eac1)
+++ tests/collections/multi_list.cfa	(revision 3e36f220446a0d1e743455b46dfab6d5d0e40c19)
@@ -73,15 +73,15 @@
 
 	sout | nlOff;
-	for ( over( sqiter, clustList ); sqiter >> dl; ) {	// print lists
+	for ( over( sqiter, clustList ); sqiter | dl; ) {	// print lists
 		Task & tmp = task( dl ); sout | tmp.id;
 		// sout | task( dl ).id;
 	}
 	sout | nl;
-	for ( over( sqiter, readyList ); sqiter >> dl; ) {
+	for ( over( sqiter, readyList ); sqiter | dl; ) {
 		Task & tmp = task( dl ); sout | tmp.id;
 		// sout | task( dl ).id;
 	}
 	sout | nl;
-	for ( QueueIter(TaskSL) qiter = { mutexList }; qiter >> sl; ) {	// print lists
+	for ( QueueIter(TaskSL) qiter = { mutexList }; qiter | sl; ) {	// print lists
 		Task & tmp = task( sl ); sout | tmp.id;
 		// sout | task( sl ).id;
@@ -103,5 +103,5 @@
 		push( mutexStack, task.clusterRef );			// insert on lists in opposite directions
 	}
-	for ( StackIter(TaskDL) stiter = { mutexStack }; stiter >> dl; ) {
+	for ( StackIter(TaskDL) stiter = { mutexStack }; stiter | dl; ) {
 		Task & tmp = task( dl ); sout | tmp.id;
 		// sout | task( dl ).id;
Index: tests/collections/queue.cfa
===================================================================
--- tests/collections/queue.cfa	(revision 62a7cc0ac31873baa3923dd92c537b60b4a3eac1)
+++ tests/collections/queue.cfa	(revision 3e36f220446a0d1e743455b46dfab6d5d0e40c19)
@@ -19,10 +19,10 @@
 
 	Queue(Fred) fred;
-	QueueIter(Fred) fredIter = { fred };
+	QueueIter(Fred) iter = { fred };
 	Fred & f;
 
 	sout | nlOff;										// turn off auto newline
 
-	for ( ; fredIter >> f; ) {							// empty list
+	for ( ; iter | f; ) {							// empty list
 		sout | f.i | ' ';
 	}
@@ -35,5 +35,5 @@
 	sout | head( fred ).i | tail( fred ).i | nl;
 
-	for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
+	for ( QueueIter(Fred) iter = { fred }; iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -44,5 +44,5 @@
 	}
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -58,5 +58,6 @@
 
 	sout | head( fred ).i | succ( fred, head )->i | tail( fred ).i | nl;
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -68,5 +69,5 @@
 	delete( &dropTail( fred ) );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -76,13 +77,13 @@
 		delete( &dropTail( fred ) );
 	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, fred ); iter | f; ) {
 		delete( &remove( fred, f ) );
 	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -96,5 +97,5 @@
 		}
 	}
-	for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
+	for ( QueueIter(Fred) iter = { fred }; iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -105,10 +106,10 @@
 	split( fred2, fred, middle );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred2 ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, fred2 ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -117,10 +118,10 @@
 	transfer( fred, fred2 );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, fred ); iter | f; ) {
 		delete( &f );
 	}
@@ -142,8 +143,8 @@
 
 	Queue(Mary) mary;
-	QueueIter(Mary) maryIter = { mary };
+	QueueIter(Mary) iter = { mary };
 	Mary & m;
 
-	for ( ; maryIter >> m; ) {							// empty list
+	for ( ; iter | m; ) {							// empty list
 		sout | m.i | m.j | ' ';
 	}
@@ -156,5 +157,5 @@
 	sout | head( mary ).i | tail( mary ).i | nl;
 
-	for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
+	for ( QueueIter(Mary) iter = { mary }; iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -165,5 +166,5 @@
 	}
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -174,8 +175,15 @@
 	}
 
-	Mary * head = new( -1 ), tail = { -1 };
+	Mary * head = new( -1 ), tail = { -2 };
 	addHead( mary, *head );
 	addTail( mary, tail );
+
 	sout | head( mary ).i | succ( mary, head )->i | tail( mary ).i | nl;
+
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
 	remove( mary, *head );
 	remove( mary, tail );
@@ -183,12 +191,24 @@
 	delete( &dropTail( mary ) );
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
+	for ( i; 5 ) {
+		delete( &dropTail( mary ) );
+	}
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, mary ); iter | m; ) {
 		delete( &remove( mary, m ) );
 	}
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | "empty" | nl;
 
 	Mary & middle;
@@ -199,5 +219,5 @@
 		}
 	}
-	for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
+	for ( QueueIter(Mary) iter = { mary }; iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -208,9 +228,9 @@
 	split( mary2, mary, middle );
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	for ( over( maryIter, mary2 ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+	for ( over( iter, mary2 ); iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -219,9 +239,10 @@
 	transfer( mary, mary2 );
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, mary ); iter | m; ) {
 		delete( &m );
 	}
Index: tests/collections/sequence.cfa
===================================================================
--- tests/collections/sequence.cfa	(revision 62a7cc0ac31873baa3923dd92c537b60b4a3eac1)
+++ tests/collections/sequence.cfa	(revision 3e36f220446a0d1e743455b46dfab6d5d0e40c19)
@@ -22,10 +22,10 @@
 
 	Sequence(Fred) fred;
-	SeqIter(Fred) fredIter = { fred };
+	SeqIter(Fred) iter = { fred };
 	Fred & f;
 
 	sout | nlOff;										// turn off auto newline
 
-	for ( ; fredIter >> f; ) {							// empty list
+	for ( ; iter | f; ) {							// empty list
 		sout | f.i | ' ';
 	}
@@ -38,5 +38,5 @@
 	sout | head( fred ).i | tail( fred ).i | nl;
 
-	for ( SeqIter(Fred) iter = { fred }; iter >> f; ) {
+	for ( SeqIter(Fred) iter = { fred }; iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -47,5 +47,5 @@
 	}
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -61,5 +61,6 @@
 
 	sout | head( fred ).i | succ( fred, head )->i | tail( fred ).i | nl;
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -71,5 +72,5 @@
 	delete( &dropTail( fred ) );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -79,13 +80,13 @@
 		delete( &dropTail( fred ) );
 	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, fred ); iter | f; ) {
 		delete( &remove( fred, f ) );
 	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -94,10 +95,10 @@
 	Fred & middle;
 	for ( i; 10 ) {
-		addHead( fred, *new( i ) );						// reverse oder
+		addHead( fred, *new( i ) );						// reverse order
 		if ( i == 5 ) {
 			&middle = &head( fred );
 		}
 	}
-	for ( SeqIterRev(Fred) iter = { fred }; iter >> f; ) {
+	for ( SeqIterRev(Fred) riter = { fred }; riter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -109,5 +110,5 @@
 
 	sout | head( fred ).i | succ( fred, head )->i | tail( fred ).i | nl;
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -119,5 +120,5 @@
 	delete( &dropTail( fred ) );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -128,10 +129,10 @@
 	split( fred2, fred, middle );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred2 ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, fred2 ); iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -140,10 +141,10 @@
 	transfer( fred, fred2 );
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( iter, fred ); iter | f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, fred ); iter | f; ) {
 		delete( &f );
 	}
@@ -168,8 +169,8 @@
 
 	Sequence(Mary) mary;
-	SeqIter(Mary) maryIter = { mary };
+	SeqIter(Mary) iter = { mary };
 	Mary & m;
 
-	for ( ; maryIter >> m; ) {							// empty list
+	for ( ; iter | m; ) {							// empty list
 		sout | m.i | m.j | ' ';
 	}
@@ -182,5 +183,5 @@
 	sout | head( mary ).i | tail( mary ).i | nl;
 
-	for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
+	for ( SeqIter(Mary) iter = { mary }; iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -191,5 +192,5 @@
 	}
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -200,8 +201,15 @@
 	}
 
-	Mary * head = new( -1 ), tail = { -1 };
+	Mary * head = new( -1 ), tail = { -2 };
 	addHead( mary, *head );
 	addTail( mary, tail );
+
 	sout | head( mary ).i | succ( mary, head )->i | tail( mary ).i | nl;
+
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
 	remove( mary, *head );
 	remove( mary, tail );
@@ -209,12 +217,24 @@
 	delete( &dropTail( mary ) );
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
+	for ( i; 5 ) {
+		delete( &dropTail( mary ) );
+	}
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, mary ); iter | m; ) {
 		delete( &remove( mary, m ) );
 	}
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | "empty" | nl;
 
 	Mary & middle;
@@ -225,5 +245,5 @@
 		}
 	}
-	for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
+	for ( SeqIter(Mary) iter = { mary }; iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -234,9 +254,9 @@
 	split( mary2, mary, middle );
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	for ( over( maryIter, mary2 ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+	for ( over( iter, mary2 ); iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -245,9 +265,10 @@
 	transfer( mary, mary2 );
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( iter, mary ); iter | m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+
+	for ( over( iter, mary ); iter | m; ) {
 		delete( &m );
 	}
Index: tests/collections/stack.cfa
===================================================================
--- tests/collections/stack.cfa	(revision 62a7cc0ac31873baa3923dd92c537b60b4a3eac1)
+++ tests/collections/stack.cfa	(revision 3e36f220446a0d1e743455b46dfab6d5d0e40c19)
@@ -19,10 +19,10 @@
 
 	Stack(Fred) fred;
-	StackIter(Fred) fredIter = { fred };
+	StackIter(Fred) inter = { fred };
 	Fred & f;
 
 	sout | nlOff;										// turn off auto newline
 
-	for ( ; fredIter >> f; ) {							// empty list
+	for ( ; inter | f; ) {							// empty list
 		sout | f.i | ' ';
 	}
@@ -33,5 +33,5 @@
 	}
 
-	for ( StackIter(Fred) iter = { fred }; iter >> f; ) {
+	for ( StackIter(Fred) iter = { fred }; iter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -44,5 +44,5 @@
 	}
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( inter, fred ); inter | f; ) {
 		sout | f.i | ' ';
 	}
@@ -52,10 +52,10 @@
 		push( fred, *new( 2 * i + 1 ) );
 	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( inter, fred ); inter | f; ) {
 		sout | f.i | ' ';
 	}
 	sout | nl;
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
+	for ( over( inter, fred ); inter | f; ) {
 		delete( &f );
 	}
@@ -81,5 +81,5 @@
 	Mary & m;
 
-	for ( ; maryIter >> m; ) {							// empty list
+	for ( ; maryIter | m; ) {							// empty list
 		sout | m.i | m.j | ' ';
 	}
@@ -90,5 +90,5 @@
 	}
 
-	for ( StackIter(Mary) iter = { mary }; iter >> m; ) {
+	for ( StackIter(Mary) iter = { mary }; iter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -99,5 +99,5 @@
 	}
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( maryIter, mary ); maryIter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
@@ -107,10 +107,10 @@
 		push( mary, *new( 2 * i + 1 ) );
 	}
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( maryIter, mary ); maryIter | m; ) {
 		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
+	for ( over( maryIter, mary ); maryIter | m; ) {
 		delete( &m );
 	}
