Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision 3c09d47c9fd762e66a4beaa4d096faba191e8d2a)
+++ src/Common/PassVisitor.h	(revision 2065609d54faba689bd6249eb4c159415fb8bf29)
@@ -75,4 +75,5 @@
 	virtual void visit( CatchStmt *catchStmt ) override final;
 	virtual void visit( FinallyStmt *finallyStmt ) override final;
+	virtual void visit( WaitForStmt *waitforStmt ) override final;
 	virtual void visit( NullStmt *nullStmt ) override final;
 	virtual void visit( DeclStmt *declStmt ) override final;
@@ -159,7 +160,8 @@
 	virtual Statement* mutate( ReturnStmt *returnStmt ) override final;
 	virtual Statement* mutate( ThrowStmt *throwStmt ) override final;
-	virtual Statement* mutate( TryStmt *returnStmt ) override final;
+	virtual Statement* mutate( TryStmt *tryStmt ) override final;
 	virtual Statement* mutate( CatchStmt *catchStmt ) override final;
-	virtual Statement* mutate( FinallyStmt *catchStmt ) override final;
+	virtual Statement* mutate( FinallyStmt *finallyStmt ) override final;
+	virtual Statement* mutate( WaitForStmt *waitforStmt ) override final;
 	virtual NullStmt* mutate( NullStmt *nullStmt ) override final;
 	virtual Statement* mutate( DeclStmt *declStmt ) override final;
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 3c09d47c9fd762e66a4beaa4d096faba191e8d2a)
+++ src/Common/PassVisitor.impl.h	(revision 2065609d54faba689bd6249eb4c159415fb8bf29)
@@ -541,4 +541,6 @@
 }
 
+//--------------------------------------------------------------------------
+// FinallyStmt
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( FinallyStmt * node ) {
@@ -547,4 +549,23 @@
 
 template< typename pass_type >
+Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) {
+	MUTATE_BODY( Statement, node );
+}
+
+//--------------------------------------------------------------------------
+// WaitForStmt
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( WaitForStmt * node ) {
+	VISIT_BODY( node );
+}
+
+template< typename pass_type >
+Statement * PassVisitor< pass_type >::mutate( WaitForStmt * node ) {
+	MUTATE_BODY( Statement, node );
+}
+
+//--------------------------------------------------------------------------
+// NullStmt
+template< typename pass_type >
 void PassVisitor< pass_type >::visit( NullStmt * node ) {
 	VISIT_BODY( node );
@@ -552,4 +573,11 @@
 
 template< typename pass_type >
+NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) {
+	MUTATE_BODY( NullStmt, node );
+}
+
+//--------------------------------------------------------------------------
+// DeclStmt
+template< typename pass_type >
 void PassVisitor< pass_type >::visit( DeclStmt * node ) {
 	VISIT_BODY( node );
@@ -557,4 +585,11 @@
 
 template< typename pass_type >
+Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) {
+	MUTATE_BODY( Statement, node );
+}
+
+//--------------------------------------------------------------------------
+// ImplicitCtorDtorStmt
+template< typename pass_type >
 void PassVisitor< pass_type >::visit( ImplicitCtorDtorStmt * node ) {
 	VISIT_BODY( node );
@@ -562,6 +597,18 @@
 
 template< typename pass_type >
+Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {
+	MUTATE_BODY( Statement, node );
+}
+
+//--------------------------------------------------------------------------
+// ApplicationExpr
+template< typename pass_type >
 void PassVisitor< pass_type >::visit( ApplicationExpr * node ) {
 	VISIT_BODY( node );
+}
+
+template< typename pass_type >
+Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) {
+	MUTATE_BODY( Expression, node );
 }
 
@@ -944,29 +991,4 @@
 
 template< typename pass_type >
-Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) {
-	MUTATE_BODY( Statement, node );
-}
-
-template< typename pass_type >
-NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) {
-	MUTATE_BODY( NullStmt, node );
-}
-
-template< typename pass_type >
-Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) {
-	MUTATE_BODY( Statement, node );
-}
-
-template< typename pass_type >
-Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {
-	MUTATE_BODY( Statement, node );
-}
-
-template< typename pass_type >
-Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) {
-	MUTATE_BODY( Expression, node );
-}
-
-template< typename pass_type >
 Expression * PassVisitor< pass_type >::mutate( NameExpr * node ) {
 	MUTATE_BODY( Expression, node );
