Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 87701b607d65c7537ed3e6026229861ab1667c6b)
+++ src/AST/Pass.impl.hpp	(revision e61207e7b1f6fa896f900ac3b84bd28c9bfb5ffe)
@@ -752,5 +752,7 @@
 	VISIT_START( node );
 
-	maybe_accept( node, &ReturnStmt::expr );
+	VISIT(
+		maybe_accept( node, &ReturnStmt::expr );
+	)
 
 	VISIT_END( Stmt, node );
@@ -759,13 +761,29 @@
 //--------------------------------------------------------------------------
 // ThrowStmt
-
-template< typename pass_type >
-void PassVisitor< pass_type >::visit( ThrowStmt * node ) {
-	VISIT_START( node );
-
-	maybeAccept_impl( node->expr, *this );
-	maybeAccept_impl( node->target, *this );
-
-	VISIT_END( node );
+template< typename pass_t >
+const ast::Stmt * ast::Pass< pass_t >::visit( const ast::ThrowStmt * node ) {
+	VISIT_START( node );
+
+	VISIT(
+		maybe_accept( node, &ThrowStmt::expr   );
+		maybe_accept( node, &ThrowStmt::target );
+	)
+
+	VISIT_END( Stmt, node );
+}
+
+//--------------------------------------------------------------------------
+// TryStmt
+template< typename pass_t >
+const ast::Stmt * ast::Pass< pass_t >::visit( const ast::TryStmt * node ) {
+	VISIT_START( node );
+
+	VISIT(
+		maybe_accept( node, &TryStmt::block        );
+		maybe_accept( node, &TryStmt::handlers     );
+		maybe_accept( node, &TryStmt::finallyBlock );
+	)
+
+	VISIT_END( Stmt, node );
 }
 
