Index: src/GenPoly/Box.cpp
===================================================================
--- src/GenPoly/Box.cpp	(revision a55ebcca1b712f00e2fd94a9d348511dd62c8f8a)
+++ src/GenPoly/Box.cpp	(revision 47bd20465f2182ae5c385b3cbe8dc852430cb48c)
@@ -25,7 +25,8 @@
 #include "AST/GenericSubstitution.hpp" // for genericSubstitution
 #include "CodeGen/OperatorTable.h"     // for isAssignment
+#include "Common/Iterate.hpp"          // for group_iterate
 #include "Common/ScopedMap.h"          // for ScopedMap
+#include "Common/ToString.hpp"         // for toCString
 #include "Common/UniqueName.h"         // for UniqueName
-#include "Common/utility.h"            // for toCString, group_iterate
 #include "GenPoly/FindFunction.h"      // for findFunction
 #include "GenPoly/GenPoly.h"           // for getFunctionType, ...
@@ -236,5 +237,5 @@
 	) );
 	// TODO: Polymorphic types will be out of the struct declaration scope.
-	// Should be removed by PolyGenericCalculator.
+	// This breaks invariants until it is corrected later.
 	for ( auto const & member : enumerate( decl->members ) ) {
 		auto dwt = member.val.strict_as<ast::DeclWithType>();
@@ -309,4 +310,5 @@
 	) );
 	// TODO: Polymorphic types will be out of the union declaration scope.
+	// This breaks invariants until it is corrected later.
 	for ( auto const & member : decl->members ) {
 		auto dwt = member.strict_as<ast::DeclWithType>();
@@ -575,6 +577,6 @@
 		if ( adapters.contains( mangleName ) ) continue;
 		std::string adapterName = makeAdapterName( mangleName );
-		// TODO: The forwarding here is problematic because these
-		// declarations are not rooted anywhere in the translation unit.
+		// NODE: This creates floating nodes, breaking invariants.
+		// This is corrected in the RewireAdapters sub-pass.
 		adapters.insert(
 			mangleName,
@@ -639,6 +641,4 @@
 
 	TypeVarMap exprTypeVars;
-	// TODO: Should this take into account the variables already bound in
-	// scopeTypeVars ([ex] remove them from exprTypeVars)?
 	makeTypeVarMap( function, exprTypeVars );
 	auto dynRetType = isDynRet( function, exprTypeVars );
@@ -1521,5 +1521,4 @@
 
 // --------------------------------------------------------------------------
-// TODO: Ideally, there would be no floating nodes at all.
 /// Corrects the floating nodes created in CallAdapter.
 struct RewireAdapters final : public ast::WithGuards {
@@ -1837,5 +1836,5 @@
 
 	// Not all members of a polymorphic type are themselves of a polymorphic
-	// type; in this cas the member expression should be wrapped and
+	// type; in this case the member expression should be wrapped and
 	// dereferenced to form an lvalue.
 	if ( !isPolyType( memberType, scopeTypeVars ) ) {
