Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 90320ac74138120be93a3a04ce96e84c8fff1256)
+++ src/AST/Pass.impl.hpp	(revision c1489666b381f6199fa75cdca4ded7d6ac7a0339)
@@ -406,5 +406,5 @@
 template< typename core_t >
 inline void ast::accept_all( ast::TranslationUnit & unit, ast::Pass< core_t > & visitor ) {
-	if ( auto ptr = __pass::translation_unit::get_cptr( visitor.core, 0 ) ) {
+	if ( auto ptr = __pass::translationUnit( visitor.core, 0 ) ) {
 		ValueGuard<const TranslationUnit *> guard( *ptr );
 		*ptr = &unit;
Index: src/AST/Pass.proto.hpp
===================================================================
--- src/AST/Pass.proto.hpp	(revision 90320ac74138120be93a3a04ce96e84c8fff1256)
+++ src/AST/Pass.proto.hpp	(revision c1489666b381f6199fa75cdca4ded7d6ac7a0339)
@@ -257,5 +257,5 @@
 	} else {
 		node = core.previsit( node );
-		assertf(node, "Previsit must not return NULL");
+		assertf( node, "Previsit must not return nullptr." );
 	}
 }
@@ -310,4 +310,5 @@
 FIELD_PTR( at_cleanup, __pass::at_cleanup_t )
 FIELD_PTR( visitor, ast::Pass<core_t> * const )
+FIELD_PTR( translationUnit, const TranslationUnit * )
 
 // Remove the macro to make sure we don't clash
@@ -506,18 +507,4 @@
 } // namespace forall
 
-// For passes that need access to the global context. Searches `translationUnit`
-namespace translation_unit {
-	template<typename core_t>
-	static inline auto get_cptr( core_t & core, int )
-			-> decltype( &core.translationUnit ) {
-		return &core.translationUnit;
-	}
-
-	template<typename core_t>
-	static inline const TranslationUnit ** get_cptr( core_t &, long ) {
-		return nullptr;
-	}
-}
-
 // For passes, usually utility passes, that have a result.
 namespace result {
