Index: src/Tuples/TupleExpansionNew.cpp
===================================================================
--- src/Tuples/TupleExpansionNew.cpp	(revision ce1d72168b2e1590d531c1c3b7cbc9f32c4033e7)
+++ src/Tuples/TupleExpansionNew.cpp	(revision 3ce3fb97e89cb97f06fe6aa3db95abece8e3f625)
@@ -10,6 +10,6 @@
 // Created On       : Mon Aug 23 15:36:09 2021
 // Last Modified By : Andrew Beach
-// Last Modified On : Mon Jul 29 14:06:00 2022
-// Update Count     : 2
+// Last Modified On : Mon Aug 15 17:00:00 2022
+// Update Count     : 3
 //
 
@@ -100,5 +100,9 @@
 }
 
-struct TupleAssignExpander {
+/// Replaces Tuple Assign & Index Expressions, and Tuple Types.
+struct TupleMainExpander :
+		public ast::WithGuards,
+		public ast::WithVisitorRef<TupleMainExpander>,
+		public ast::WithDeclsToAdd<> {
 	ast::Expr const * postvisit( ast::TupleAssignExpr const * expr ) {
 		// Just move the env on the new top level expression.
@@ -106,10 +110,5 @@
 			&ast::TupleAssignExpr::env, expr->env.get() );
 	}
-};
-
-struct TupleTypeReplacer :
-		public ast::WithGuards,
-		public ast::WithVisitorRef<TupleTypeReplacer>,
-		public ast::WithDeclsToAdd<> {
+
 	void previsit( ast::ParseNode const * node ) {
 		GuardValue( location ) = &node->location;
@@ -185,10 +184,5 @@
 		return newType;
 	}
-private:
-	ScopedMap< int, ast::StructDecl const * > typeMap;
-	CodeLocation const * location = nullptr;
-};
-
-struct TupleIndexExpander {
+
 	ast::Expr const * postvisit( ast::TupleIndexExpr const * expr ) {
 		CodeLocation const & location = expr->location;
@@ -221,4 +215,7 @@
 		return memberExpr;
 	}
+private:
+	ScopedMap< int, ast::StructDecl const * > typeMap;
+	CodeLocation const * location = nullptr;
 };
 
@@ -275,8 +272,6 @@
 
 void expandTuples( ast::TranslationUnit & translationUnit ) {
-	// These may not have to be seperate passes.
-	ast::Pass<TupleAssignExpander>::run( translationUnit );
-	ast::Pass<TupleTypeReplacer>::run( translationUnit );
-	ast::Pass<TupleIndexExpander>::run( translationUnit );
+	// These can't just be combined simply (there might be a way with work).
+	ast::Pass<TupleMainExpander>::run( translationUnit );
 	ast::Pass<TupleExprExpander>::run( translationUnit );
 }
