Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision b95fe406ae5fdb4a6c73a33d6416be39215e2e53)
+++ src/SymTab/Indexer.cc	(revision 5fe35d604ff44afc2ac1fbd0310797d09fa78823)
@@ -567,4 +567,23 @@
 	}
 
+	void Indexer::addIds( const std::list< DeclarationWithType * > & decls ) {
+		for ( auto d : decls ) {
+			addId( d );
+		}
+	}
+
+	void Indexer::addTypes( const std::list< TypeDecl * > & tds ) {
+		for ( auto td : tds ) {
+			addType( td );
+			addIds( td->assertions );
+		}
+	}
+
+	void Indexer::addFunctionType( FunctionType * ftype ) {
+		addTypes( ftype->forall );
+		addIds( ftype->returnVals );
+		addIds( ftype->parameters );
+	}
+
 	void Indexer::enterScope() {
 		++scope;
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision b95fe406ae5fdb4a6c73a33d6416be39215e2e53)
+++ src/SymTab/Indexer.h	(revision 5fe35d604ff44afc2ac1fbd0310797d09fa78823)
@@ -76,4 +76,13 @@
 		void addTrait( TraitDecl *decl );
 
+		/// convenience function for adding a list of Ids to the indexer
+		void addIds( const std::list< DeclarationWithType * > & decls );
+
+		/// convenience function for adding a list of forall parameters to the indexer
+		void addTypes( const std::list< TypeDecl * > & tds );
+
+		/// convenience function for adding all of the declarations in a function type to the indexer
+		void addFunctionType( FunctionType * ftype );
+
 		bool doDebug = false; ///< Display debugging trace?
 	  private:
