Index: src/Tuples/Explode.cc
===================================================================
--- src/Tuples/Explode.cc	(revision 5fb68301d498ada1460cdc13b877a761bc05cd1c)
+++ src/Tuples/Explode.cc	(revision 9aaac6e93085196ddc22e508c0fdfa1ee11ae660)
@@ -15,6 +15,8 @@
 
 #include "Explode.h"
-#include "SynTree/Mutator.h"
-#include "Common/PassVisitor.h"
+#include <list>                  // for list
+
+#include "SynTree/Mutator.h"     // for Mutator
+#include "Common/PassVisitor.h"  // for PassVisitor
 
 namespace Tuples {
Index: src/Tuples/Explode.h
===================================================================
--- src/Tuples/Explode.h	(revision 5fb68301d498ada1460cdc13b877a761bc05cd1c)
+++ src/Tuples/Explode.h	(revision 9aaac6e93085196ddc22e508c0fdfa1ee11ae660)
@@ -16,12 +16,14 @@
 #pragma once
 
-#include "ResolvExpr/AlternativeFinder.h"
-#include "ResolvExpr/Resolver.h"
+#include <iterator>                  // for back_inserter, back_insert_iterator
 
-#include "SynTree/Expression.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Type.h"
+#include "ResolvExpr/Alternative.h"  // for Alternative, AltList
+#include "SynTree/Expression.h"      // for Expression, UniqueExpr, AddressExpr
+#include "SynTree/Type.h"            // for TupleType, Type
+#include "Tuples.h"                  // for maybeImpure
 
-#include "Tuples.h"
+namespace SymTab {
+class Indexer;
+}  // namespace SymTab
 
 namespace Tuples {
Index: src/Tuples/TupleAssignment.cc
===================================================================
--- src/Tuples/TupleAssignment.cc	(revision 5fb68301d498ada1460cdc13b877a761bc05cd1c)
+++ src/Tuples/TupleAssignment.cc	(revision 9aaac6e93085196ddc22e508c0fdfa1ee11ae660)
@@ -14,23 +14,30 @@
 //
 
-#include "ResolvExpr/AlternativeFinder.h"
-#include "ResolvExpr/Alternative.h"
-#include "ResolvExpr/typeops.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Initializer.h"
-#include "Tuples.h"
-#include "Explode.h"
-#include "Common/SemanticError.h"
+#include <algorithm>                       // for transform
+#include <cassert>                         // for assert
+#include <iterator>                        // for back_insert_iterator, back...
+#include <list>                            // for _List_const_iterator, _Lis...
+#include <memory>                          // for unique_ptr, allocator_trai...
+#include <string>                          // for string
+
 #include "CodeGen/OperatorTable.h"
-#include "InitTweak/InitTweak.h"
-#include "InitTweak/GenInit.h"
-
-#include <functional>
-#include <algorithm>
-#include <iterator>
-#include <iostream>
-#include <cassert>
-#include <set>
-#include <unordered_set>
+#include "Common/UniqueName.h"             // for UniqueName
+#include "Common/utility.h"                // for zipWith
+#include "Explode.h"                       // for explode
+#include "InitTweak/GenInit.h"             // for genCtorInit
+#include "InitTweak/InitTweak.h"           // for getPointerBase, isAssignment
+#include "Parser/LinkageSpec.h"            // for Cforall
+#include "ResolvExpr/Alternative.h"        // for AltList, Alternative
+#include "ResolvExpr/AlternativeFinder.h"  // for AlternativeFinder, simpleC...
+#include "ResolvExpr/Cost.h"               // for Cost
+#include "ResolvExpr/Resolver.h"           // for resolveCtorInit
+#include "ResolvExpr/TypeEnvironment.h"    // for TypeEnvironment
+#include "SynTree/Declaration.h"           // for ObjectDecl
+#include "SynTree/Expression.h"            // for Expression, CastExpr, Name...
+#include "SynTree/Initializer.h"           // for ConstructorInit, SingleInit
+#include "SynTree/Statement.h"             // for ExprStmt
+#include "SynTree/Type.h"                  // for Type, Type::Qualifiers
+#include "SynTree/TypeSubstitution.h"      // for TypeSubstitution
+#include "SynTree/Visitor.h"               // for Visitor
 
 namespace Tuples {
Index: src/Tuples/TupleExpansion.cc
===================================================================
--- src/Tuples/TupleExpansion.cc	(revision 5fb68301d498ada1460cdc13b877a761bc05cd1c)
+++ src/Tuples/TupleExpansion.cc	(revision 9aaac6e93085196ddc22e508c0fdfa1ee11ae660)
@@ -14,21 +14,24 @@
 //
 
-#include <iterator>
-#include <iostream>
-#include <cassert>
-#include "Tuples.h"
-#include "Common/PassVisitor.h"
-#include "Common/ScopedMap.h"
-#include "GenPoly/DeclMutator.h"
-#include "InitTweak/GenInit.h"
-#include "InitTweak/InitTweak.h"
-#include "ResolvExpr/typeops.h"
-#include "SymTab/Mangler.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Initializer.h"
-#include "SynTree/Mutator.h"
-#include "SynTree/Statement.h"
-#include "SynTree/Type.h"
+#include <stddef.h>               // for size_t
+#include <cassert>                // for assert
+#include <list>                   // for list
+
+#include "Common/PassVisitor.h"   // for PassVisitor, WithDeclsToAdd, WithGu...
+#include "Common/ScopedMap.h"     // for ScopedMap
+#include "Common/utility.h"       // for CodeLocation
+#include "GenPoly/DeclMutator.h"  // for DeclMutator
+#include "InitTweak/InitTweak.h"  // for getFunction
+#include "Parser/LinkageSpec.h"   // for Spec, C, Intrinsic
+#include "SynTree/Constant.h"     // for Constant
+#include "SynTree/Declaration.h"  // for StructDecl, DeclarationWithType
+#include "SynTree/Expression.h"   // for UntypedMemberExpr, Expression, Uniq...
+#include "SynTree/Label.h"        // for operator==, Label
+#include "SynTree/Mutator.h"      // for Mutator
+#include "SynTree/Type.h"         // for Type, Type::Qualifiers, TupleType
+#include "SynTree/Visitor.h"      // for Visitor
+
+class CompoundStmt;
+class TypeSubstitution;
 
 namespace Tuples {
