Index: src/SynTree/GcTracer.h
===================================================================
--- src/SynTree/GcTracer.h	(revision 34dcc474f4920507b7bdae9742138b4d088dcffc)
+++ src/SynTree/GcTracer.h	(revision 6f81db35825e78019dce3cfedb438bf266676fe9)
@@ -38,4 +38,6 @@
 	void previsit( BaseSyntaxNode * node ) {
 		// skip tree if already seen
+		// xxx - this should be uncommented (it breaks object cycles), but at the moment it seems 
+		// like the object cycles don't happen and other bugs do
 		// if ( node->mark == gc.mark ) {
 		// 	visit_children = false;
@@ -58,6 +60,11 @@
 	}
 
-	void postvisit( PointerType* pty ) {
-		maybeAccept( pty->dimension, *visitor );
+	void postvisit( Type* type ) {
+		acceptAll( type->attributes, *visitor );
+	}
+
+	void postvisit( PointerType* type ) {
+		postvisit( static_cast<Type*>(type) );
+		maybeAccept( type->dimension, *visitor );
 	}
 };
