class A { int z; void foo(int p, B q) { int[][] intaa = new int[][20]; { boolean b; } } } class B extends A { void foo(int p, B q) { } } java IC.Compiler example.ic -dump-symtab Type Table: ======================== id=1 name=int id=2 name=boolean id=5 name=string id=4 name=void id=6 name=null id=7 name=int[] elem=1 id=8 name=int[][] elem=7 id=9 name=A id=10 name=B super=9 id=11 name=A.foo 1,12->4 // 1 is the type of p and 12 is the type of q // and 4 is the type of the returned value id=12 name=B.foo 1,12->4 ======================== Symbol Tables: ================================= Table 1 (global) parent=none id=1 name=A kind=class type=9 id=2 name=B kind=class type=10 Table 2 (class A) parent=1 id=3 name=foo Kind=method type=11 id=12 name=z kind=field type=1 Table 3 (method A.foo) parent=2 id=5 name=p Kind=parameter type=1 id=6 name=q Kind=parameter type=12 id=7 name=ret kind=ret type=4 id=11 name=intaa kind=local type=8 Table 6 (block) parent=3 id=13 name=b kind=local type=2 Table 4 (class B) parent=1 id=4 name=foo Kind=method type=11 Table 5 (method B.foo) parent=4 id=8 name=p Kind=parameter type=1 id=9 name=q Kind=parameter type=12 id=10 name=ret kind=ret type=4