Index: src/Concurrency/Keywords.cc
===================================================================
--- src/Concurrency/Keywords.cc	(revision 4fbdfae0bcc812e14e8400b3c8e8fdba44da96c8)
+++ src/Concurrency/Keywords.cc	(revision 870d1f07b0414f5cd1a417233d1aa21c147c220f)
@@ -447,8 +447,9 @@
 		//Makes sure it's not a copy
 		PointerType* pty = dynamic_cast< PointerType * >( ty );
-		if( ! pty ) throw SemanticError( "Mutex argument must be of pointer/reference type ", arg );
+		ReferenceType* rty = dynamic_cast< ReferenceType * >( ty );
+		if( ! pty && ! rty ) throw SemanticError( "Mutex argument must be of pointer/reference type ", arg );
 
 		//Make sure the we are pointing directly to a type
-		Type* base = pty->get_base();
+		Type* base = pty ? pty->get_base() : rty->get_base();
 		if(  dynamic_cast< PointerType * >( base ) ) throw SemanticError( "Mutex argument have exactly one level of indirection ", arg );
 
