Index: src/ControlStruct/FixLabels.cpp
===================================================================
--- src/ControlStruct/FixLabels.cpp	(revision de31a1dab64197e0a0c855f9f84cc2ad2ea6d9f5)
+++ src/ControlStruct/FixLabels.cpp	(revision cb921d4770c22b67fa61edafc42e00923c249680)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov  1 09:39:00 2021
 // Last Modified By : Andrew Beach
-// Last Modified On : Mon Nov  5 19:20:00 2021
-// Update Count     : 2
+// Last Modified On : Mon Nov  8 10:53:00 2021
+// Update Count     : 3
 //
 
@@ -28,10 +28,6 @@
 class FixLabelsCore final : public ast::WithGuards {
 	LabelToStmt labelTable;
-	LabelGenerator * label_gen;
 public:
-	FixLabelsCore( LabelGenerator * gen = nullptr ) :
-		labelTable(),
-		label_gen( gen ? gen : LabelGenerator::getGenerator() )
-	{}
+	FixLabelsCore( LabelGenerator * gen = nullptr ) : labelTable() {}
 
 	void previsit( const ast::FunctionDecl * );
@@ -59,5 +55,5 @@
 	}
 	return ast::mutate_field( decl, &ast::FunctionDecl::stmts,
-		multiLevelExitUpdate( decl->stmts.get(), labelTable, label_gen ) );
+		multiLevelExitUpdate( decl->stmts.get(), labelTable ) );
 }
 
Index: src/ControlStruct/MultiLevelExit.cpp
===================================================================
--- src/ControlStruct/MultiLevelExit.cpp	(revision de31a1dab64197e0a0c855f9f84cc2ad2ea6d9f5)
+++ src/ControlStruct/MultiLevelExit.cpp	(revision cb921d4770c22b67fa61edafc42e00923c249680)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov  1 13:48:00 2021
 // Last Modified By : Andrew Beach
-// Last Modified On : Mon Nov  5 19:20:00 2021
-// Update Count     : 1
+// Last Modified On : Mon Nov  8 10:56:00 2021
+// Update Count     : 2
 //
 
@@ -105,5 +105,5 @@
 		public ast::WithVisitorRef<MultiLevelExitCore>,
 		public ast::WithShortCircuiting, public ast::WithGuards {
-	MultiLevelExitCore( const LabelToStmt & lt, LabelGenerator * lg );
+	MultiLevelExitCore( const LabelToStmt & lt );
 
 	void previsit( const ast::FunctionDecl * );
@@ -131,5 +131,4 @@
 	std::vector<Entry> enclosing_control_structures;
 	ast::Label break_label;
-	LabelGenerator * label_gen;
 	bool inFinally;
 
@@ -154,7 +153,6 @@
 }
 
-MultiLevelExitCore::MultiLevelExitCore(
-		const LabelToStmt & lt, LabelGenerator * lg ) :
-	target_table( lt ), break_label( CodeLocation(), "" ), label_gen( lg ),
+MultiLevelExitCore::MultiLevelExitCore( const LabelToStmt & lt ) :
+	target_table( lt ), break_label( CodeLocation(), "" ),
 	inFinally( false )
 {}
