Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision fb31cb899c2ed0144f33897963468ed96bf3edf3)
+++ src/Parser/parser.yy	(revision 633c711adba4084001416121d1aa328f448e5181)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  2 18:18:55 2017
-// Update Count     : 2835
+// Last Modified On : Mon Oct 16 11:07:29 2017
+// Update Count     : 2892
 //
 
@@ -250,4 +250,5 @@
 %type<sn> exception_statement			handler_clause				finally_clause
 %type<catch_kind> handler_key
+%type<sn> mutex_statement
 %type<en> when_clause					when_clause_opt				waitfor						timeout
 %type<sn> waitfor_statement
@@ -807,4 +808,5 @@
 	| jump_statement
 	| with_statement
+	| mutex_statement
 	| waitfor_statement
 	| exception_statement
@@ -1031,4 +1033,10 @@
 	;
 
+// If MUTEX becomes a general qualifier, there are shift/reduce conflicts, so change syntax to "with mutex".
+mutex_statement:
+	MUTEX '(' argument_expression_list ')' statement
+		{ $$ = nullptr; }								// FIX ME
+	;
+
 when_clause:
 	WHEN '(' comma_expression ')'
@@ -1549,6 +1557,4 @@
 	| VOLATILE
 		{ $$ = DeclarationNode::newTypeQualifier( Type::Volatile ); }
-	| MUTEX
-		{ $$ = DeclarationNode::newTypeQualifier( Type::Mutex ); }
 	| ATOMIC
 		{ $$ = DeclarationNode::newTypeQualifier( Type::Atomic ); }
@@ -2703,4 +2709,6 @@
 	paren_identifier attribute_list_opt
 		{ $$ = $1->addQualifiers( $2 ); }
+	| '&' MUTEX paren_identifier attribute_list_opt
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( DeclarationNode::newTypeQualifier( Type::Mutex ), OperKinds::AddressOf ) )->addQualifiers( $4 ); }
 	| identifier_parameter_ptr
 	| identifier_parameter_array attribute_list_opt
@@ -2743,4 +2751,5 @@
 //
 //		typedef int foo;
+//		forall( otype T ) foo( T );
 //		int f( int foo ); // redefine typedef name in new scope
 //
@@ -2750,4 +2759,6 @@
 	typedef attribute_list_opt
 		{ $$ = $1->addQualifiers( $2 ); }
+	| '&' MUTEX typedef attribute_list_opt
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( DeclarationNode::newTypeQualifier( Type::Mutex ), OperKinds::AddressOf ) )->addQualifiers( $4 ); }
 	| type_parameter_ptr
 	| type_parameter_array attribute_list_opt
@@ -2896,4 +2907,6 @@
 abstract_parameter_declarator:
 	abstract_parameter_ptr
+	| '&' MUTEX attribute_list_opt
+		{ $$ = DeclarationNode::newPointer( DeclarationNode::newTypeQualifier( Type::Mutex ), OperKinds::AddressOf )->addQualifiers( $3 ); }
 	| abstract_parameter_array attribute_list_opt
 		{ $$ = $1->addQualifiers( $2 ); }
