Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision aa72198ced56bbcddd28dbb3b919708fc8b12df3)
+++ src/Common/PassVisitor.impl.h	(revision 9dcb6539e06f9ebfe8593419da5d22e6d5af6fad)
@@ -807,5 +807,5 @@
 
 	maybeAccept( node->block       , *this );
-	maybeAccept  ( node->handlers    , *this );
+	maybeAccept( node->handlers    , *this );
 	maybeAccept( node->finallyBlock, *this );
 
@@ -818,5 +818,5 @@
 
 	maybeMutateRef( node->block       , *this );
-	maybeMutateRef     ( node->handlers    , *this );
+	maybeMutateRef( node->handlers    , *this );
 	maybeMutateRef( node->finallyBlock, *this );
 
@@ -918,5 +918,5 @@
 	indexerScopedAccept( node->result  , *this );
 	maybeAccept        ( node->function, *this );
-	maybeAccept          ( node->args    , *this );
+	maybeAccept        ( node->args    , *this );
 
 	VISIT_END( node );
@@ -930,5 +930,5 @@
 	indexerScopedMutate( node->result  , *this );
 	maybeMutateRef     ( node->function, *this );
-	maybeMutateRef          ( node->args    , *this );
+	maybeMutateRef     ( node->args    , *this );
 
 	MUTATE_END( Expression, node );
@@ -1467,7 +1467,7 @@
 	indexerScopedAccept( node->result     , *this );
 	maybeAccept        ( node->callExpr   , *this );
-	maybeAccept          ( node->tempDecls  , *this );
-	maybeAccept          ( node->returnDecls, *this );
-	maybeAccept          ( node->dtors      , *this );
+	maybeAccept        ( node->tempDecls  , *this );
+	maybeAccept        ( node->returnDecls, *this );
+	maybeAccept        ( node->dtors      , *this );
 
 	VISIT_END( node );
@@ -1481,7 +1481,7 @@
 	indexerScopedMutate( node->result     , *this );
 	maybeMutateRef     ( node->callExpr   , *this );
-	maybeMutateRef          ( node->tempDecls  , *this );
-	maybeMutateRef          ( node->returnDecls, *this );
-	maybeMutateRef          ( node->dtors      , *this );
+	maybeMutateRef     ( node->tempDecls  , *this );
+	maybeMutateRef     ( node->returnDecls, *this );
+	maybeMutateRef     ( node->dtors      , *this );
 
 	MUTATE_END( Expression, node );
@@ -1566,4 +1566,27 @@
 
 	indexerScopedAccept( node->result, *this );
