Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 7c3f3bed98f4c85c46ddf743d7aba64073f91d3b)
+++ src/SynTree/Declaration.h	(revision 7ca8411617dffde8513a28fe4eeb8c1acefb5225)
@@ -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 7c3f3bed98f4c85c46ddf743d7aba64073f91d3b)
+++ src/SynTree/FunctionDecl.cc	(revision 7ca8411617dffde8513a28fe4eeb8c1acefb5225)
@@ -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 );
 }
 
