You know that an inner class can access member variables and methods in the enclosing object, right? Well, this is how the compiler makes that possible. It passes a reference to the enclosing object into the inner class, via a constructor that it generates.
If you modified your original code to call a method in the enclosing object, you'll find that in the decompiled version the call is prefixed with this this$0 reference.
We cannot change unless we survive, but we will not survive unless we change. Evolving tiny ad:
Try Free Java/.NET Libraries for Word Excel PowerPoint and PDF