+	maybeAccept        ( node->exprs , *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Expression * PassVisitor< pass_type >::mutate( UntypedTupleExpr * node ) {
+	MUTATE_START( node );
+
+	indexerScopedMutate( node->env   , *this );
+	indexerScopedMutate( node->result, *this );
+	maybeMutateRef     ( node->exprs , *this );
+
+	MUTATE_END( Expression, node );
+}
+
+//--------------------------------------------------------------------------
+// TupleExpr
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( TupleExpr * node ) {
+	VISIT_START( node );
+
+	indexerScopedAccept( node->result, *this );
 	maybeAccept          ( node->exprs , *this );
 
@@ -1572,27 +1595,4 @@
 
 template< typename pass_type >
-Expression * PassVisitor< pass_type >::mutate( UntypedTupleExpr * node ) {
-	MUTATE_START( node );
-
-	indexerScopedMutate( node->env   , *this );
-	indexerScopedMutate( node->result, *this );
-	maybeMutateRef          ( node->exprs , *this );
-
-	MUTATE_END( Expression, node );
-}
-
-//--------------------------------------------------------------------------
-// TupleExpr
-template< typename pass_type >
-void PassVisitor< pass_type >::visit( TupleExpr * node ) {
-	VISIT_START( node );
-
-	indexerScopedAccept( node->result, *this );
-	maybeAccept          ( node->exprs , *this );
-
-	VISIT_END( node );
-}
-
-template< typename pass_type >
 Expression * PassVisitor< pass_type >::mutate( TupleExpr * node ) {
 	MUTATE_START( node );
@@ -1600,5 +1600,5 @@
 	indexerScopedMutate( node->env   , *this );
 	indexerScopedMutate( node->result, *this );
-	maybeMutateRef          ( node->exprs , *this );
+	maybeMutateRef     ( node->exprs , *this );
 
 	MUTATE_END( Expression, node );
@@ -1664,6 +1664,6 @@
 	indexerScopedAccept( node->result     , *this );
 	maybeAccept        ( node->statements , *this );
-	maybeAccept          ( node->returnDecls, *this );
-	maybeAccept          ( node->dtors      , *this );
+	maybeAccept        ( node->returnDecls, *this );
+	maybeAccept        ( node->dtors      , *this );
 
 	VISIT_END( node );
@@ -1681,6 +1681,6 @@
 	indexerScopedMutate( node->result     , *this );
 	maybeMutateRef     ( node->statements , *this );
-	maybeMutateRef          ( node->returnDecls, *this );
-	maybeMutateRef          ( node->dtors      , *this );
+	maybeMutateRef     ( node->returnDecls, *this );
+	maybeMutateRef     ( node->dtors      , *this );
 
 	MUTATE_END( Expression, node );
Index: src/Common/PassVisitor.proto.h
===================================================================
--- src/Common/PassVisitor.proto.h	(revision aa72198ced56bbcddd28dbb3b919708fc8b12df3)
+++ src/Common/PassVisitor.proto.h	(revision 9dcb6539e06f9ebfe8593419da5d22e6d5af6fad)
@@ -61,8 +61,8 @@
 template< typename TreeType, typename VisitorType >
 inline void indexerScopedAccept( TreeType * tree, VisitorType & visitor ) {
-	// auto guard = makeFuncGuard(
-	// 	[&visitor]() { visitor.indexerScopeEnter(); },
-	// 	[&visitor]() { visitor.indexerScopeLeave(); }
-	// );
+	auto guard = makeFuncGuard(
+		[&visitor]() { visitor.indexerScopeEnter(); },
+		[&visitor]() { visitor.indexerScopeLeave(); }
+	);
 	maybeAccept( tree, visitor );
 }
@@ -70,8 +70,8 @@
 template< typename TreeType, typename MutatorType >
 inline void indexerScopedMutate( TreeType *& tree, MutatorType & mutator ) {
-	// auto guard = makeFuncGuard(
-	// 	[&mutator]() { mutator.indexerScopeEnter(); },
-	// 	[&mutator]() { mutator.indexerScopeLeave(); }
-	// );
+	auto guard = makeFuncGuard(
+		[&mutator]() { mutator.indexerScopeEnter(); },
+		[&mutator]() { mutator.indexerScopeLeave(); }
+	);
 	tree = maybeMutate( tree, mutator );
 }
@@ -175,5 +175,5 @@
 template<typename pass_type>
 static inline auto indexer_impl_enterScope( pass_type & pass, int ) -> decltype( pass.indexer.enterScope(), void() ) {
-	// pass.indexer.enterScope();
+	pass.indexer.enterScope();
 }
 
@@ -183,5 +183,5 @@
 template<typename pass_type>
 static inline auto indexer_impl_leaveScope( pass_type & pass, int ) -> decltype( pass.indexer.leaveScope(), void() ) {
-	// pass.indexer.leaveScope();
+	pass.indexer.leaveScope();
 }
 
@@ -193,5 +193,5 @@
 template<typename pass_type>                                                                                                   \
 static inline auto indexer_impl_##func ( pass_type & pass, int, type arg ) -> decltype( pass.indexer.func( arg ), void() ) {   \
-	/*pass.indexer.func( arg );*/                                                                                                \
+	pass.indexer.func( arg );                                                                                                \
 }                                                                                                                              \
                                                                                                                                \
@@ -209,7 +209,7 @@
 template<typename pass_type>
 static inline auto indexer_impl_addStructFwd( pass_type & pass, int, StructDecl * decl ) -> decltype( pass.indexer.addStruct( decl ), void() ) {
-	// StructDecl * fwd = new StructDecl( decl->name );
-	// cloneAll( decl->parameters, fwd->parameters );
-	// pass.indexer.addStruct( fwd );
+	StructDecl * fwd = new StructDecl( decl->name );
+	cloneAll( decl->parameters, fwd->parameters );
+	pass.indexer.addStruct( fwd );
 }
 
@@ -219,7 +219,7 @@
 template<typename pass_type>
 static inline auto indexer_impl_addUnionFwd( pass_type & pass, int, UnionDecl * decl ) -> decltype( pass.indexer.addUnion( decl ), void() ) {
-	// UnionDecl * fwd = new UnionDecl( decl->name );
-	// cloneAll( decl->parameters, fwd->parameters );
-	// pass.indexer.addUnion( fwd );
+	UnionDecl * fwd = new UnionDecl( decl->name );
+	cloneAll( decl->parameters, fwd->parameters );
+	pass.indexer.addUnion( fwd );
 }
 
@@ -229,7 +229,7 @@
 template<typename pass_type>
 static inline auto indexer_impl_addStruct( pass_type & pass, int, const std::string & str ) -> decltype( pass.indexer.addStruct( str ), void() ) {
-	// if ( ! pass.indexer.lookupStruct( str ) ) {
-	// 	pass.indexer.addStruct( str );
-	// }
+	if ( ! pass.indexer.lookupStruct( str ) ) {
+		pass.indexer.addStruct( str );
+	}
 }
 
@@ -239,7 +239,7 @@
 template<typename pass_type>
 static inline auto indexer_impl_addUnion( pass_type & pass, int, const std::string & str ) -> decltype( pass.indexer.addUnion( str ), void() ) {
-	// if ( ! pass.indexer.lookupUnion( str ) ) {
-	// 	pass.indexer.addUnion( str );
-	// }
+	if ( ! pass.indexer.lookupUnion( str ) ) {
+		pass.indexer.addUnion( str );
+	}
 }
 
