/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static class MyClass<M extends MyClass<M>> {
int i = 0;
public M self() {
return (M) this;
}
public M increment() {
i++;
return self();
}
}
static class MySubClass extends MyClass<MySubClass> { }
{
MySubClass m = new MySubClass().increment();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKc3RhdGljIGNsYXNzIE15Q2xhc3M8TSBleHRlbmRzIE15Q2xhc3M8TT4+IHsKICAgIGludCBpID0gMDsKCiAgICBwdWJsaWMgTSBzZWxmKCkgewogICAgICByZXR1cm4gKE0pIHRoaXM7CiAgICB9CgogICAgcHVibGljIE0gaW5jcmVtZW50KCkgewogICAgICAgIGkrKzsKICAgICAgICByZXR1cm4gc2VsZigpOwogICAgfQp9CgpzdGF0aWMgY2xhc3MgTXlTdWJDbGFzcyBleHRlbmRzIE15Q2xhc3M8TXlTdWJDbGFzcz4geyB9CgoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlNeVN1YkNsYXNzIG0gPSBuZXcgTXlTdWJDbGFzcygpLmluY3JlbWVudCgpOwoJfQp9