Index: src/AST/Pass.proto.hpp
===================================================================
--- src/AST/Pass.proto.hpp	(revision 3f3bfe5a8343901bfbae18ba2a227bf47060ed62)
+++ src/AST/Pass.proto.hpp	(revision 1fcc2f30478f99b76bf195052432c3e7cb2a6b74)
@@ -311,5 +311,5 @@
 		SYMTAB_FUNC1( addUnion  , const UnionDecl *     );
 		SYMTAB_FUNC1( addTrait  , const TraitDecl *     );
-		SYMTAB_FUNC2( addWith   , const std::vector< ptr<Expr> > &, const Node * );
+		SYMTAB_FUNC2( addWith   , const std::vector< ptr<Expr> > &, const Decl * );
 
 		// A few extra functions have more complicated behaviour, they are hand written
@@ -363,5 +363,5 @@
 		// Some simple scoping rules
 		template<typename pass_t>
-		static inline auto enter( pass_t & pass, int, const ast::ParameterizedType * type ) 
+		static inline auto enter( pass_t & pass, int, const ast::ParameterizedType * type )
 		-> decltype( pass.subs, void() ) {
 			if ( ! type->forall.empty() ) pass.subs.beginScope();
@@ -372,5 +372,5 @@
 
 		template<typename pass_t>
-		static inline auto leave( pass_t & pass, int, const ast::ParameterizedType * type ) 
+		static inline auto leave( pass_t & pass, int, const ast::ParameterizedType * type )
 		-> decltype( pass.subs, void() ) {
 			if ( ! type->forall.empty() ) { pass.subs.endScope(); }
@@ -385,5 +385,5 @@
 			return &pass.subs;
 		}
-		
+
 		template<typename pass_t>
 		static inline ast::ForallSubstitutionTable * subs( pass_t &, long ) { return nullptr; }
@@ -391,7 +391,7 @@
 		// Replaces a TypeInstType's base TypeDecl according to the table
 		template<typename pass_t>
-		static inline auto replace( pass_t & pass, int, const ast::TypeInstType *& inst ) 
+		static inline auto replace( pass_t & pass, int, const ast::TypeInstType *& inst )
 		-> decltype( pass.subs, void() ) {
-			inst = ast::mutate_field( 
+			inst = ast::mutate_field(
 				inst, &ast::TypeInstType::base, pass.subs.replace( inst->base ) );
 		}
