Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision ca7843715cba84b4e9ce1f8e7b56b833997ab71d)
+++ src/Parser/ParseNode.h	(revision 046e04a04cc207781863108be32a8dea21fabf65)
@@ -415,4 +415,6 @@
 				result->location = cur->location;
 				* out++ = result;
+			} else {
+				assertf(false, "buildList unknown type");
 			} // if
 		} catch( SemanticError &e ) {
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision ca7843715cba84b4e9ce1f8e7b56b833997ab71d)
+++ src/Parser/StatementNode.cc	(revision 046e04a04cc207781863108be32a8dea21fabf65)
@@ -175,6 +175,6 @@
 
 Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
-	std::list< Statement * > branches;
-	buildMoveList< Statement, StatementNode >( catch_stmt, branches );
+	std::list< CatchStmt * > branches;
+	buildMoveList< CatchStmt, StatementNode >( catch_stmt, branches );
 	CompoundStmt *tryBlock = safe_dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
 	FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
