Hi...This is quite simple...they are creating an object for inner class and they are calling a method present inside the inner class.
new A().new B() will create an object for B. So new A().new B().m1(); will invoke method m1().
Inside that they are printing 4 things... (1). this.s1 which means s1 present in the class B..--->B (2). super.s1 which means s1 in the class SuperB.--->SuperB (3). A.this.s1 which points to s1 in the class A --->A (4). A.super.s1 which points to s1 in the class SuperA--->SuperA