public class Hello2
{
public static void main(String args[])
{
new Hello2().foo(1);
}
int c=0;
int foo(final int i)
{
class LocalClass
{
class InnerClass
{
int run ()
{
//System.out.println("in InnerClass run()");
class LocalClassNeverUsed
{
int run () // this is never called
{
return i;
}
}
new LocalClassNeverUsed().run();
return new LocalClass().run();
}
}
int run ()
{
//System.out.println("c: "+c);
//c--;
//System.out.println("c: "+c);
if (c--<0) /* prevent stack overflow*///{
//System.out.println("returning 0");
return 0;
//}
//System.out.println("will created InnerClass");
InnerClass ic = new InnerClass();
//System.out.println("created InnerClass");
return ic.run();
//return new InnerClass().run();
}
};
//System.out.println("returning from foo");
return new LocalClass().run();
}
}