Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision eba615c5424dd82366d9a48ec81bfa84553913e1)
+++ src/AST/Convert.cpp	(revision 157a816f5a2a48ee5d5fb80399f461e1087a715d)
@@ -10,6 +10,6 @@
 // Created On       : Thu May 09 15::37::05 2019
 // Last Modified By : Andrew Beach
-// Last Modified On : Tue May 28 12:00:00 2019
-// Update Count     : 7
+// Last Modified On : Wed May 29 11:05:00 2019
+// Update Count     : 8
 //
 
@@ -25,4 +25,5 @@
 #include "AST/TypeSubstitution.hpp"
 
+#include "SymTab/Autogen.h"
 #include "SynTree/Attribute.h"
 #include "SynTree/Declaration.h"
@@ -40,4 +41,13 @@
 	}
 };
+
+//================================================================================================
+namespace {
+
+// This is to preserve the SymTab::dereferenceOperator hack. It does not (and perhaps should not)
+// allow us to use the same stratagy in the new ast.
+ast::FunctionDecl * dereferenceOperator = nullptr;
+
+}
 
 //================================================================================================
@@ -159,4 +169,7 @@
 		);
 		decl->withExprs = get<Expression>().acceptL( node->withExprs );
+		if ( dereferenceOperator == node ) {
+			SymTab::dereferenceOperator = decl;
+		}
 		return declWithTypePostamble( decl, node );
 	}
@@ -1439,4 +1452,8 @@
 
 		this->node = decl;
+
+		if ( SymTab::dereferenceOperator == old ) {
+			dereferenceOperator = decl;
+		}
 	}
 
@@ -1484,5 +1501,5 @@
 	virtual void visit( EnumDecl * old ) override final {
 		if ( inCache( old ) ) return;
-		auto decl = new ast::UnionDecl(
+		auto decl = new ast::EnumDecl(
 			old->location,
 			old->name,
@@ -1504,5 +1521,5 @@
 	virtual void visit( TraitDecl * old ) override final {
 		if ( inCache( old ) ) return;
-		auto decl = new ast::UnionDecl(
+		auto decl = new ast::TraitDecl(
 			old->location,
 			old->name,
