Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 46438e4ffd894c6cf1b7dacdb2ec9544acb66176)
+++ src/AST/Convert.cpp	(revision a62749f3627cd28d63d6cbffd0c8ddf31fa3795c)
@@ -10,6 +10,6 @@
 // Created On       : Thu May 09 15::37::05 2019
 // Last Modified By : Andrew Beach
-// Last Modified On : Thu May 06 19:51:00 2019
-// Update Count     : 10
+// Last Modified On : Man Jun 10 11:51:00 2019
+// Update Count     : 11
 //
 
@@ -92,4 +92,9 @@
 
 	Label makeLabel(Statement * labelled, const ast::Label& label) {
+		// This probably will leak memory, but only until we get rid of the old tree.
+		if ( nullptr == labelled && label.location.isSet() ) {
+			labelled = new NullStmt();
+			labelled->location = label.location;
+		}
 		return Label(
 			label.name,
@@ -1390,10 +1395,4 @@
 	// Local Utilities:
 
-	#define construct(T, key, ...) ({ \
-		void * data = ::operator new(sizeof(T)); \
-		cache.emplace( key, (T*)data ); \
-		new (data) T( __VA_ARGS__ ); \
-	})
-
 	template<typename NewT, typename OldT>
 	NewT * getAccept1( OldT old ) {
@@ -1409,5 +1408,5 @@
 
 	template<typename NewT, typename OldC>
-	std::vector< ast::ptr<NewT> > getAcceptV( OldC& old ) {
+	std::vector< ast::ptr<NewT> > getAcceptV( const OldC& old ) {
 		std::vector< ast::ptr<NewT> > ret;
 		ret.reserve( old.size() );
@@ -1422,7 +1421,7 @@
 #	define GET_ACCEPT_V(child, type) \
 		getAcceptV< ast::type, decltype( old->child ) >( old->child )
-	
+
 	template<typename NewT, typename OldC>
-	std::deque< ast::ptr<NewT> > getAcceptD( OldC& old ) {
+	std::deque< ast::ptr<NewT> > getAcceptD( const OldC& old ) {
 		std::deque< ast::ptr<NewT> > ret;
 		for ( auto a : old ) {
@@ -1437,7 +1436,9 @@
 		getAcceptD< ast::type, decltype( old->child ) >( old->child )
 
-	ast::Label make_label(Label* old) {
+	ast::Label make_label(const Label* old) {
+		CodeLocation const & location =
+		    ( old->labelled ) ? old->labelled->location : CodeLocation();
 		return ast::Label(
-			old->labelled->location,
+			location,
 			old->name,
 			GET_ACCEPT_V(attributes, Attribute)
@@ -1827,9 +1828,8 @@
 			}
 
-			Label label = old->originalTarget;
 			auto stmt = new ast::BranchStmt(
 				old->location,
 				kind,
-				make_label(&label),
+				make_label(&old->originalTarget),
 				GET_LABELS_V(old->labels)
 			);
