Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision d45ed83c96c9b73e97d7e2a855ddc87c32d1559b)
+++ libcfa/src/Makefile.am	(revision 4069faade93e68df42b8c7af24253b6a041b469b)
@@ -39,5 +39,5 @@
 #----------------------------------------------------------------------------------------------------------------
 if BUILDLIB
-headers_nosrc = bitmanip.hfa math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa containers/list.hfa
+headers_nosrc = bitmanip.hfa math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa
 headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
 	  containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
Index: bcfa/src/containers/list.hfa
===================================================================
--- libcfa/src/containers/list.hfa	(revision d45ed83c96c9b73e97d7e2a855ddc87c32d1559b)
+++ 	(revision )
@@ -1,274 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2020 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// list -- lets a user-defined stuct form intrusive linked lists
-//
-// Author           : Michael Brooks
-// Created On       : Wed Apr 22 18:00:00 2020
-// Last Modified By : Michael Brooks
-// Last Modified On : Wed Apr 22 18:00:00 2020
-// Update Count     : 1
-//
-
-#include <assert.h>
-
-#define __DLISTED_MGD_COMMON(ELEM, NODE, LINKS_FLD) \
-static inline ELEM& $tempcv_n2e(NODE &node) { \
-	return node; \
-} \
-\
-static inline NODE& $tempcv_e2n(ELEM &node) { \
-	return node; \
-} \
-\
-static inline ELEM & ?`prev(NODE &node) { \
-    $dlinks(ELEM) & ls = node.LINKS_FLD; \
-	$mgd_link(ELEM) * l = &ls.prev; \
-	ELEM * e = l->elem; \
-	return *e; \
-} \
-\
-static inline ELEM & ?`next(NODE &node) { \
-    $dlinks(ELEM) & ls = node.LINKS_FLD; \
-	$mgd_link(ELEM) * l = &ls.next; \
-	ELEM * e = l->elem; \
-	return *e; \
-} \
-\
-static inline $mgd_link(ELEM) & $prev_link(NODE &node) { \
-    $dlinks(ELEM) & ls = node.LINKS_FLD; \
-	$mgd_link(ELEM) * l = &ls.prev; \
-	return *l; \
-} \
-\
-static inline $mgd_link(ELEM) & $next_link(NODE &node) { \
-    $dlinks(ELEM) & ls = node.LINKS_FLD; \
-	$mgd_link(ELEM) * l = &ls.next; \
-	return *l; \
-}
-
-#define __DLISTED_MGD_JUSTEXPL(STRUCT, IN_THELIST, STRUCT_IN_THELIST) \
-struct STRUCT_IN_THELIST { \
-	inline STRUCT; \
-}; \
-\
-void ?{}(STRUCT_IN_THELIST &) = void; \
-\
-static inline STRUCT_IN_THELIST& ?`IN_THELIST(STRUCT &this) { \
-	return (STRUCT_IN_THELIST&)this; \
-}
-
-#define __DLISTED_MGD_JUSTIMPL(STRUCT)
-
-forall( dtype tE ) {
-	struct $mgd_link {
-		tE *elem;
-		void *terminator;
-		_Bool is_terminator;
-		// will collapse to single pointer with tag bit
-	};
-	inline void ?{}( $mgd_link(tE) &this, tE* elem ) {
-		(this.elem){ elem };
-		(this.terminator){ 0p };
-		(this.is_terminator){ 0 };
-	}
-	inline void ?{}( $mgd_link(tE) &this, void * terminator ) {
-		(this.elem){ 0p };
-		(this.terminator){ terminator };
-		(this.is_terminator){ 1 };
-	}
-	forall ( otype tInit | { void ?{}( $mgd_link(tE) &, tInit); } )
-	void ?=?( $mgd_link(tE) &this, tInit i ) {
-		^?{}( this );
-		?{}( this, i );
-	}
-	struct $dlinks {
-		// containing item is not listed
-		// iff
-		// links have (elem == 0p && terminator == 0p)
-		$mgd_link(tE) next;
-		$mgd_link(tE) prev;
-	};
-	inline void ?{}( $dlinks(tE) &this ) {
-		(this.next){ (tE *)0p };
-		(this.prev){ (tE *)0p };
-	}
-}
-
-#define DLISTED_MGD_EXPL_IN(STRUCT, LIST_SUF) \
-  $dlinks(STRUCT) $links_ ## LIST_SUF;
-
-#define DLISTED_MGD_EXPL_OUT(STRUCT, LIST_SUF) \
-  __DLISTED_MGD_JUSTEXPL(STRUCT, in_##LIST_SUF, STRUCT ## _in_ ## LIST_SUF) \
-  __DLISTED_MGD_COMMON(STRUCT, STRUCT##_in_##LIST_SUF,  $links_ ## LIST_SUF)
-
-#define DLISTED_MGD_IMPL_IN(STRUCT) \
-  $dlinks(STRUCT) $links;
-
-#define DLISTED_MGD_IMPL_OUT(STRUCT) \
-  __DLISTED_MGD_JUSTIMPL(STRUCT) \
-  __DLISTED_MGD_COMMON(STRUCT, STRUCT, $links)
-
-trait $dlistable(dtype Tnode, dtype Telem) {
-	$mgd_link(Telem) & $prev_link(Tnode &);
-	$mgd_link(Telem) & $next_link(Tnode &);
-	Telem& $tempcv_n2e(Tnode &);
-	Tnode& $tempcv_e2n(Telem &);
-};
-
-forall (dtype Tnode, dtype Telem | $dlistable(Tnode, Telem)) {
-
-	// implemented as a sentinel item in an underlying cicrular list
-	// theList.$links.next is first
-	// theList.$links.prev is last
-	// note this allocation preserves prev-next composition as an identity
-	struct dlist {
-		$dlinks(Telem) $links;
-	};
-
-	// an empty dlist
-	// links refer to self, making a tight circle
-	void ?{}( dlist(Tnode, Telem) & this ) {
-		$mgd_link(Telem) selfRef = (void *) &this;
-		( this.$links ) { selfRef, selfRef };
-	}
-
-	Telem & ?`first( dlist(Tnode, Telem) &l ) {
-		return * l.$links.next.elem;
-	}
-
-	Telem & ?`last( dlist(Tnode, Telem) &l ) {
-		return * l.$links.prev.elem;
-	}
-
-	static inline void insert_after(Tnode &list_pos, Telem &to_insert) {
-		assert (&list_pos != 0p);
-		assert (&to_insert != 0p);
-		Tnode &singleton_to_insert = $tempcv_e2n(to_insert);
-		assert($prev_link(singleton_to_insert).elem == 0p);
-		assert($next_link(singleton_to_insert).elem == 0p);
-		$prev_link(singleton_to_insert) = & $tempcv_n2e(list_pos);
-		$next_link(singleton_to_insert) = $next_link(list_pos).elem;
-		if ($next_link(list_pos).is_terminator) {
-			dlist(Tnode, Telem) *list = $next_link(list_pos).terminator;
-			$dlinks(Telem) *list_links = & list->$links;
-			$mgd_link(Telem) *list_last = & list_links->prev;
-			*list_last = &to_insert;
-		} else {
-			Telem *list_pos_next = $next_link(list_pos).elem;
-			if (list_pos_next) {
-				Tnode & lpn_inlist = $tempcv_e2n(*list_pos_next);
-				$prev_link(lpn_inlist) = &to_insert;
-			}
-		}
-		$next_link(list_pos) = &to_insert;
-	}
-
-	static inline void insert_before(Tnode &list_pos, Telem &to_insert) {
-		assert (&list_pos != 0p);
-		assert (&to_insert != 0p);
-		Tnode &singleton_to_insert = $tempcv_e2n(to_insert);
-		assert($prev_link(singleton_to_insert).elem == 0p);
-		assert($next_link(singleton_to_insert).elem == 0p);
-		$next_link(singleton_to_insert) = & $tempcv_n2e(list_pos);
-		$prev_link(singleton_to_insert) = $prev_link(list_pos).elem;
-		if ($prev_link(list_pos).is_terminator) {
-			dlist(Tnode, Telem) *list = $prev_link(list_pos).terminator;
-			$dlinks(Telem) *list_links = & list->$links;
-			$mgd_link(Telem) *list_first = & list_links->next;
-			*list_first = &to_insert;
-		} else {
-			Telem *list_pos_prev = $prev_link(list_pos).elem;
-			if (list_pos_prev) {
-				Tnode & lpp_inlist = $tempcv_e2n(*list_pos_prev);
-				$next_link(lpp_inlist) = &to_insert;
-			}
-		}
-		$prev_link(list_pos) = &to_insert;
-	}
-
-    static inline void insert_first(dlist(Tnode, Telem) &list, Telem &to_insert) {
-		assert (&list != 0p);
-		assert (&to_insert != 0p);
-		Tnode &singleton_to_insert = $tempcv_e2n(to_insert);
-		assert($prev_link(singleton_to_insert).elem == 0p);
-		assert($next_link(singleton_to_insert).elem == 0p);
-
-		$prev_link(singleton_to_insert) = (void*) &list;
-		$next_link(singleton_to_insert) = list.$links.next;
-
-		$dlinks(Telem) *listLinks = & list.$links;
-		if (listLinks->next.is_terminator) {
-			$mgd_link(Telem) * listPrevReference = & listLinks->prev;
-			*listPrevReference = &to_insert;
-		} else {
-			Tnode & next_inlist = $tempcv_e2n(*list.$links.next.elem);
-			$prev_link(next_inlist) = &to_insert;
-		}
-		$mgd_link(Telem) * listNextReference = & listLinks->next;
-		*listNextReference = &to_insert;
-	}
-
-    static inline void insert_last(dlist(Tnode, Telem) &list, Telem &to_insert) {
-		assert (&list != 0p);
-		assert (&to_insert != 0p);
-		Tnode &singleton_to_insert = $tempcv_e2n(to_insert);
-		assert($next_link(singleton_to_insert).elem == 0p);
-		assert($prev_link(singleton_to_insert).elem == 0p);
-
-		$next_link(singleton_to_insert) = (void*) &list;
-		$prev_link(singleton_to_insert) = list.$links.prev;
-
-		$dlinks(Telem) *listLinks = & list.$links;
-		if (listLinks->prev.is_terminator) {
-			$mgd_link(Telem) * listNextReference = & listLinks->next;
-			*listNextReference = &to_insert;
-		} else {
-			Tnode & prev_inlist = $tempcv_e2n(*list.$links.prev.elem);
-			$next_link(prev_inlist) = &to_insert;
-		}
-		$mgd_link(Telem) * listPrevReference = & listLinks->prev;
-		*listPrevReference = &to_insert;
-	}
-
-    static inline void remove(Tnode &list_pos) {
-		assert( &list_pos != 0p );
-
-		$mgd_link(Telem) &incoming_from_prev = *0p;
-		$mgd_link(Telem) &incoming_from_next = *0p;
-
-		if ( $prev_link(list_pos).is_terminator ) {
-			dlist(Tnode, Telem) * tgt_before = $prev_link(list_pos).terminator;
-			$dlinks(Telem) * links_before = & tgt_before->$links;
-			&incoming_from_prev = & links_before->next;
-		} else if ($prev_link(list_pos).elem) {
-			Telem * tgt_before = $prev_link(list_pos).elem;
-			Tnode & list_pos_before = $tempcv_e2n(*tgt_before);
-			&incoming_from_prev = & $next_link(list_pos_before);
-		}
-
-		if ( $next_link(list_pos).is_terminator ) {
-			dlist(Tnode, Telem) * tgt_after = $next_link(list_pos).terminator;
-			$dlinks(Telem) * links_after = & tgt_after->$links;
-			&incoming_from_next = & links_after->prev;
-		} else if ($next_link(list_pos).elem) {
-			Telem * tgt_after  = $next_link(list_pos).elem;
-			Tnode & list_pos_after  = $tempcv_e2n(*tgt_after );
-			&incoming_from_next = & $prev_link(list_pos_after );
-		}
-
-		if (& incoming_from_prev) {
-			incoming_from_prev = $next_link(list_pos);
-		}
-		if (& incoming_from_next) {
-			incoming_from_next = $prev_link(list_pos);
-		}
-
-		$next_link(list_pos) = (Telem*) 0p;
-		$prev_link(list_pos) = (Telem*) 0p;
-	}
-}
-
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision d45ed83c96c9b73e97d7e2a855ddc87c32d1559b)
+++ libcfa/src/iostream.cfa	(revision 4069faade93e68df42b8c7af24253b6a041b469b)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 30 10:50:31 2020
-// Update Count     : 1001
+// Last Modified On : Sun Apr 26 20:31:36 2020
+// Update Count     : 985
 //
 
@@ -463,37 +463,21 @@
 			int bits = high1( f.val );					/* position of most significant bit */ \
 			if ( bits == 0 ) bits = 1;					/* 0 value => force one bit to print */ \
-			int spaces; \
+			int spaces = f.wd - bits;					/* can be negative */ \
+			if ( ! f.flags.nobsdp ) { spaces -= 2; }	/* base prefix takes space */ \
+			/* printf( "%d %d\n", bits, spaces ); */ \
 			if ( ! f.flags.left ) {						/* right justified ? */ \
 				/* Note, base prefix then zero padding or spacing then prefix. */ \
-				if ( f.flags.pc ) { \
-					spaces = f.wd - f.pc; \
-					if ( ! f.flags.nobsdp ) { spaces -= 2; } /* base prefix takes space */ \
+				if ( f.flags.pad0 || f.flags.pc ) { \
+					if ( ! f.flags.nobsdp ) { fmt( os, "0%c", f.base ); } \
+					if ( f.flags.pc ) spaces = f.pc - bits; \
+					if ( spaces > 0 ) fmt( os, "%0*d", spaces, 0 ); /* zero pad */ \
+				} else { \
 					if ( spaces > 0 ) fmt( os, "%*s", spaces, " " ); /* space pad */ \
 					if ( ! f.flags.nobsdp ) { fmt( os, "0%c", f.base ); } \
-					spaces = f.pc - bits; \
-					if ( spaces > 0 ) fmt( os, "%0*d", spaces, 0 ); /* zero pad */ \
-				} else { \
-					spaces = f.wd - bits; \
-					if ( ! f.flags.nobsdp ) { spaces -= 2; } /* base prefix takes space */ \
-					if ( f.flags.pad0 ) { \
-						if ( ! f.flags.nobsdp ) { fmt( os, "0%c", f.base ); } \
-						if ( spaces > 0 ) fmt( os, "%0*d", spaces, 0 ); /* zero pad */ \
-					} else { \
-						if ( spaces > 0 ) fmt( os, "%*s", spaces, " " ); /* space pad */ \
-						if ( ! f.flags.nobsdp ) { fmt( os, "0%c", f.base ); } \
-					} /* if */ \
 				} /* if */ \
-			} else { \
-				if ( ! f.flags.nobsdp ) fmt( os, "0%c", f.base ); \
-				if ( f.flags.pc ) { \
-					spaces = f.pc - bits; \
-					if ( spaces > 0 ) fmt( os, "%0*d", spaces, 0 ); /* zero pad */ \
-					spaces = f.wd - f.pc; \
-				} else { /* pad0 flag ignored with left flag */ \
-					spaces = f.wd - bits; \
-				} /* if */ \
-				if ( ! f.flags.nobsdp ) { spaces -= 2; } /* base prefix takes space */ \
+			} else if ( ! f.flags.nobsdp ) { \
+				fmt( os, "0%c", f.base ); \
 			} /* if */ \
-			int shift = floor( bits - 1, 4 ); \
+			int shift = (bits - 1) / 4 * 4; /* floor( bits - 1, 4 ) */ \
 			typeof( f.val ) temp = f.val; \
 			fmt( os, "%s", shortbin[(temp >> shift) & 0xf] ); \
@@ -615,5 +599,5 @@
 						fmt.wd = 0; \
 						/* if ( fmt2.val > 1 && fmt.flags.pc && fmt.pc > 0 ) fmt.pc -= 1; */ \
-						/* printf( "L %llo %llo %llo %d %d '%c' %x %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt.wd, fmt.pc, fmt.base, fmt.all, fmt2.val, fmt2.wd, fmt2.pc, fmt2.base, fmt2.all ); */ \
+						/* printf( "L %llo %llo %llo %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt2.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); */ \
 						(ostype &)(os | fmt | "" | fmt2); \
 						sepOff( os ); \
@@ -621,5 +605,5 @@
 						int msigd = ceiling( high1( fmt.val ), 3 ) + 1; \
 						fmt2.wd = f.wd - (fmt.pc > msigd ? fmt.pc : msigd) - 1; \
-						if ( (int)fmt2.wd < 21 ) fmt2.wd = 21; /* cast deals with negative value */ \
+						if ( fmt2.wd < 21 ) fmt2.wd = 21; \
 						fmt2.flags.pc = true; fmt2.pc = 21; \
 					} else { \
@@ -628,5 +612,5 @@
 						/*if ( ! fmt.flags.nobsdp && fmt.pc < fmt.wd ) fmt.wd -= 1;*/ \
 						fmt2.wd = 1; \
-						/* printf( "R %llo %llo %llo %d %d '%c' %x %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt.wd, fmt.pc, fmt.base, fmt.all, fmt2.val, fmt2.wd, fmt2.pc, fmt2.base, fmt2.all ); */ \
+						/* printf( "R %llo %llo %llo %llo %d %d '%c' %x\n", msig, lsig, fmt.val, fmt2.val, fmt.wd, fmt.pc, fmt.base, fmt.all ); */ \
 						(ostype &)(os | fmt | "" | fmt2); \
 						sepOff( os ); \
Index: sts/list/.expect/dlist-insert-remove.txt
===================================================================
--- tests/list/.expect/dlist-insert-remove.txt	(revision d45ed83c96c9b73e97d7e2a855ddc87c32d1559b)
+++ 	(revision )
@@ -1,1465 +1,0 @@
-~~~~~~~~~~~~~~~~~ Headless List Tests - insert_after ~~~~~~~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 1-i:  Modifying Freds on MINE 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-==== fred by YOURS after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 2-i.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 3-i.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== mary after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-
-~~~~~~~~~~~~~~~~ Headless List Tests - insert_before ~~~~~~~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 1-ii:  Modifying Freds on MINE 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-==== fred by YOURS after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 2-ii.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 3-ii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== mary after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-
-~~~~~~~~~~~~~~~~~ Headed List Tests - insert_first ~~~~~~~~~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 4-i:  Modifying Freds on MINE 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-==== fred by YOURS after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 5-i:  Modifying Freds on YOURS 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 6-i.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== mary after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-
-~~~~~~~~~~~~~~~~~ Headed List Tests - insert_last ~~~~~~~~~~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 4-ii:  Modifying Freds on MINE 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-==== fred by YOURS after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 5-ii:  Modifying Freds on YOURS 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by MINE after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 6-ii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== mary after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-
-~~~~~~~~~~~ Element ops on Headed List Tests: after, last ~~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 7-i.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-==== fred by YOURS after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 8-i.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 9-i.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-
-~~~~~~~~~~ Element ops on Headed List Tests: before, first ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 7-ii.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-==== fred by YOURS after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 8-ii.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE after 
-3.14
--
-3.14
--
-0.5
--
-0.5
--
-==== fred by YOURS after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 9-ii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary after 
-3.14
-0.5
--
-3.14
--
-0.5
--
-0.5
-3.14
--
-
-~~~~~~~~~~ Element removal tests on Headless List: mid ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 10-i.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-1.7
--
-==== fred by YOURS after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-2.7
--
-2.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 11-i.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS after 
-1.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-1.7
--
-==== fred by YOURS after 
-2.7
--
-2.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 12-i.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== mary after 
-1.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-1.7
--
-==== mary after 
-2.7
--
-2.7
--
--
--
-
-~~~~~~~~~~ Element removal tests on Headless List: at first ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 10-ii.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-2.7
-3.7
--
-2.7
--
-3.7
--
-3.7
-2.7
--
-==== fred by YOURS after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
--
-1.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 11-ii.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS after 
-2.7
-3.7
--
-2.7
--
-3.7
--
-3.7
-2.7
--
-==== fred by YOURS after 
-1.7
--
-1.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 12-ii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== mary after 
-2.7
-3.7
--
-2.7
--
-3.7
--
-3.7
-2.7
--
-==== mary after 
-1.7
--
-1.7
--
--
--
-
-~~~~~~~~~~ Element removal tests on Headless List: at last ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 10-iii.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
--
-1.7
--
-2.7
--
-2.7
-1.7
--
-==== fred by YOURS after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-3.7
--
-3.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 11-iii.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS after 
-1.7
-2.7
--
-1.7
--
-2.7
--
-2.7
-1.7
--
-==== fred by YOURS after 
-3.7
--
-3.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 12-iii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== mary after 
-1.7
-2.7
--
-1.7
--
-2.7
--
-2.7
-1.7
--
-==== mary after 
-3.7
--
-3.7
--
--
--
-
-~~~~~~~~~~ Element removal tests on Headed List: at first ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 13-i.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-2.7
-3.7
--
-2.7
--
-3.7
--
-3.7
-2.7
--
-==== fred by YOURS after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
--
-1.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 14-i.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS after 
-2.7
-3.7
--
-2.7
--
-3.7
--
-3.7
-2.7
--
-==== fred by YOURS after 
-1.7
--
-1.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 15-i.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== mary after 
-2.7
-3.7
--
-2.7
--
-3.7
--
-3.7
-2.7
--
-==== mary after 
-1.7
--
-1.7
--
--
--
-
-~~~~~~~~~~ Element removal tests on Headed List: at last ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 13-ii.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
--
-1.7
--
-2.7
--
-2.7
-1.7
--
-==== fred by YOURS after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-3.7
--
-3.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 14-ii.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by MINE after 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== fred by YOURS after 
-1.7
-2.7
--
-1.7
--
-2.7
--
-2.7
-1.7
--
-==== fred by YOURS after 
-3.7
--
-3.7
--
--
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 15-ii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-1.7
-2.7
-3.7
--
-1.7
--
-3.7
--
-3.7
-2.7
-1.7
--
-==== mary after 
-1.7
-2.7
--
-1.7
--
-2.7
--
-2.7
-1.7
--
-==== mary after 
-3.7
--
-3.7
--
--
--
-
-~~~~~~~~~~ Element removal tests on Headed List: of sole ~~~~~~~~~~
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 13-iii.  Modifying Freds on MINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== fred by YOURS before 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== fred by YOURS after 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== fred by MINE after 
-0.7
--
-0.7
--
--
--
-==== fred by MINE after 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 14-iii.  Modifying Freds on YOURS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== fred by MINE before 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== fred by YOURS before 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== fred by YOURS after 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== fred by YOURS after 
-0.7
--
-0.7
--
--
--
-==== fred by YOURS after 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Test 15-iii.  Modifying Maries
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-==== mary before 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
-==== mary after 
-0.7
--
-0.7
--
--
--
-==== mary after 
-0.7
--
-0.7
--
-0.7
--
-0.7
--
Index: sts/list/dlist-insert-remove.cfa
===================================================================
--- tests/list/dlist-insert-remove.cfa	(revision d45ed83c96c9b73e97d7e2a855ddc87c32d1559b)
+++ 	(revision )
@@ -1,1328 +1,0 @@
-#include <containers/list.hfa>
-#include <fstream.hfa>
-#include <assert.h>
-
-// Section 1:  replaced by above include list.hfa
-
-
-////////////////////////////////////////////////////////////
-//
-// Section 2
-//
-// Structure definitions
-//
-// Example of declaration-side user code
-//
-////////////////////////////////////////////////////////////
-
-// a fred belongs to two doubly-linked lists: mine and yours
-struct fred {
-	float adatum;
-	DLISTED_MGD_EXPL_IN(fred, mine)
-	DLISTED_MGD_EXPL_IN(fred, yours)
-};
-
-DLISTED_MGD_EXPL_OUT(fred, mine)
-DLISTED_MGD_EXPL_OUT(fred, yours)
-
-void ?{}(fred &this, float adatum) {
-	(this.adatum){adatum};
-}
-
-// a mary belongs to just one doubly-linked list: hers
-struct mary {
-	float anotherdatum;
-	DLISTED_MGD_IMPL_IN(mary)
-};
-
-DLISTED_MGD_IMPL_OUT(mary)
-
-void ?{}(mary &this, float anotherdatum) {
-	(this.anotherdatum){anotherdatum};
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 3
-//
-// Test helpers to traverse and print lists.
-//
-// These consume framework-provided accessor functions and
-// do not modify their parameter lists.
-//
-////////////////////////////////////////////////////////////
-
-void printMyFredsFwd(fred &f) {
-	while (&f != 0p) {
-		sout | f.adatum;
-		&f = &f`in_mine`next;
-	}
-}
-
-void printMyFredsRev(fred &f) {
-	while (&f != 0p) {
-		sout | f.adatum;
-		&f = &f`in_mine`prev;
-	}
-}
-
-void printMyFreddies(fred &f1, fred &f2, int isBefore) {
-	if (isBefore) {
-		sout | "==== fred by MINE before ";
-	} else {
-		sout | "==== fred by MINE after ";
-	}
-	printMyFredsFwd(f1);	sout | '-';
-	printMyFredsRev(f1);	sout | '-';
-	printMyFredsFwd(f2);	sout | '-';
-	printMyFredsRev(f2);	sout | '-';
-}
-
-void printYourFredsFwd(fred &f) {
-	while (&f != 0p) {
-		sout | f.adatum;
-		&f = &f`in_yours`next;
-	}
-}
-
-void printYourFredsRev(fred &f) {
-	while (&f != 0p) {
-		sout | f.adatum;
-		&f = &f`in_yours`prev;
-	}
-}
-
-void printYourFreddies(fred &f1, fred &f2, int isBefore) {
-	if (isBefore) {
-		sout | "==== fred by YOURS before ";
-	} else {
-		sout | "==== fred by YOURS after ";
-	}
-	printYourFredsFwd(f1);	sout | '-';
-	printYourFredsRev(f1);	sout | '-';
-	printYourFredsFwd(f2);	sout | '-';
-	printYourFredsRev(f2);	sout | '-';
-}
-
-void printMariesFwd(mary &m) {
-	while (&m != 0p) {
-		sout | m.anotherdatum;
-		&m = &m`next;
-	}
-}
-
-void printMariesRev(mary &m) {
-	while (&m != 0p) {
-		sout | m.anotherdatum;
-		&m = &m`prev;
-	}
-}
-
-void printMariatheotokos(mary &m1, mary &m2, int isBefore) {
-	if (isBefore) {
-		sout | "==== mary before ";
-	} else {
-		sout | "==== mary after ";
-	}
-	printMariesFwd(m1);	sout | '-';
-	printMariesRev(m1);	sout | '-';
-	printMariesFwd(m2);	sout | '-';
-	printMariesRev(m2);	sout | '-';
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4a.i
-//
-// Test cases of insert_after on headless list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-// All three tests exercise the case of merging two singleton lists into (their respective
-// positions in) one common list of two elements.
-
-// Note that the factoring of sect 4 (vs 3 and 5) keeps section 4 free of strings and IO,
-// and so keeps its assembly easy to inspect.
-
-// Throughout all the 4s, all the print functions called from these tests print:
-//  - from list position #1 moving forward  (a)
-//  - from list position #1 moving backward (b)
-//  - from list position #2 moving forward  (c)
-//  - from list position #2 moving backward (d)
-// The expected-output comments are in form a;b;c;d where a::=num,num,num
-
-void test__insertafter_singleton_on_singleton__fred_mine () {
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_after(f1`in_mine, f2);
-
-	printMyFreddies(f1, f2, 0);     // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-	printYourFreddies(f1, f2, 0);   // 3.14; 3.14; 0.5; 0.5 (unmodified)
-}
-
-void test__insertafter_singleton_on_singleton__fred_yours () {
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_after(f1`in_yours, f2);
-
-	printMyFreddies(f1, f2, 0);     // 3.14; 3.14; 0.5; 0.5 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-void test__insertafter_singleton_on_singleton__mary () {
-	mary m1 = {3.14};
-	mary m2 = {0.5};
-
-	printMariatheotokos(m1, m2, 1); // 3.14; 3.14; 0.5; 0.5
-
-	insert_after(m1, m2);
-
-	printMariatheotokos(m1, m2, 0); // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4a.ii
-//
-// Test cases of insert_before on headless list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__insertbefore_singleton_on_singleton__fred_mine () {
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_before(f2`in_mine, f1);
-
-	printMyFreddies(f1, f2, 0);     // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-	printYourFreddies(f1, f2, 0);   // 3.14; 3.14; 0.5; 0.5 (unmodified)
-}
-
-void test__insertbefore_singleton_on_singleton__fred_yours () {
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_before(f2`in_yours, f1);
-
-	printMyFreddies(f1, f2, 0);     // 3.14; 3.14; 0.5; 0.5 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-void test__insertbefore_singleton_on_singleton__mary () {
-	mary m1 = {3.14};
-	mary m2 = {0.5};
-
-	printMariatheotokos(m1, m2, 1); // 3.14; 3.14; 0.5; 0.5
-
-	insert_before(m2, m1);
-
-	printMariatheotokos(m1, m2, 0); // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4b.i
-//
-// Test cases of insert_first (necessarily headed list)
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-// All three tests exercise the case of creating an empty container and
-// adding two items to it.
-
-void test__insertfirst_two_on_empty__fred_mine() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_mine, fred) lf;
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_first(lf, f2);
-	insert_first(lf, f1);
-
-	printMyFreddies(f1, f2, 0);     // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-	printYourFreddies(f1, f2, 0);   // 3.14; 3.14; 0.5; 0.5 (unmodified)
-}
-
-void test__insertfirst_two_on_empty__fred_yours() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_yours, fred) lf;
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_first(lf, f2);
-	insert_first(lf, f1);
-
-	printMyFreddies(f1, f2, 0);     // 3.14; 3.14; 0.5; 0.5 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-void test__insertfirst_two_on_empty__mary() {
-
-	mary m1 = {3.14};
-	mary m2 = {0.5};
-
-	dlist(mary, mary) lm;
-
-	printMariatheotokos(m1, m2, 1); // 3.14; 3.14; 0.5; 0.5
-
-	insert_first(lm, m2);
-	insert_first(lm, m1);
-
-	printMariatheotokos(m1, m2, 0); // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4b.ii
-//
-// Test cases of insert_last (necessarily headed list)
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__insertlast_two_on_empty__fred_mine() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_mine, fred) lf;
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_last(lf, f1);
-	insert_last(lf, f2);
-
-	printMyFreddies(f1, f2, 0);     // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-	printYourFreddies(f1, f2, 0);   // 3.14; 3.14; 0.5; 0.5 (unmodified)
-}
-
-void test__insertlast_two_on_empty__fred_yours() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_yours, fred) lf;
-
-	printMyFreddies(f1, f2, 1);     // 3.14; 3.14; 0.5; 0.5
-	printYourFreddies(f1, f2, 1);   // 3.14; 3.14; 0.5; 0.5
-
-	insert_last(lf, f1);
-	insert_last(lf, f2);
-
-	printMyFreddies(f1, f2, 0);     // 3.14; 3.14; 0.5; 0.5 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-void test__insertlast_two_on_empty__mary() {
-
-	mary m1 = {3.14};
-	mary m2 = {0.5};
-
-	dlist(mary, mary) lm;
-
-	printMariatheotokos(m1, m2, 1); // 3.14; 3.14; 0.5; 0.5
-
-	insert_last(lm, m1);
-	insert_last(lm, m2);
-
-	printMariatheotokos(m1, m2, 0); // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4c.i
-//
-// Test cases of insert_after on headed list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__insertafter_after_last__fred_mine() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_mine, fred) lf;
-
-	assert(& lf`first == 0p);
-	assert(& lf`last == 0p);
-
-	insert_first(lf, f1);
-
-	assert(& lf`first == & f1);
-	assert(& lf`last == & f1);
-
-	insert_after(f1`in_mine, f2);
-
-	printMyFreddies(f1, f2, 0);     // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-	printYourFreddies(f1, f2, 0);   // 3.14; 3.14; 0.5; 0.5 (unmodified)
-
-	assert(& lf`first == & f1);
-	assert(& lf`last == & f2);
-}
-
-void test__insertafter_after_last__fred_yours() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_yours, fred) lf;
-
-	assert(& lf`first == 0p);
-	assert(& lf`last == 0p);
-
-	insert_first(lf, f1);
-
-	assert(& lf`first == & f1);
-	assert(& lf`last == & f1);
-
-	insert_after(f1`in_yours, f2);
-
-	printMyFreddies(f1, f2, 0);     // 3.14; 3.14; 0.5; 0.5 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-
-	assert(& lf`first == & f1);
-	assert(& lf`last == & f2);
-}
-
-void test__insertafter_after_last__mary() {
-
-	mary m1 = {3.14};
-	mary m2 = {0.5};
-
-	dlist(mary, mary) lm;
-
-	assert(& lm`first == 0p);
-	assert(& lm`last == 0p);
-
-	insert_first(lm, m1);
-
-	assert(& lm`first == & m1);
-	assert(& lm`last == & m1);
-
-	insert_after(m1, m2);
-
-	printMariatheotokos(m1, m2, 0); // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-
-	assert(& lm`first == & m1);
-	assert(& lm`last == & m2);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4c.ii
-//
-// Test cases of insert_before on headed list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__insertbefore_before_first__fred_mine() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_mine, fred) lf;
-
-	assert(& lf`first == 0p);
-	assert(& lf`last == 0p);
-
-	insert_last(lf, f2);
-
-	assert(& lf`first == & f2);
-	assert(& lf`last == & f2);
-
-	insert_before(f2`in_mine, f1);
-
-	printMyFreddies(f1, f2, 0);     // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-	printYourFreddies(f1, f2, 0);   // 3.14; 3.14; 0.5; 0.5 (unmodified)
-
-	assert(& lf`first == & f1);
-	assert(& lf`last == & f2);
-}
-
-void test__insertbefore_before_first__fred_yours() {
-
-	fred f1 = {3.14};
-	fred f2 = {0.5};
-
-	dlist(fred_in_yours, fred) lf;
-
-	assert(& lf`first == 0p);
-	assert(& lf`last == 0p);
-
-	insert_last(lf, f2);
-
-	assert(& lf`first == & f2);
-	assert(& lf`last == & f2);
-
-	insert_before(f2`in_yours, f1);
-
-	printMyFreddies(f1, f2, 0);     // 3.14; 3.14; 0.5; 0.5 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-
-	assert(& lf`first == & f1);
-	assert(& lf`last == & f2);
-}
-
-void test__insertbefore_before_first__mary() {
-
-	mary m1 = {3.14};
-	mary m2 = {0.5};
-
-	dlist(mary, mary) lm;
-
-	assert(& lm`first == 0p);
-	assert(& lm`last == 0p);
-
-	insert_last(lm, m2);
-
-	assert(& lm`first == & m2);
-	assert(& lm`last == & m2);
-
-	insert_before(m2, m1);
-
-	printMariatheotokos(m1, m2, 0); // 3.14, 0.5; 3.14; 0.5; 0.5, 3.14 (modified)
-
-	assert(& lm`first == & m1);
-	assert(& lm`last == & m2);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4d.i
-//
-// Test cases of remove, from middle of headless list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-// These tests, in the fred cases, set up the my/your lists initially identical,
-// act on one list, and expect the other unaffected.
-
-void test__remove_mid__fred_mine() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	insert_after(f1`in_mine, f2);
-	insert_after(f2`in_mine, f3);
-
-	insert_after(f1`in_yours, f2);
-	insert_after(f2`in_yours, f3);
-
-	printMyFreddies(f1, f3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(f1, f3, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f2`in_mine);
-
-	printMyFreddies(f1, f3, 0);     // 1.7, 3.7;       1.7;  3.7;  3.7, 1.7      (modified)
-	printYourFreddies(f1, f3, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-
-	// observe f2 is now solo in mine; in yours, it was just traversed
-	printMyFreddies(f2, *0p, 0);    // 2.7; 2.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f2.$links_mine.next.is_terminator == false);
-	assert(f2.$links_mine.prev.is_terminator == false);
-}
-
-void test__remove_mid__fred_yours() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	insert_after(f1`in_mine, f2);
-	insert_after(f2`in_mine, f3);
-
-	insert_after(f1`in_yours, f2);
-	insert_after(f2`in_yours, f3);
-
-	printMyFreddies(f1, f3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(f1, f3, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f2`in_yours);
-
-	printMyFreddies(f1, f3, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-	printYourFreddies(f1, f3, 0);   // 1.7, 3.7;       1.7;  3.7;  3.7, 1.7      (modified)
-
-	// observe f2 is now solo in yours; in mine, it was just traversed
-	printYourFreddies(f2, *0p, 0);    // 2.7; 2.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f2.$links_yours.next.is_terminator == false);
-	assert(f2.$links_yours.prev.is_terminator == false);
-}
-
-void test__remove_mid__mary() {
-
-	mary m1 = {1.7};
-	mary m2 = {2.7};
-	mary m3 = {3.7};
-
-	insert_after(m1, m2);
-	insert_after(m2, m3);
-
-	printMariatheotokos(m1, m3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(m2);
-
-	printMariatheotokos(m1, m3, 0);     // 1.7, 3.7;  1.7;  3.7;  3.7, 1.7 (modified)
-
-	// observe m2 is now solo
-	printMariatheotokos(m2, *0p, 0);    // 2.7; 2.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(m2.$links.next.is_terminator == false);
-	assert(m2.$links.prev.is_terminator == false);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4d.ii
-//
-// Test cases of remove, from first position of headless list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-// TODO: validate headless semantic: remove of a neighbourless element is valid and no-op
-
-void test__remove_at_first__fred_mine() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	insert_after(f1`in_mine, f2);
-	insert_after(f2`in_mine, f3);
-
-	insert_after(f1`in_yours, f2);
-	insert_after(f2`in_yours, f3);
-
-	printMyFreddies(f1, f3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(f1, f3, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f1`in_mine);
-
-	printMyFreddies(f2, f3, 0);     // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
-	printYourFreddies(f1, f3, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-
-	// observe f1 is now solo in mine; in yours, it was just traversed
-	printMyFreddies(f1, *0p, 0);    // 1.7; 1.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f1.$links_mine.next.is_terminator == false);
-	assert(f1.$links_mine.prev.is_terminator == false);
-}
-
-void test__remove_at_first__fred_yours() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	insert_after(f1`in_mine, f2);
-	insert_after(f2`in_mine, f3);
-
-	insert_after(f1`in_yours, f2);
-	insert_after(f2`in_yours, f3);
-
-	printMyFreddies(f1, f3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(f1, f3, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f1`in_yours);
-
-	printMyFreddies(f1, f3, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-	printYourFreddies(f2, f3, 0);   // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
-
-	// observe f1 is now solo in yours; in mine, it was just traversed
-	printYourFreddies(f1, *0p, 0);    // 1.7; 1.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f1.$links_yours.next.is_terminator == false);
-	assert(f1.$links_yours.prev.is_terminator == false);
-}
-
-void test__remove_at_first__mary() {
-
-	mary m1 = {1.7};
-	mary m2 = {2.7};
-	mary m3 = {3.7};
-
-	insert_after(m1, m2);
-	insert_after(m2, m3);
-
-	printMariatheotokos(m1, m3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(m1);
-
-	printMariatheotokos(m2, m3, 0);     // 2.7, 3.7;  2.7;  3.7;  3.7, 2.7 (modified)
-
-	// observe m2 is now solo
-	printMariatheotokos(m1, *0p, 0);    // 1.7; 1.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(m1.$links.next.is_terminator == false);
-	assert(m1.$links.prev.is_terminator == false);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4d.iii
-//
-// Test cases of remove, from last position of headless list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__remove_at_last__fred_mine() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	insert_after(f1`in_mine, f2);
-	insert_after(f2`in_mine, f3);
-
-	insert_after(f1`in_yours, f2);
-	insert_after(f2`in_yours, f3);
-
-	printMyFreddies(f1, f3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(f1, f3, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f3`in_mine);
-
-	printMyFreddies(f1, f2, 0);     // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
-	printYourFreddies(f1, f3, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-
-	// observe f3 is now solo in mine; in yours, it was just traversed
-	printMyFreddies(f3, *0p, 0);    // 3.7; 3.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f3.$links_mine.next.is_terminator == false);
-	assert(f3.$links_mine.prev.is_terminator == false);
-}
-
-void test__remove_at_last__fred_yours() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	insert_after(f1`in_mine, f2);
-	insert_after(f2`in_mine, f3);
-
-	insert_after(f1`in_yours, f2);
-	insert_after(f2`in_yours, f3);
-
-	printMyFreddies(f1, f3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(f1, f3, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f3`in_yours);
-
-	printMyFreddies(f1, f3, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-	printYourFreddies(f1, f2, 0);   // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
-
-	// observe f3 is now solo in yours; in mine, it was just traversed
-	printYourFreddies(f3, *0p, 0);    // 3.7; 3.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f3.$links_yours.next.is_terminator == false);
-	assert(f3.$links_yours.prev.is_terminator == false);
-}
-
-void test__remove_at_last__mary() {
-
-	mary m1 = {1.7};
-	mary m2 = {2.7};
-	mary m3 = {3.7};
-
-	insert_after(m1, m2);
-	insert_after(m2, m3);
-
-	printMariatheotokos(m1, m3, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(m3);
-
-	printMariatheotokos(m1, m2, 0);     // 1.7, 2.7;  1.7;  2.7;  2.7, 1.7 (modified)
-
-	// observe m3 is now solo
-	printMariatheotokos(m3, *0p, 0);    // 3.7; 3.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(m1.$links.next.is_terminator == false);
-	assert(m1.$links.prev.is_terminator == false);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4e.i
-//
-// Test cases of remove, from first position of headed list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__remove_at_head__fred_mine() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	dlist(fred_in_mine, fred) flm;
-	insert_last(flm, f1);
-	insert_last(flm, f2);
-	insert_last(flm, f3);
-
-	dlist(fred_in_yours, fred) fly;
-	insert_last(fly, f1);
-	insert_last(fly, f2);
-	insert_last(fly, f3);
-
-	printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f1`in_mine);
-
-	printMyFreddies(flm`first, flm`last, 0);     // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
-	printYourFreddies(fly`first, fly`last, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-
-	// observe f1 is now solo in mine; in yours, it was just traversed
-	printMyFreddies(f1, *0p, 0);    // 1.7; 1.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f1.$links_mine.next.is_terminator == false);
-	assert(f1.$links_mine.prev.is_terminator == false);
-}
-
-void test__remove_at_head__fred_yours() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	dlist(fred_in_mine, fred) flm;
-	insert_last(flm, f1);
-	insert_last(flm, f2);
-	insert_last(flm, f3);
-
-	dlist(fred_in_yours, fred) fly;
-	insert_last(fly, f1);
-	insert_last(fly, f2);
-	insert_last(fly, f3);
-
-	printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f1`in_yours);
-
-	printMyFreddies(flm`first, flm`last, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-	printYourFreddies(fly`first, fly`last, 0);   // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
-
-	// observe f1 is now solo in yours; in mine, it was just traversed
-	printYourFreddies(f1, *0p, 0);    // 1.7; 1.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f1.$links_yours.next.is_terminator == false);
-	assert(f1.$links_yours.prev.is_terminator == false);
-}
-
-void test__remove_at_head__mary() {
-
-	mary m1 = {1.7};
-	mary m2 = {2.7};
-	mary m3 = {3.7};
-
-	dlist(mary, mary) ml;
-	insert_last(ml, m1);
-	insert_last(ml, m2);
-	insert_last(ml, m3);
-
-	printMariatheotokos(ml`first, ml`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(m1);
-
-	printMariatheotokos(ml`first, ml`last, 0);     // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
-
-	// observe m1 is now solo
-	printMariatheotokos(m1, *0p, 0);               // 1.7; 1.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(m1.$links.next.is_terminator == false);
-	assert(m1.$links.prev.is_terminator == false);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4e.ii
-//
-// Test cases of remove, from last position of headed list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__remove_at_tail__fred_mine() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	dlist(fred_in_mine, fred) flm;
-	insert_last(flm, f1);
-	insert_last(flm, f2);
-	insert_last(flm, f3);
-
-	dlist(fred_in_yours, fred) fly;
-	insert_last(fly, f1);
-	insert_last(fly, f2);
-	insert_last(fly, f3);
-
-	printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f3`in_mine);
-
-	printMyFreddies(flm`first, flm`last, 0);     // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
-	printYourFreddies(fly`first, fly`last, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-
-	// observe f3 is now solo in mine; in yours, it was just traversed
-	printMyFreddies(f3, *0p, 0);    // 3.7; 3.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f3.$links_mine.next.is_terminator == false);
-	assert(f3.$links_mine.prev.is_terminator == false);
-}
-
-void test__remove_at_tail__fred_yours() {
-
-	fred f1 = {1.7};
-	fred f2 = {2.7};
-	fred f3 = {3.7};
-
-	dlist(fred_in_mine, fred) flm;
-	insert_last(flm, f1);
-	insert_last(flm, f2);
-	insert_last(flm, f3);
-
-	dlist(fred_in_yours, fred) fly;
-	insert_last(fly, f1);
-	insert_last(fly, f2);
-	insert_last(fly, f3);
-
-	printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-	printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(f3`in_yours);
-
-	printMyFreddies(flm`first, flm`last, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
-	printYourFreddies(fly`first, fly`last, 0);   // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
-
-	// observe f3 is now solo in yours; in mine, it was just traversed
-	printYourFreddies(f3, *0p, 0);               // 3.7; 3.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f3.$links_yours.next.is_terminator == false);
-	assert(f3.$links_yours.prev.is_terminator == false);
-}
-
-void test__remove_at_tail__mary() {
-
-	mary m1 = {1.7};
-	mary m2 = {2.7};
-	mary m3 = {3.7};
-
-	dlist(mary, mary) ml;
-	insert_last(ml, m1);
-	insert_last(ml, m2);
-	insert_last(ml, m3);
-
-	printMariatheotokos(ml`first, ml`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 
-
-	remove(m3);
-
-	printMariatheotokos(ml`first, ml`last, 0);     // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
-
-	// observe m3 is now solo
-	printMariatheotokos(m3, *0p, 0);               //3.7; 3.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(m3.$links.next.is_terminator == false);
-	assert(m3.$links.prev.is_terminator == false);
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 4e.iii
-//
-// Test cases of remove, of sole element of headed list
-//
-// Example of call-side user code
-//
-////////////////////////////////////////////////////////////
-
-void test__remove_of_sole__fred_mine() {
-
-	fred f = {0.7};
-
-	dlist(fred_in_mine, fred) flm;
-	insert_last(flm, f);
-
-	dlist(fred_in_yours, fred) fly;
-	insert_last(fly, f);
-
-	printMyFreddies(flm`first, flm`last, 1);     // 0.7; 0.7; 0.7; 0.7
-	printYourFreddies(fly`first, fly`last, 1);   // 0.7; 0.7; 0.7; 0.7
-
-	remove(f`in_mine);
-
-	assert(& flm`first == 0p);
-	assert(& flm`last  == 0p);
-
-	printYourFreddies(fly`first, fly`last, 0);   // 0.7; 0.7; 0.7; 0.7 (unmodified)
-
-	// observe f is solo in mine (now unlisted); in yours, it was just traversed
-	printMyFreddies(f, *0p, 0);    // 0.7; 0.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f.$links_mine.next.is_terminator == false);
-	assert(f.$links_mine.prev.is_terminator == false);
-
-	insert_last(flm, f);
-	printMyFreddies(flm`first, flm`last, 0);     // 0.7; 0.7; 0.7; 0.7
-}
-
-void test__remove_of_sole__fred_yours() {
-
-	fred f = {0.7};
-
-	dlist(fred_in_mine, fred) flm;
-	insert_last(flm, f);
-
-	dlist(fred_in_yours, fred) fly;
-	insert_last(fly, f);
-
-	printMyFreddies(flm`first, flm`last, 1);     // 0.7; 0.7; 0.7; 0.7
-	printYourFreddies(fly`first, fly`last, 1);   // 0.7; 0.7; 0.7; 0.7
-
-	remove(f`in_yours);
-
-	assert(& fly`first == 0p);
-	assert(& fly`last  == 0p);
-
-	printYourFreddies(flm`first, flm`last, 0);   // 0.7; 0.7; 0.7; 0.7 (unmodified)
-
-	// observe f is solo in yours (now unlisted); in mine, it was just traversed
-	printYourFreddies(f, *0p, 0);    // 0.7; 0.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(f.$links_yours.next.is_terminator == false);
-	assert(f.$links_yours.prev.is_terminator == false);
-
-	insert_last(fly, f);
-	printYourFreddies(fly`first, fly`last, 0);     // 0.7; 0.7; 0.7; 0.7
-}
-
-void test__remove_of_sole__mary() {
-
-	mary m = {0.7};
-
-	dlist(mary, mary) ml;
-	insert_last(ml, m);
-
-	printMariatheotokos(ml`first, ml`last, 1);     // 0.7; 0.7; 0.7; 0.7
-
-	remove(m);
-
-	assert(& ml`first == 0p);
-	assert(& ml`last  == 0p);
-
-	// observe f is solo in mine (now unlisted); in yours, it was just traversed
-	printMariatheotokos(m, *0p, 0);    // 0.7; 0.7; ;
-
-	// TODO: decide on appropriate ovservable outcome (is_listed?) and its itended semantics
-	assert(m.$links.next.is_terminator == false);
-	assert(m.$links.prev.is_terminator == false);
-
-	insert_last(ml, m);
-	printMariatheotokos(ml`first, ml`last, 0);     // 0.7; 0.7; 0.7; 0.7
-}
-
-////////////////////////////////////////////////////////////
-//
-// Section 5
-//
-// Simple driver with the inter-scario printing
-//
-////////////////////////////////////////////////////////////
-
-int main() {
-
-	sout | "~~~~~~~~~~~~~~~~~ Headless List Tests - insert_after ~~~~~~~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 1-i:  Modifying Freds on MINE ";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertafter_singleton_on_singleton__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 2-i.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertafter_singleton_on_singleton__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 3-i.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertafter_singleton_on_singleton__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~~~~~~~ Headless List Tests - insert_before ~~~~~~~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 1-ii:  Modifying Freds on MINE ";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertbefore_singleton_on_singleton__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 2-ii.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertbefore_singleton_on_singleton__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 3-ii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertbefore_singleton_on_singleton__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~~~~~~~~ Headed List Tests - insert_first ~~~~~~~~~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 4-i:  Modifying Freds on MINE ";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertfirst_two_on_empty__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 5-i:  Modifying Freds on YOURS ";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertfirst_two_on_empty__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 6-i.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertfirst_two_on_empty__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~~~~~~~~ Headed List Tests - insert_last ~~~~~~~~~~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 4-ii:  Modifying Freds on MINE ";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertlast_two_on_empty__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 5-ii:  Modifying Freds on YOURS ";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertlast_two_on_empty__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 6-ii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertlast_two_on_empty__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~~ Element ops on Headed List Tests: after, last ~~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 7-i.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertafter_after_last__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 8-i.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertafter_after_last__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 9-i.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertafter_after_last__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element ops on Headed List Tests: before, first ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 7-ii.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertbefore_before_first__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 8-ii.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertbefore_before_first__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 9-ii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__insertbefore_before_first__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element removal tests on Headless List: mid ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 10-i.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_mid__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 11-i.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_mid__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 12-i.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_mid__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element removal tests on Headless List: at first ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 10-ii.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_first__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 11-ii.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_first__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 12-ii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_first__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element removal tests on Headless List: at last ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 10-iii.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_last__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 11-iii.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_last__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 12-iii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_last__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element removal tests on Headed List: at first ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 13-i.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_head__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 14-i.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_head__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 15-i.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_head__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element removal tests on Headed List: at last ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 13-ii.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_tail__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 14-ii.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_tail__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 15-ii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_at_tail__mary();
-
-	sout | "";
-	sout | "~~~~~~~~~~ Element removal tests on Headed List: of sole ~~~~~~~~~~";
-	sout | "";
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 13-iii.  Modifying Freds on MINE";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_of_sole__fred_mine();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 14-iii.  Modifying Freds on YOURS";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_of_sole__fred_yours();
-
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	sout | "Test 15-iii.  Modifying Maries";
-	sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
-	test__remove_of_sole__mary();
-
-	return 0;
-}
