1*f1fbf3c2SXin Li package test4; 2*f1fbf3c2SXin Li 3*f1fbf3c2SXin Li interface IRename { foo(Rename r)4*f1fbf3c2SXin Li Rename foo(Rename r); 5*f1fbf3c2SXin Li } 6*f1fbf3c2SXin Li 7*f1fbf3c2SXin Li class RenameB { foo()8*f1fbf3c2SXin Li int foo() { return 10; } 9*f1fbf3c2SXin Li } 10*f1fbf3c2SXin Li 11*f1fbf3c2SXin Li public class Rename implements IRename { 12*f1fbf3c2SXin Li int value = 3; 13*f1fbf3c2SXin Li Rename next = null; 14*f1fbf3c2SXin Li foo(Rename r)15*f1fbf3c2SXin Li public Rename foo(Rename r) { 16*f1fbf3c2SXin Li Rename k = r; 17*f1fbf3c2SXin Li if (k == null) 18*f1fbf3c2SXin Li return null; 19*f1fbf3c2SXin Li else 20*f1fbf3c2SXin Li return k.next; 21*f1fbf3c2SXin Li } 22*f1fbf3c2SXin Li run()23*f1fbf3c2SXin Li public int run() { 24*f1fbf3c2SXin Li next = new Rename(); 25*f1fbf3c2SXin Li next.value = 4; 26*f1fbf3c2SXin Li RenameB rb = new RenameB(); 27*f1fbf3c2SXin Li return foo(this).value + rb.foo(); 28*f1fbf3c2SXin Li } 29*f1fbf3c2SXin Li } 30*f1fbf3c2SXin Li 31