diff --git a/compiler/Java_CodeGen.jrag b/compiler/Java_CodeGen.jrag
index 61e95c341d83db73016e51ac2cf64c7bbde76ca9..c87f531c5a116db4db1afd913827f4e138ceb6ad 100644
--- a/compiler/Java_CodeGen.jrag
+++ b/compiler/Java_CodeGen.jrag
@@ -347,21 +347,34 @@ aspect Java_Class {
 		    " not declared");
   }
 
-  public void TypeDecl.Java_emitClass(Java_env env, String pack) {
+  public void Decl.Java_emitDeclPP(Java_env env) {
       // Hackish prettyprint preamble
       env.println("/* ");
       pp(env.getPrintStream());
-    if( !references().isEmpty() ) {
-        Iterator<Decl> it = references().iterator();
-        while(it.hasNext()) {
-          Decl t = it.next();
-          env.println(" //Depends on "+t.getName() + " (" + t +") " );
-        }
-    } else {
-        env.println(" //no more deps ");
-    }
+
+      // temporary experiment with listing user type dependencies
+      // This should generate actual register(...) code
+      if( !references().isEmpty() ) {
+          Iterator<Decl> it = references().iterator();
+          while(it.hasNext()) {
+            Decl t = it.next();
+            env.println(" //Depends (directly) on "+t.getName() + " (" + t +") " );
+            //TODO: traverse AST to find indirect dependencies
+            Iterator<Decl> iit = t.references().iterator();
+            while(iit.hasNext()) {
+                Decl tt = iit.next();
+                env.println(" //Depends (indirectly) on "+tt.getName() + " (" + tt +") " );
+              }
+          }
+      } else {
+          env.println(" //no user type dependencies ");
+      }
       env.println("*/");
 
+  }
+
+  public void TypeDecl.Java_emitClass(Java_env env, String pack) {
+      Java_emitDeclPP(env);
       if (pack != null && pack.length() > 0) {
         env.println("package " + pack + ";");
       }
@@ -390,9 +403,7 @@ aspect Java_Class {
 
 
   public void SampleDecl.Java_emitClass(Java_env env, String pack) {
-    env.println("/* ");
-    pp(env.getPrintStream());
-    env.println("*/");
+    Java_emitDeclPP(env);
 
     if (pack != null && pack.length() > 0) {
       env.println("package " + pack + ";");
@@ -440,7 +451,12 @@ aspect Java_Class {
         Iterator<Decl> it = references().iterator();
         while(it.hasNext()) {
           Decl t = it.next();
-          env.println(" //Depends on "+t.getName() + " (" + t +") " );
+          env.println(" //Depends (directly) on "+t.getName() + " (" + t +") " );
+          Iterator<Decl> iit = t.references().iterator();
+          while(iit.hasNext()) {
+             Decl tt = iit.next();
+             env.println(" //Depends (indirectly) on "+tt.getName() + " (" + tt +") " );
+           }
         }
     } else {
         env.println(" //no more deps ");