Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 6355ba7fa56aef7fc4a20b7b34bdecc9f0057b4f)
+++ src/AST/Convert.cpp	(revision 6e3e0717ec56c7a045d8552c013dee38b13461c4)
@@ -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,
@@ -1384,10 +1389,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 ) {
@@ -1403,5 +1402,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() );
@@ -1418,5 +1417,5 @@
 
 	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 ) {
@@ -1431,7 +1430,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)
@@ -1805,9 +1806,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)
 			);
