/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
interface Calc {
int calc();
default void println() {
System.
out.
println(this.
getClass().
getSimpleName() + ": " + calc
()); }
}
class SomeClass {
private int x;
public SomeClass(int x) {
this.x = x;
}
public class InnerSum implements Calc {
private int y;
public InnerSum(int y) {
this.y = y;
}
public int calc() {
return x + y;
}
}
public static class Nested implements Calc {
private int y;
public Nested(int y) {
this.y = y;
}
public int calc() {
return y; // x is not available here
}
}
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
SomeClass a = new SomeClass(12);
Calc ai = a.new InnerSum(34);
Calc an = new SomeClass.Nested(34);
ai.println();
an.println();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbnRlcmZhY2UgQ2FsYyB7CglpbnQgY2FsYygpOwoJZGVmYXVsdCB2b2lkIHByaW50bG4oKSB7CgkJU3lzdGVtLm91dC5wcmludGxuKHRoaXMuZ2V0Q2xhc3MoKS5nZXRTaW1wbGVOYW1lKCkgKyAiOiAiICsgY2FsYygpKTsKCX0KfQoKY2xhc3MgU29tZUNsYXNzIHsKCQoJcHJpdmF0ZSBpbnQgeDsKCQoJcHVibGljIFNvbWVDbGFzcyhpbnQgeCkgewoJCXRoaXMueCA9IHg7Cgl9CgkKCXB1YmxpYyBjbGFzcyBJbm5lclN1bSBpbXBsZW1lbnRzIENhbGMgewoJCXByaXZhdGUgaW50IHk7CgkJcHVibGljIElubmVyU3VtKGludCB5KSB7CgkJCXRoaXMueSA9IHk7CgkJfQoJCXB1YmxpYyBpbnQgY2FsYygpIHsKCQkJcmV0dXJuIHggKyB5OwoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyBjbGFzcyBOZXN0ZWQgaW1wbGVtZW50cyBDYWxjIHsKCQlwcml2YXRlIGludCB5OwoJCXB1YmxpYyBOZXN0ZWQoaW50IHkpIHsKCQkJdGhpcy55ID0geTsKCQl9CgkJcHVibGljIGludCBjYWxjKCkgewoJCQlyZXR1cm4geTsgLy8geCBpcyBub3QgYXZhaWxhYmxlIGhlcmUKCQl9Cgl9Cn0KCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUgewoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24gewoJCVNvbWVDbGFzcyBhID0gbmV3IFNvbWVDbGFzcygxMik7CgkJQ2FsYyBhaSA9IGEubmV3IElubmVyU3VtKDM0KTsKCQlDYWxjIGFuID0gbmV3IFNvbWVDbGFzcy5OZXN0ZWQoMzQpOwoJCWFpLnByaW50bG4oKTsKCQlhbi5wcmludGxuKCk7Cgl9Cn0=