Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ benchmark/Makefile.am	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -148,4 +148,5 @@
 
 jenkins$(EXEEXT): cleancsv
+	@echo 'If making benchmarks fails, look for error detail hiding in benchmark/foo.csv, where the last logged message is, "building foo.csv."'
 @DOifskipcompile@
 	@+make --silent compile.csv
@@ -173,5 +174,6 @@
 	echo "array,attributes,empty,expression,io,monitor,operators,typeof" > $@
 	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-array.make >> $@
-	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
+	echo "0," >> $@
+#	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@
 	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-empty.make >> $@
 	+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-expression.make >> $@
Index: doc/proposals/nowarn.md
===================================================================
--- doc/proposals/nowarn.md	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ doc/proposals/nowarn.md	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -52,12 +52,13 @@
    2. autogen, configure, make (as before)
 3. Rerun all the tests, expecting many failures.  Each failure represents a test that cannot handle strict wflags.
-   1. `./tests/test.py --all -j12 2>&1 | tee test-status.txt`
-   2. `grep 'PASSED  ' test-status.txt | sed -E 's/\s+(\.\.\.)?([^ ]+).*$/\2/g' > test-passes.txt`
-   3. `grep 'FAILED with' test-status.txt | sed -E 's/\s+(\.\.\.)?([^ ]+).*$/\2/g' > test-fails.txt`
+   1. `./tests/test.py --all ... 2>&1 | tee test-status.txt`
+   2. `grep 'PASSED  ' test-status.txt | sed -E 's/\s+([^ ]+).*$/\1/g' > test-passes.txt`
+   3. `grep 'FAILED with' test-status.txt | sed -E 's/\s+([^ ]+).*$/\1/g' > test-fails.txt`
 4. Trim the WFLGAS_OPT_LAX list, reconciling with the pass/fail status just obtained.
-   1. Copy-paste just the WFLAGS list items into `wflags-lax.txt`.  Keeping leading pounds and trailing backslashes is optional.
+   1. Copy-paste just the WFLGAS_OPT_LAX items into `wflags-lax.txt`.  Keeping leading pounds and trailing backslashes is optional.
    2. Print a list of tests found in `wflags-lax.txt` and also in `test-passes.txt`.  These tests were originally on WFLGAS_OPT_LAX, but can now pass without being on it.
-      - `sed -E 's/#|( *\\)//g' wflags-lax.txt | xargs -n 1 -I _ bash -c 'a=_;echo ${a:${#a}<32?0:-32}' | xargs -n 1 -I _ echo "grep -E '^_$' test-passes.txt" | sh`
+      - `sed -E 's/^([a-zA-Z])/(^|\\\\s|#)\1/g;s/\.\.\.//g;s/$/($|\\\\s|\\\\\\\\)/g' test-passes.txt | xargs -n 1 -I % echo "grep -E '%' wflags-lax.txt" | sh | sort`
    3. Note that in the running array-basic example, the resulting list was:
+      - array-collections/array-sbscr-types (*)
       - ctrl-flow/loopctrl
       - userLiterals
@@ -70,2 +71,4 @@
    5. autogen, configure, make (as before)
 5. Ensure that all tests pass, now under the reduced WFLGAS_OPT_LAX list.  Be deliberate about release mode and alternate architectures; i.e. that you aren't claiming to have fixed a test that always worked in x64-debug, but failed on a different configuration.  (Note that the overnight build will still catch that.)
+
+(*) This test was found later, upon fixing a problem in these instructions, so the original commit does not show it as fixed, like it does for the others.
Index: libcfa/src/bits/stack.hfa
===================================================================
--- libcfa/src/bits/stack.hfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ libcfa/src/bits/stack.hfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -14,5 +14,5 @@
 	};
 