@@ -169,5 +167,5 @@
 	bool isLabeled = !stmt->labels.empty();
 	if ( isLabeled ) {
-		ast::Label breakLabel = label_gen->newLabel( "blockBreak", stmt );
+		ast::Label breakLabel = LabelGenerator::newLabel( "blockBreak", stmt );
 		enclosing_control_structures.emplace_back( stmt, breakLabel );
 		GuardAction( [this]() { enclosing_control_structures.pop_back(); } );
@@ -380,5 +378,5 @@
 	ast::CaseStmt * mutStmt = ast::mutate( stmt );
 
-	ast::Label fallLabel = label_gen->newLabel( "fallThrough", stmt );
+	ast::Label fallLabel = LabelGenerator::newLabel( "fallThrough", stmt );
 	if ( !mutStmt->stmts.empty() ) {
 		// Ensure that the stack isn't corrupted by exceptions in fixBlock.
@@ -419,5 +417,5 @@
 	bool labeledBlock = !stmt->labels.empty();
 	if ( labeledBlock ) {
-		ast::Label breakLabel = label_gen->newLabel( "blockBreak", stmt );
+		ast::Label breakLabel = LabelGenerator::newLabel( "blockBreak", stmt );
 		enclosing_control_structures.emplace_back( stmt, breakLabel );
 		GuardAction( [this](){ enclosing_control_structures.pop_back(); } );
@@ -442,5 +440,5 @@
 
 void MultiLevelExitCore::previsit( const ast::SwitchStmt * stmt ) {
-	ast::Label label = label_gen->newLabel( "switchBreak", stmt );
+	ast::Label label = LabelGenerator::newLabel( "switchBreak", stmt );
 	auto it = std::find_if( stmt->stmts.rbegin(), stmt->stmts.rend(), isDefaultCase );
 
@@ -448,5 +446,5 @@
 		? (it)->strict_as<ast::CaseStmt>() : nullptr;
 	ast::Label defaultLabel = defaultCase
-		? label_gen->newLabel( "fallThroughDefault", defaultCase )
+		? LabelGenerator::newLabel( "fallThroughDefault", defaultCase )
 		: ast::Label( stmt->location, "" );
 	enclosing_control_structures.emplace_back( stmt, label, defaultLabel );
@@ -506,5 +504,5 @@
 	bool isLabeled = !stmt->labels.empty();
 	if ( isLabeled ) {
-		ast::Label breakLabel = label_gen->newLabel( "blockBreak", stmt );
+		ast::Label breakLabel = LabelGenerator::newLabel( "blockBreak", stmt );
 		enclosing_control_structures.emplace_back( stmt, breakLabel );
 		GuardAction([this](){ enclosing_control_structures.pop_back(); } );
@@ -551,6 +549,6 @@
 	// Remember is loop before going onto mutate the body.
 	// The labels will be folded in if they are used.
-	ast::Label breakLabel = label_gen->newLabel( "loopBreak", loopStmt );
-	ast::Label contLabel = label_gen->newLabel( "loopContinue", loopStmt );
+	ast::Label breakLabel = LabelGenerator::newLabel( "loopBreak", loopStmt );
+	ast::Label contLabel = LabelGenerator::newLabel( "loopContinue", loopStmt );
 	enclosing_control_structures.emplace_back( loopStmt, breakLabel, contLabel );
 	GuardAction( [this](){ enclosing_control_structures.pop_back(); } );
@@ -607,8 +605,7 @@
 const ast::CompoundStmt * multiLevelExitUpdate(
     	const ast::CompoundStmt * stmt,
-		const LabelToStmt & labelTable,
-		LabelGenerator * labelGen ) {
+		const LabelToStmt & labelTable ) {
 	// Must start in the body, so FunctionDecls can be a stopping point.
-	ast::Pass<MultiLevelExitCore> visitor( labelTable, labelGen );
+	ast::Pass<MultiLevelExitCore> visitor( labelTable );
 	const ast::CompoundStmt * ret = stmt->accept( visitor );
 	return ret;
Index: src/ControlStruct/MultiLevelExit.hpp
===================================================================
--- src/ControlStruct/MultiLevelExit.hpp	(revision de31a1dab64197e0a0c855f9f84cc2ad2ea6d9f5)
+++ src/ControlStruct/MultiLevelExit.hpp	(revision cb921d4770c22b67fa61edafc42e00923c249680)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov  1 13:49:00 2021
 // Last Modified By : Andrew Beach
-// Last Modified On : Mon Nov  5 19:20:00 2021
-// Update Count     : 1
+// Last Modified On : Mon Nov  8 10:53:00 2021
+// Update Count     : 3
 //
 
@@ -31,5 +31,5 @@
 /// Mutate a function body to handle multi-level exits.
 const ast::CompoundStmt * multiLevelExitUpdate(
-	const ast::CompoundStmt *, const LabelToStmt &, LabelGenerator *);
+	const ast::CompoundStmt *, const LabelToStmt & );
 
 }
