Index: src/GenPoly/InstantiateGenericNew.cpp
===================================================================
--- src/GenPoly/InstantiateGenericNew.cpp	(revision ae1d15124ce32b2a9afb229d30e293e49dd1577b)
+++ src/GenPoly/InstantiateGenericNew.cpp	(revision 8f1e03582aaeca10f66354d884763209e5fe44bc)
@@ -22,4 +22,5 @@
 
 #include "AST/Copy.hpp"                // for deepCopy
+#include "AST/Create.hpp"              // for asForward
 #include "AST/Pass.hpp"                // for Pass, WithGuard, WithShortCi...
 #include "AST/TranslationUnit.hpp"     // for TranslationUnit
@@ -255,16 +256,4 @@
 void stripInstParams( ast::BaseInstType * inst ) {
 	inst->params.clear();
-}
-
-// TODO: I think this should become a generic helper.
-template<typename Aggr>
-Aggr * asForward( Aggr const * decl ) {
-	if ( !decl->body ) {
-		return nullptr;
-	}
-	Aggr * mut = ast::deepCopy( decl );
-	mut->body = false;
-	mut->members.clear();
-	return mut;
 }
 
@@ -553,5 +542,5 @@
 			// Forward declare before recursion. (TODO: Only when needed, #199.)
 			insert( inst, typeSubs, newDecl );
-			if ( AggrDecl const * forwardDecl = asForward( newDecl ) ) {
+			if ( AggrDecl const * forwardDecl = ast::asForward( newDecl ) ) {
 				declsToAddBefore.push_back( forwardDecl );
 			}
