Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 615a0968e86dc63f469d72baac2918969c809f3f)
+++ src/SynTree/Declaration.h	(revision 409433da030307400e44f630352481dbddd6b3d2)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 08:34:11 2017
-// Update Count     : 118
+// Last Modified On : Fri Mar 17 16:05:08 2017
+// Update Count     : 121
 //
 
@@ -255,11 +255,16 @@
 	typedef AggregateDecl Parent;
   public:
-	StructDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >() ) : Parent( name, attributes ) {}
+	StructDecl( const std::string &name, DeclarationNode::Aggregate kind = DeclarationNode::Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >() ) : Parent( name, attributes ), kind( kind ) {}
 	StructDecl( const StructDecl &other ) : Parent( other ) {}
 
+	bool is_coroutine() { return kind == DeclarationNode::Coroutine; }
+	bool is_monitor() { return kind == DeclarationNode::Monitor; }
+	bool is_thread() { return kind == DeclarationNode::Thread; }
+
 	virtual StructDecl *clone() const { return new StructDecl( *this ); }
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
   private:
+	DeclarationNode::Aggregate kind;
 	virtual std::string typeString() const;
 };
