Index: tests/io/io-acquire-in.cfa
===================================================================
--- tests/io/io-acquire-in.cfa	(revision 3bb1292129f5be158f2a3192bf864d1ab2191cb9)
+++ tests/io/io-acquire-in.cfa	(revision 3bb1292129f5be158f2a3192bf864d1ab2191cb9)
@@ -0,0 +1,60 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// io-acquire.cfa -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Mar  1 18:40:09 2021
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Oct  6 18:04:58 2021
+// Update Count     : 72
+// 
+
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <mutex_stmt.hfa>
+
+	// above output used as input to parallel threads 
+thread T2 {};
+void main( T2 & ) {
+	int a, b, c, d, e, f, g, h, i;
+	for ( 100 ) {										// expression protection
+		mutex(sin) sin | a | b | c | d | e | f | g | h | i;
+	}
+	mutex( sin ) {										// statement protection
+		for ( 100 ) {
+			sin  | a | b | c | d | e | f | g | h | i;
+		}
+	}
+	{													// duplicate protection demonstrating recursive lock
+		ifstream & h1( ifstream & is ) {				// helper
+			mutex( is ) return is | a | b | c | d;		// unnecessary mutex
+		}
+		ifstream & h2( ifstream & is ) {				// helper
+			mutex( is ) return is | f | g | h | i;		// unnecessary mutex
+		}
+		mutex( sin ) {									// unnecessary mutex
+			for ( 5 ) {
+				mutex( sin ) {
+					sin  | a | b | c | d | e | f | g | h | i;
+					sin  | h1 | e | h2;					// refactored code
+				}
+			}
+		}
+	}
+}
+int main() {
+	processor p;
+	{
+		T2 t[5];
+	}
+	sout | "done";
+} 
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa io-acquire.cfa" //
+// End: //
Index: tests/io/io-acquire-out.cfa
===================================================================
--- tests/io/io-acquire-out.cfa	(revision 3bb1292129f5be158f2a3192bf864d1ab2191cb9)
+++ tests/io/io-acquire-out.cfa	(revision 3bb1292129f5be158f2a3192bf864d1ab2191cb9)
@@ -0,0 +1,60 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// io-acquire.cfa -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Mar  1 18:40:09 2021
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Oct  6 18:04:58 2021
+// Update Count     : 72
+// 
+
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <mutex_stmt.hfa>
+
+thread T {};
+void main( T & ) {
+	// output from parallel threads should not be scrambled
+
+	for ( 100 ) {										// expression protection
+		mutex(sout) sout | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+	}
+	mutex( sout ) {										// statement protection
+		for ( 100 ) {
+			sout | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+		}
+	}
+	{													// duplicate protection demonstrating recursive lock
+		ofstream & h1( ofstream & os ) {				// helper
+			mutex( os ) return os | 1 | 2 | 3 | 4;		// unnecessary mutex
+		}
+		ofstream & h2( ofstream & os ) {				// helper
+			mutex( os ) return os | 6 | 7 | 8 | 9;		// unnecessary mutex
+		}
+		mutex( sout ) {									// unnecessary mutex
+			for ( 100 ) {
+				mutex( sout ) {
+					sout | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+					sout | h1 | 5 | h2;					// refactored code
+				}
+			}
+		}
+	}
+}
+
+int main() {
+	processor p;
+	{
+		T t[5];
+	}
+} 
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa io-acquire.cfa" //
+// End: //