-	inline {
+	static inline {
 		// wrappers to make Collection have T
 		T & head( Stack(T) & s ) with( s ) {
@@ -70,7 +70,7 @@
 	struct StackIter {
 		inline ColIter;									// Plan 9 inheritance
-	};	
+	};
 
-	inline {
+	static inline {
 		void ?{}( StackIter(T) & si ) with( si ) {
 			((ColIter &)si){};
Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ libcfa/src/concurrency/coroutine.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -81,5 +81,5 @@
 
 // helper for popping from coroutine's ehm buffer
-inline nonlocal_exception * pop_ehm_head( coroutine$ * this ) {
+static nonlocal_exception * pop_ehm_head( coroutine$ * this ) {
     lock( this->ehm_state.buffer_lock __cfaabi_dbg_ctx2 );
     nonlocal_exception * nl_ex = pop_head( this->ehm_state.ehm_buffer );
Index: src/Virtual/Tables.cpp
===================================================================
--- src/Virtual/Tables.cpp	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ src/Virtual/Tables.cpp	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -175,5 +175,5 @@
 		{ new ast::ObjectDecl(
 			location,
-			"__unused",
+			/* The parameter only exists to provide a type id. */ "",
 			new ast::PointerType( exceptType )
 		) },
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/Makefile.am	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -50,5 +50,5 @@
 # Indented list entries are finer-grained targets under the test.
 # Making this association implicit would be ideal, but requires learning more automake than is affordable.
-WFLGAS_OPT_LAX =  \
+WFLGAS_OPT_LAX = \
 	alloc \
 	alloc2 \
@@ -56,5 +56,4 @@
 	array-collections/array-raii-c \
 	array-collections/array-raii-cfa \
-	array-collections/array-sbscr-types \
 	array-collections/boxed \
 		array-collections/boxed% \
@@ -69,9 +68,8 @@
 	cast \
 	collections/atomic_mpsc \
+	collections/multi_list \
 	collections/queue \
 	collections/sequence \
 	collections/stack \
-	collections/string-api-coverage \
-	collections/string-api-coverage-noshare \
 	collections/vector-demo \
 	concurrency/actors/dynamic \
@@ -100,10 +98,5 @@
 	concurrency/examples/boundedBufferEXT \
 	concurrency/examples/boundedBufferINT \
-	concurrency/examples/datingService \
-	concurrency/examples/gortn \
-	concurrency/examples/matrixSum \
-	concurrency/examples/quickSort \
 	concurrency/futures/abandon \
-	concurrency/futures/basic \
 	concurrency/futures/multi \
 	concurrency/futures/select_future \
@@ -119,9 +112,5 @@
 	concurrency/mutexstmt/tuple \
 	concurrency/once \
-	concurrency/park/contention \
-	concurrency/park/force_preempt \
-	concurrency/park/start_parked \
 	concurrency/preempt \
-	concurrency/preempt2 \
 	concurrency/pthread/bounded_buffer \
 	concurrency/pthread/pthread_attr_test \
@@ -131,5 +120,4 @@
 	concurrency/pthread/pthread_key_test \
 	concurrency/pthread/pthread_once_test \
-	concurrency/readyQ/barrier_sleeper \
 	concurrency/readyQ/leader_spin \
 	concurrency/signal/block \
@@ -152,7 +140,5 @@
 	concurrency/unified_locking/timeout_lock \
 	concurrency/waitfor/barge \
-	concurrency/waitfor/dtor \
 	concurrency/waitfor/parse \
-	concurrency/waitfor/recurse \
 	concurrency/waitfor/statment \
 	concurrency/waitfor/when \
@@ -170,11 +156,5 @@
 	configs/parsenums \
 	configs/usage \
-	coroutine/devicedriver \
-	coroutine/fibonacci \
-	coroutine/fmtLines \
-	coroutine/pingpong \
-	coroutine/prodcons \
 	coroutine/raii \
-	coroutine/runningTotal \
 	ctrl-flow/goto \
 	ctrl-flow/ifwhileCtl \
@@ -186,28 +166,12 @@
 	enum_tests/planet \
 	enum_tests/structEnum \
-	exceptions/cancel/coroutine \
-	exceptions/cancel/thread \
 	exceptions/cardgame \
-	exceptions/conditional \
-	exceptions/conditional-threads \
-	exceptions/cor_resumer \
-	exceptions/data-except \
 	exceptions/defaults \
 	exceptions/defaults-threads \
-	exceptions/fibonacci_nonlocal \
-	exceptions/finally \
-	exceptions/finally-threads \
 	exceptions/hotpotato \
 	exceptions/hotpotato_checked \
-	exceptions/interact \
 	exceptions/pingpong_nonlocal \
 	exceptions/polymorphic \
-	exceptions/resume \
-	exceptions/resume-threads \
-	exceptions/terminate \
-	exceptions/terminate-threads \
-	exceptions/trash \
 	exceptions/try-leave-catch \
-	exceptions/virtual-cast \
 	exceptions/virtual-poly \
 	expression \
@@ -241,5 +205,4 @@
 		linking/mangling/lib.o \
 		linking/mangling/main.o \
-	linking/withthreads \
 	linkonce \
 		link-once/% \
@@ -249,5 +212,4 @@
 	maybe \
 	minmax \
-	nested_function \
 	nested-types \
 	nested-types-ERR1 \
@@ -268,5 +230,4 @@
 	raii/init_once \
 	raii/partial \
-	rational \
 	references \
 	result \
@@ -284,4 +245,5 @@
 	typedefRedef-ERR1 \
 	typeof \
+	userLiterals \
 	variableDeclarator \
 	vector \
Index: tests/collections/string-api-coverage.cfa
===================================================================
--- tests/collections/string-api-coverage.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/collections/string-api-coverage.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -1,24 +1,4 @@
 #include <collections/string.hfa>
 #include <string_sharectx.hfa>
-
-void assertWellFormedHandleList( int maxLen ) { // with(HeapArea)
-    // HandleNode *n;
-    // int limit1 = maxLen;
-    // for ( n = Header.flink; (limit1-- > 0) && n != &Header; n = n->flink ) {}
-    // assert (n == &Header);
-    // int limit2 = maxLen;
-    // for ( n = Header.blink; (limit2-- > 0) && n != &Header; n = n->blink ) {}
-    // assert (n == &Header);
-    // assert (limit1 == limit2);
-}
-
-// The given string is reachable.
-void assertOnHandleList( string & q ) { // with(HeapArea)
-    // HandleNode *n;
-    // for ( n = Header.flink; n != &Header; n = n->flink ) {
-    //     if ( n == & q.inner->Handle ) return;
-    // }
-    // assert( false );
-}
 
 
@@ -61,5 +41,4 @@
 
 
-                                            assertWellFormedHandleList( 10 );
     //
     // breadth Constructors
@@ -116,5 +95,5 @@
         sout | b11; // 5.5+3.4i
     }
-                                            assertWellFormedHandleList( 10 );
+
     //
     // Assignments
@@ -176,5 +155,5 @@
         sout | b; // 5.5+3.4i
     }
-                                            assertWellFormedHandleList( 10 );
+
 
 
@@ -187,13 +166,8 @@
 
     string sx = s + s3;
-                                            assertWellFormedHandleList( 10 );
     sout | sx; // helloworld
-                                            assertWellFormedHandleList( 10 );
     sx = "xx";
-                                            assertWellFormedHandleList( 10 );
     sx = s + s3;
-                                            assertWellFormedHandleList( 10 );
     sout | sx; // helloworld
-                                            assertWellFormedHandleList( 10 );
 
     sx += '!';
@@ -205,5 +179,4 @@
     sx += s;
     sout | sx; // hellohello
-                                            assertWellFormedHandleList( 10 );
     sx += ", friend";    
     sout | sx; // hellohello, friend
Index: tests/exceptions/cancel/coroutine.cfa
===================================================================
--- tests/exceptions/cancel/coroutine.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/cancel/coroutine.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -9,9 +9,9 @@
 coroutine WillCancel {};
 
-const char * msg(CoroutineCancelled(WillCancel) * this) {
+const char * msg(CoroutineCancelled(WillCancel) *) {
 	return "CoroutineCancelled(WillCancel)";
 }
 
-void main(WillCancel & wc) {
+void main(WillCancel &) {
 	sout | '1';
 	cancel_stack((internal_error){&internal_vt});
@@ -19,5 +19,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	sout | nlOff;
 	WillCancel cancel;
Index: tests/exceptions/cancel/thread.cfa
===================================================================
--- tests/exceptions/cancel/thread.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/cancel/thread.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -9,5 +9,5 @@
 thread WillCancel {};
 
-const char * msg(ThreadCancelled(WillCancel) * this) {
+const char * msg(ThreadCancelled(WillCancel) *) {
 	return "ThreadCancelled(WillCancel)";
 }
@@ -52,5 +52,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	sout | nlOff;
 	explicit();
Index: tests/exceptions/conditional.cfa
===================================================================
--- tests/exceptions/conditional.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/conditional.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -16,5 +16,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	num_error exc = {&num_error_vt, 2};
 
Index: tests/exceptions/data-except.cfa
===================================================================
--- tests/exceptions/data-except.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/data-except.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -14,5 +14,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	paired except = {&paired_vt, 3, 13};
 
Index: tests/exceptions/defaults.cfa
===================================================================
--- tests/exceptions/defaults.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/defaults.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -106,5 +106,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	log_test();
 	jump_test();
Index: tests/exceptions/except-io.hfa
===================================================================
--- tests/exceptions/except-io.hfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/except-io.hfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -9,9 +9,9 @@
 };
 
-inline void ?{}(loud_exit & this, const char * area) {
+static inline void ?{}(loud_exit & this, const char * area) {
     this.area = area;
 }
 
-inline void ^?{}(loud_exit & this) {
+static inline void ^?{}(loud_exit & this) {
     sout | "Exiting: " | this.area;
 }
@@ -21,10 +21,10 @@
 };
 
-inline void ?{}(loud_region & this, const char * region) {
+static inline void ?{}(loud_region & this, const char * region) {
 	this.region = region;
 	sout | "Entering: " | region;
 }
 
-inline void ^?{}(loud_region & this) {
+static inline void ^?{}(loud_region & this) {
 	sout | "Exiting: " | this.region;
 }
Index: tests/exceptions/finally.cfa
===================================================================
--- tests/exceptions/finally.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/finally.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -8,5 +8,5 @@
 vtable(myth) myth_vt;
 
-int main(int argc, char * argv[]) {
+int main() {
 	myth exc = {&myth_vt};
 
Index: tests/exceptions/interact.cfa
===================================================================
--- tests/exceptions/interact.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/interact.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -10,5 +10,5 @@
 vtable(moon) moon_vt;
 
-int main(int argc, char * argv[]) {
+int main() {
 	// Resume falls back to terminate.
 	try {
Index: tests/exceptions/polymorphic.cfa
===================================================================
--- tests/exceptions/polymorphic.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/polymorphic.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -59,5 +59,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	proxy_test();
 	sout | nl;
Index: tests/exceptions/resume.cfa
===================================================================
--- tests/exceptions/resume.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/resume.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -14,5 +14,5 @@
 void in_void(void);
 
-int main(int argc, char * argv[]) {
+int main() {
 	yin a_yin = {&yin_vt};
 	yang a_yang = {&yang_vt};
Index: tests/exceptions/terminate.cfa
===================================================================
--- tests/exceptions/terminate.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/terminate.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -14,5 +14,5 @@
 void in_void(void);
 
-int main(int argc, char * argv[]) {
+int main() {
 	yin a_yin = {&yin_vt};
 	yang a_yang = {&yang_vt};
Index: tests/exceptions/trash.cfa
===================================================================
--- tests/exceptions/trash.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/trash.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -9,5 +9,5 @@
 vtable(yang) yang_vt;
 
-int main(int argc, char * argv[]) {
+int main() {
 	try {
 		try {
Index: tests/exceptions/try-ctrl-flow.cfa
===================================================================
--- tests/exceptions/try-ctrl-flow.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/try-ctrl-flow.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -189,5 +189,5 @@
 }
 
-void main() {
+int main() {
 	// Should not compile.
 	return 1;
Index: tests/exceptions/try-leave-catch.cfa
===================================================================
--- tests/exceptions/try-leave-catch.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/try-leave-catch.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -53,5 +53,5 @@
 }
 
-int main(int argc, char * argv[]) {
+int main() {
 	test_loop();
 	test_switch();
Index: tests/exceptions/virtual-cast.cfa
===================================================================
--- tests/exceptions/virtual-cast.cfa	(revision 77148b08d37e54e1e2289ee68f8928d6326cb3bd)
+++ tests/exceptions/virtual-cast.cfa	(revision d9f6d80d8df19fe3b1670a149e2686898f61fbee)
@@ -93,6 +93,5 @@
 }
 
-int main (int argc, char * argv[]) {
-
+int main() {
 	gamma * tri = malloc(); tri->virtual_table = &_gamma_vtable_instance;
 	beta * mid = (virtual beta *)tri;
