Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision 574894da3862370244ebdde2b204e3cc6a6d5c5b)
+++ src/Common/PassVisitor.h	(revision 4670c791e276890b50caee6d89362de9e62c28a8)
@@ -291,17 +291,17 @@
 	bool_ref * get_visit_children_ptr() { return visit_children_impl(pass, 0); }
 
-	void indexerScopeEnter  ()                             { indexer_impl_enterScope  ( pass, 0       ); }
-	void indexerScopeLeave  ()                             { indexer_impl_leaveScope  ( pass, 0       ); }
-	void indexerAddId       ( DeclarationWithType * node ) { indexer_impl_addId       ( pass, 0, node ); }
-	void indexerAddType     ( NamedTypeDecl       * node ) { indexer_impl_addType     ( pass, 0, node ); }
-	void indexerAddStruct   ( const std::string   & id   ) { indexer_impl_addStruct   ( pass, 0, id   ); }
-	void indexerAddStruct   ( StructDecl          * node ) { indexer_impl_addStruct   ( pass, 0, node ); }
-	void indexerAddStructFwd( StructDecl          * node ) { indexer_impl_addStructFwd( pass, 0, node ); }
-	void indexerAddEnum     ( EnumDecl            * node ) { indexer_impl_addEnum     ( pass, 0, node ); }
-	void indexerAddUnion    ( const std::string   & id   ) { indexer_impl_addUnion    ( pass, 0, id   ); }
-	void indexerAddUnion    ( UnionDecl           * node ) { indexer_impl_addUnion    ( pass, 0, node ); }
-	void indexerAddUnionFwd ( UnionDecl           * node ) { indexer_impl_addUnionFwd ( pass, 0, node ); }
-	void indexerAddTrait    ( TraitDecl           * node ) { indexer_impl_addTrait    ( pass, 0, node ); }
-	void indexerAddWith     ( WithStmt            * node ) { indexer_impl_addWith    ( pass, 0, node ); }
+	void indexerScopeEnter  ()                                    { indexer_impl_enterScope  ( pass, 0       ); }
+	void indexerScopeLeave  ()                                    { indexer_impl_leaveScope  ( pass, 0       ); }
+	void indexerAddId       ( DeclarationWithType       * node  ) { indexer_impl_addId       ( pass, 0, node ); }
+	void indexerAddType     ( NamedTypeDecl             * node  ) { indexer_impl_addType     ( pass, 0, node ); }
+	void indexerAddStruct   ( const std::string         & id    ) { indexer_impl_addStruct   ( pass, 0, id   ); }
+	void indexerAddStruct   ( StructDecl                * node  ) { indexer_impl_addStruct   ( pass, 0, node ); }
+	void indexerAddStructFwd( StructDecl                * node  ) { indexer_impl_addStructFwd( pass, 0, node ); }
+	void indexerAddEnum     ( EnumDecl                  * node  ) { indexer_impl_addEnum     ( pass, 0, node ); }
+	void indexerAddUnion    ( const std::string         & id    ) { indexer_impl_addUnion    ( pass, 0, id   ); }
+	void indexerAddUnion    ( UnionDecl                 * node  ) { indexer_impl_addUnion    ( pass, 0, node ); }
+	void indexerAddUnionFwd ( UnionDecl                 * node  ) { indexer_impl_addUnionFwd ( pass, 0, node ); }
+	void indexerAddTrait    ( TraitDecl                 * node  ) { indexer_impl_addTrait    ( pass, 0, node ); }
+	void indexerAddWith     ( std::list< Expression * > & exprs ) { indexer_impl_addWith     ( pass, 0, exprs ); }
 
 
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 574894da3862370244ebdde2b204e3cc6a6d5c5b)
+++ src/Common/PassVisitor.impl.h	(revision 4670c791e276890b50caee6d89362de9e62c28a8)
@@ -994,5 +994,5 @@
 		// catch statements introduce a level of scope (for the caught exception)
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		indexerAddWith( node );
+		indexerAddWith( node->exprs );
 		maybeAccept_impl( node->stmt, *this );
 	}
@@ -1007,5 +1007,5 @@
 		// catch statements introduce a level of scope (for the caught exception)
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		indexerAddWith( node );
+		indexerAddWith( node->exprs );
 		maybeMutate_impl( node->stmt, *this );
 	}
Index: src/Common/PassVisitor.proto.h
===================================================================
--- src/Common/PassVisitor.proto.h	(revision 574894da3862370244ebdde2b204e3cc6a6d5c5b)
+++ src/Common/PassVisitor.proto.h	(revision 4670c791e276890b50caee6d89362de9e62c28a8)
@@ -202,11 +202,11 @@
 static inline void indexer_impl_##func ( pass_type &, long, type ) { }                                                          \
 
-INDEXER_FUNC( addId     , DeclarationWithType * );
-INDEXER_FUNC( addType   , NamedTypeDecl *       );
-INDEXER_FUNC( addStruct , StructDecl *          );
-INDEXER_FUNC( addEnum   , EnumDecl *            );
-INDEXER_FUNC( addUnion  , UnionDecl *           );
-INDEXER_FUNC( addTrait  , TraitDecl *           );
-INDEXER_FUNC( addWith   , WithStmt *            );
+INDEXER_FUNC( addId     , DeclarationWithType *       );
+INDEXER_FUNC( addType   , NamedTypeDecl *             );
+INDEXER_FUNC( addStruct , StructDecl *                );
+INDEXER_FUNC( addEnum   , EnumDecl *                  );
+INDEXER_FUNC( addUnion  , UnionDecl *                 );
+INDEXER_FUNC( addTrait  , TraitDecl *                 );
+INDEXER_FUNC( addWith   , std::list< Expression * > & );
 
 
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 574894da3862370244ebdde2b204e3cc6a6d5c5b)
+++ src/SymTab/Indexer.cc	(revision 4670c791e276890b50caee6d89362de9e62c28a8)
@@ -589,6 +589,6 @@
 	}
 
-	void Indexer::addWith( WithStmt * stmt ) {
-		for ( Expression * expr : stmt->exprs ) {
+	void Indexer::addWith( std::list< Expression * > & withExprs ) {
+		for ( Expression * expr : withExprs ) {
 			if ( expr->result ) {
 				AggregateDecl * aggr = expr->result->stripReferences()->getAggr();
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision 574894da3862370244ebdde2b204e3cc6a6d5c5b)
+++ src/SymTab/Indexer.h	(revision 4670c791e276890b50caee6d89362de9e62c28a8)
@@ -84,5 +84,5 @@
 
 		/// adds all of the IDs from WithStmt exprs
-		void addWith( WithStmt * );
+		void addWith( std::list< Expression * > & withExprs );
 
 		/// adds all of the members of the Aggregate (addWith helper)
