Index: src/AST/Decl.cpp
===================================================================
--- src/AST/Decl.cpp	(revision 488371226e8f9a90c148825967facd2a8a86ba76)
+++ src/AST/Decl.cpp	(revision c36a4198e8f7c0fb7cafec586aebca035adef800)
@@ -33,20 +33,7 @@
 static UniqueId lastUniqueId = 0;
 
-using IdMapType = std::unordered_map< UniqueId, readonly<Decl> >;
-static IdMapType idMap;
-
 void Decl::fixUniqueId() {
 	if ( uniqueId ) return;  // ensure only set once
 	uniqueId = ++lastUniqueId;
-	// The extra readonly pointer is causing some reference counting issues.
-	// idMap[ uniqueId ] = this;
-}
-
-readonly<Decl> Decl::fromId( UniqueId id ) {
-	// Right now this map is always empty, so don't use it.
-	assert( false );
-	IdMapType::const_iterator i = idMap.find( id );
-	if ( i != idMap.end() ) return i->second;
-	return {};
 }
 
Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision 488371226e8f9a90c148825967facd2a8a86ba76)
+++ src/AST/Decl.hpp	(revision c36a4198e8f7c0fb7cafec586aebca035adef800)
@@ -56,6 +56,4 @@
 	/// Ensures this node has a unique ID
 	void fixUniqueId();
-	/// Get canonical declaration for unique ID
-	static readonly<Decl> fromId( UniqueId id );
 
 	const Decl * accept( Visitor & v ) const override = 0;
