Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision f1cb1937a0ab02686fc201e2066ee4fc8a157ce6)
+++ tests/Makefile.am	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -119,5 +119,11 @@
 .PHONY : concurrency list .validate .test_makeflags
 .INTERMEDIATE : .validate .validate.cfa .test_makeflags
-EXTRA_PROGRAMS = array-collections/boxed avl_test linkonce concurrency/waitfor/autogen_destructor linking/mangling/anon .dummy_hack # build but do not install
+EXTRA_PROGRAMS = array-collections/boxed \
+	avl_test \
+	linkonce \
+	concurrency/waitfor/autogen_destructor \
+	concurrency/waitfor/static_inline \
+	linking/mangling/anon \
+	.dummy_hack # build but do not install
 EXTRA_DIST = test.py \
 	pybin/__init__.py \
@@ -154,5 +160,6 @@
 avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa
 linkonce_SOURCES = link-once/main.cfa link-once/partner.cfa
-concurrency_waitfor_autogen_destructor_SOURCES = concurrency/waitfor/autogen_destructor.cfa concurrency/waitfor/nodestructor.cfa
+concurrency_waitfor_autogen_destructor_SOURCES = concurrency/waitfor/autogen_destructor.cfa concurrency/waitfor/gendestructor.cfa
+concurrency_waitfor_static_inline_SOURCES = concurrency/waitfor/static_inline.cfa concurrency/waitfor/inlinemutex.cfa
 linking_mangling_anon_SOURCES = linking/mangling/header.hfa linking/mangling/lib.cfa linking/mangling/main.cfa
 # automake doesn't know we still need C/CPP rules so pretend like we have a C program
Index: tests/concurrency/waitfor/autogen_destructor.cfa
===================================================================
--- tests/concurrency/waitfor/autogen_destructor.cfa	(revision f1cb1937a0ab02686fc201e2066ee4fc8a157ce6)
+++ tests/concurrency/waitfor/autogen_destructor.cfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -1,3 +1,3 @@
-#include "nodestructor.hfa"
+#include "gendestructor.hfa"
 
 int main(int, char*[]) {
Index: tests/concurrency/waitfor/gendestructor.cfa
===================================================================
--- tests/concurrency/waitfor/gendestructor.cfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
+++ tests/concurrency/waitfor/gendestructor.cfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -0,0 +1,8 @@
+#include "gendestructor.hfa"
+
+#include <fstream.hfa>
+
+void main(MyThread &t) {
+	waitfor(^?{} : t);
+	sout | "Destructor called";
+}
Index: tests/concurrency/waitfor/gendestructor.hfa
===================================================================
--- tests/concurrency/waitfor/gendestructor.hfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
+++ tests/concurrency/waitfor/gendestructor.hfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -0,0 +1,5 @@
+#include <thread.hfa>
+
+thread MyThread {};
+
+void main(MyThread &t);
Index: tests/concurrency/waitfor/inlinemutex.cfa
===================================================================
--- tests/concurrency/waitfor/inlinemutex.cfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
+++ tests/concurrency/waitfor/inlinemutex.cfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -0,0 +1,11 @@
+#include "inlinemutex.hfa"
+
+void main( Cleaner & this ) {
+	waitfor( cleanup : this ) {
+		sout | "Cleaning";
+	}
+
+	waitfor( ^?{} : this ) {
+		sout | "Done";
+	}
+}
Index: tests/concurrency/waitfor/inlinemutex.hfa
===================================================================
--- tests/concurrency/waitfor/inlinemutex.hfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
+++ tests/concurrency/waitfor/inlinemutex.hfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -0,0 +1,10 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+
+thread Cleaner {};
+
+static inline void ^?{} ( Cleaner &mutex this ) {}
+
+static inline void cleanup( Cleaner &mutex this ) {}
+
+void main( Cleaner & this );
Index: sts/concurrency/waitfor/nodestructor.cfa
===================================================================
--- tests/concurrency/waitfor/nodestructor.cfa	(revision f1cb1937a0ab02686fc201e2066ee4fc8a157ce6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include "nodestructor.hfa"
-
-#include <fstream.hfa>
-
-void main(MyThread &t) {
-	waitfor(^?{} : t);
-	sout | "Destructor called";
-}
Index: sts/concurrency/waitfor/nodestructor.hfa
===================================================================
--- tests/concurrency/waitfor/nodestructor.hfa	(revision f1cb1937a0ab02686fc201e2066ee4fc8a157ce6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-#include <thread.hfa>
-
-thread MyThread {};
-
-void main(MyThread &t);
Index: tests/concurrency/waitfor/static_inline.cfa
===================================================================
--- tests/concurrency/waitfor/static_inline.cfa	(revision f1cb1937a0ab02686fc201e2066ee4fc8a157ce6)
+++ tests/concurrency/waitfor/static_inline.cfa	(revision 2b3ebe5f5e7cddf25d1a8ef1e4b2c2dc0bd64128)
@@ -1,20 +1,3 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-
-thread Cleaner {};
-
-static inline void ^?{} ( Cleaner &mutex this ) {}
-
-static inline void cleanup( Cleaner &mutex this ) {}
-
-void main( Cleaner & this ) {
-	waitfor( cleanup : this ) {
-		sout | "Cleaning";
-	}
-
-	waitfor( ^?{} : this ) {
-		sout | "Done";
-	}
-}
+#include "inlinemutex.hfa"
 
 int main() {
