Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision ccb6fd8069f4545eb03073f2d55def7cf656a997)
+++ src/Common/PassVisitor.h	(revision 6cebfefc948a4195311c8d0203ba01ed9c1a1bb3)
@@ -124,4 +124,6 @@
 	virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt ) override final;
 	virtual void visit( const ImplicitCtorDtorStmt * impCtorDtorStmt ) override final;
+	virtual void visit( MutexStmt * mutexStmt ) override final;
+	virtual void visit( const MutexStmt * mutexStmt ) override final;
 
 	virtual void visit( ApplicationExpr * applicationExpr ) override final;
@@ -291,4 +293,5 @@
 	virtual Statement * mutate( DeclStmt * declStmt ) override final;
 	virtual Statement * mutate( ImplicitCtorDtorStmt * impCtorDtorStmt ) override final;
+	virtual Statement * mutate( MutexStmt * mutexStmt ) override final;
 
 	virtual Expression * mutate( ApplicationExpr * applicationExpr ) override final;
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision ccb6fd8069f4545eb03073f2d55def7cf656a997)
+++ src/Common/PassVisitor.impl.h	(revision 6cebfefc948a4195311c8d0203ba01ed9c1a1bb3)
@@ -1781,4 +1781,40 @@
 
 //--------------------------------------------------------------------------
+// MutexStmt
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( MutexStmt * node ) {
+	VISIT_START( node );
+	// mutex statements introduce a level of scope (for the initialization)
+	maybeAccept_impl( node->mutexObjs, *this );
+	{
+		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
+		node->stmt = visitStatement( node->stmt );
+	}
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( const MutexStmt * node ) {
+	VISIT_START( node );
+	maybeAccept_impl( node->mutexObjs, *this );
+	{
+		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
+		visitStatement( node->stmt );
+	}
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Statement * PassVisitor< pass_type >::mutate( MutexStmt * node ) {
+	MUTATE_START( node );
+	maybeMutate_impl( node->mutexObjs, *this );
+	{
+		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
+		node->stmt = mutateStatement( node->stmt );
+	}
+	MUTATE_END( Statement, node );
+}
+
+//--------------------------------------------------------------------------
 // ApplicationExpr
 template< typename pass_type >
