Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision 3f840e371860ab44fa91a1a4d720ef11582eb23e)
+++ src/AST/Decl.hpp	(revision ed3935da1be8b73a4a04cde07abb3a295389f80e)
@@ -232,11 +232,10 @@
 	AggregateDecl* set_body( bool b ) { body = b; return this; }
 
-private:
-	AggregateDecl * clone() const override = 0;
-	MUTATE_FRIEND
-
-protected:
 	/// Produces a name for the kind of aggregate
 	virtual std::string typeString() const = 0;
+
+private:
+	AggregateDecl * clone() const override = 0;
+	MUTATE_FRIEND
 };
 
@@ -256,9 +255,10 @@
 
 	const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
+
+	std::string typeString() const override { return "struct"; }
+
 private:
 	StructDecl * clone() const override { return new StructDecl{ *this }; }
 	MUTATE_FRIEND
-
-	std::string typeString() const override { return "struct"; }
 };
 
@@ -271,9 +271,10 @@
 
 	const Decl * accept( Visitor& v ) const override { return v.visit( this ); }
+
+	std::string typeString() const override { return "union"; }
+
 private:
 	UnionDecl * clone() const override { return new UnionDecl{ *this }; }
 	MUTATE_FRIEND
-
-	std::string typeString() const override { return "union"; }
 };
 
@@ -289,9 +290,10 @@
 
 	const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
+
+	std::string typeString() const override { return "enum"; }
+
 private:
 	EnumDecl * clone() const override { return new EnumDecl{ *this }; }
 	MUTATE_FRIEND
-
-	std::string typeString() const override { return "enum"; }
 
 	/// Map from names to enumerator values; kept private for lazy initialization
@@ -307,9 +309,10 @@
 
 	const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
+
+	std::string typeString() const override { return "trait"; }
+
 private:
 	TraitDecl * clone() const override { return new TraitDecl{ *this }; }
 	MUTATE_FRIEND
-
-	std::string typeString() const override { return "trait"; }
 };
 
