Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 2b7bf594d8eac1448a7d5f1c40c03dbafb082b34)
+++ src/SynTree/Declaration.h	(revision a4477dbd4d1ed0b585755f522fc5c5e57363dfd1)
@@ -164,4 +164,6 @@
 	CompoundStmt *get_statements() const { return statements; }
 	void set_statements( CompoundStmt *newValue ) { statements = newValue; }
+
+	static FunctionDecl * newFunction( const std::string & name, FunctionType * type, CompoundStmt * statements );
 
 	virtual FunctionDecl *clone() const override { return new FunctionDecl( *this ); }
Index: src/SynTree/FunctionDecl.cc
===================================================================
--- src/SynTree/FunctionDecl.cc	(revision 2b7bf594d8eac1448a7d5f1c40c03dbafb082b34)
+++ src/SynTree/FunctionDecl.cc	(revision a4477dbd4d1ed0b585755f522fc5c5e57363dfd1)
@@ -44,4 +44,8 @@
 	delete type;
 	delete statements;
+}
+
+FunctionDecl * FunctionDecl::newFunction( const std::string & name, FunctionType * type, CompoundStmt * statements ) {
+	return new FunctionDecl( name, Type::StorageClasses(), LinkageSpec::C, type, statements );
 }
 
