Index: src/SynTree/GcTracer.h
===================================================================
--- src/SynTree/GcTracer.h	(revision f229fc21dea2ccacb291a92a65e5b8c8fab587c0)
+++ src/SynTree/GcTracer.h	(revision b5aa3d831cb931cbeaf366eb8027a527929bf767)
@@ -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 );
 	}
 };
