Index: tests/concurrent/mutexstmt/.expect/monitors.txt
===================================================================
--- tests/concurrent/mutexstmt/.expect/monitors.txt	(revision a4d098c76c3c50c175fe15d0626de2c3028e7c63)
+++ tests/concurrent/mutexstmt/.expect/monitors.txt	(revision a4d098c76c3c50c175fe15d0626de2c3028e7c63)
@@ -0,0 +1,4 @@
+Start Test: single monitor mutual exclusion
+End Test: single monitor mutual exclusion
+Start Test: multi monitor deadlock/mutual exclusion
+End Test: multi monitor deadlock/mutual exclusion
Index: tests/concurrent/mutexstmt/locks.cfa
===================================================================
--- tests/concurrent/mutexstmt/locks.cfa	(revision a4d098c76c3c50c175fe15d0626de2c3028e7c63)
+++ tests/concurrent/mutexstmt/locks.cfa	(revision a4d098c76c3c50c175fe15d0626de2c3028e7c63)
@@ -0,0 +1,75 @@
+#include <mutex_stmt_locks.hfa>
+#include <locks.hfa>
+
+const unsigned int num_times = 10000;
+
+owner_lock m1, m2, m3, m4, m5;
+
+thread T_Mutex {};
+bool insideFlag = false;
+int count = 0;
+
+void main( T_Mutex & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) count++;
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+thread T_Multi {};
+
+void main( T_Multi & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m3, m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+
+int main() {
+	processor p[10];
+
+	printf("Start Test: single lock mutual exclusion\n");
+	{
+		T_Mutex t[10];
+	}
+	printf("End Test: single lock mutual exclusion\n");
+	printf("Start Test: multi lock deadlock/mutual exclusion\n");
+	{
+		T_Multi t[10];
+	}
+	printf("End Test: multi lock deadlock/mutual exclusion\n");
+}
Index: tests/concurrent/mutexstmt/monitors.cfa
===================================================================
--- tests/concurrent/mutexstmt/monitors.cfa	(revision a4d098c76c3c50c175fe15d0626de2c3028e7c63)
+++ tests/concurrent/mutexstmt/monitors.cfa	(revision a4d098c76c3c50c175fe15d0626de2c3028e7c63)
@@ -0,0 +1,79 @@
+#include <monitor.hfa>
+#include <stdio.h>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+const unsigned int num_times = 10000;
+
+monitor monitor_t {};
+
+monitor_t m1, m2, m3, m4, m5;
+
+thread T_Mutex {};
+bool insideFlag = false;
+int count = 0;
+
+void main( T_Mutex & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) count++;
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+thread T_Multi {};
+
+void main( T_Multi & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m3, m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+
+int main() {
+	processor p[10];
+
+	printf("Start Test: single monitor mutual exclusion\n");
+	{
+		T_Mutex t[10];
+	}
+	printf("End Test: single monitor mutual exclusion\n");
+	printf("Start Test: multi monitor deadlock/mutual exclusion\n");
+	{
+		T_Multi t[10];
+	}
+	printf("End Test: multi monitor deadlock/mutual exclusion\n");
+}
