Index: src/ResolvExpr/AlternativePrinter.cc
===================================================================
--- src/ResolvExpr/AlternativePrinter.cc	(revision 522363e8799469eb8e37c765e3c5d28f46066d9a)
+++ src/ResolvExpr/AlternativePrinter.cc	(revision bff09c8c0c9e3f3a60f531ef14be5ead36733eb5)
@@ -26,9 +26,9 @@
 
 namespace ResolvExpr {
-	AlternativePrinter::AlternativePrinter( std::ostream &os ) : SymTab::Indexer( false ), os( os ) {}
+	AlternativePrinter::AlternativePrinter( std::ostream &os ) : os( os ) {}
 
-	void AlternativePrinter::visit( ExprStmt *exprStmt ) {
+	void AlternativePrinter::postvisit( ExprStmt *exprStmt ) {
 		TypeEnvironment env;
-		AlternativeFinder finder( *this, env );
+		AlternativeFinder finder( indexer, env );
 		finder.findWithAdjustment( exprStmt->get_expr() );
 		int count = 1;
Index: src/ResolvExpr/AlternativePrinter.h
===================================================================
--- src/ResolvExpr/AlternativePrinter.h	(revision 522363e8799469eb8e37c765e3c5d28f46066d9a)
+++ src/ResolvExpr/AlternativePrinter.h	(revision bff09c8c0c9e3f3a60f531ef14be5ead36733eb5)
@@ -18,15 +18,14 @@
 #include <iostream>          // for ostream
 
-#include "SymTab/Indexer.h"  // for Indexer
+#include "Common/PassVisitor.h"
 
 class ExprStmt;
 
 namespace ResolvExpr {
-	class AlternativePrinter final : public SymTab::Indexer {
+	class AlternativePrinter final : public WithIndexer {
 	  public:
 		AlternativePrinter( std::ostream &os );
 
-		using SymTab::Indexer::visit;
-		virtual void visit( ExprStmt *exprStmt ) override;
+		void postvisit( ExprStmt *exprStmt );
 	  private:
 		std::ostream &os;
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 522363e8799469eb8e37c765e3c5d28f46066d9a)
+++ src/main.cc	(revision bff09c8c0c9e3f3a60f531ef14be5ead36733eb5)
@@ -35,4 +35,5 @@
 #include "CodeTools/DeclStats.h"            // for printDeclStats
 #include "CodeTools/TrackLoc.h"             // for fillLocations
+#include "Common/PassVisitor.h"
 #include "Common/CompilerError.h"           // for CompilerError
 #include "Common/SemanticError.h"           // for SemanticError
@@ -250,5 +251,5 @@
 
 		if ( expraltp ) {
-			ResolvExpr::AlternativePrinter printer( cout );
+			PassVisitor<ResolvExpr::AlternativePrinter> printer( cout );
 			acceptAll( translationUnit, printer );
 			return 0;
