/* 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
{
@SuppressWarnings("unchecked")
public static class BaseBuilder<T extends BaseBuilder<T>> {
public T foo() {
return (T)this;
}
}
public static class DerivedBuilder extends BaseBuilder<DerivedBuilder> {
public DerivedBuilder bar() {
return this;
}
}
{
new DerivedBuilder().foo().bar().foo().foo().bar();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQoJcHVibGljIHN0YXRpYyBjbGFzcyBCYXNlQnVpbGRlcjxUIGV4dGVuZHMgQmFzZUJ1aWxkZXI8VD4+IHsKCSAgICBwdWJsaWMgVCBmb28oKSB7CgkgICAgICAgIHJldHVybiAoVCl0aGlzOwoJICAgIH0KCX0KCQoJcHVibGljIHN0YXRpYyBjbGFzcyBEZXJpdmVkQnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyPERlcml2ZWRCdWlsZGVyPiB7CgkgICAgcHVibGljIERlcml2ZWRCdWlsZGVyIGJhcigpIHsKCSAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgfQoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCW5ldyBEZXJpdmVkQnVpbGRlcigpLmZvbygpLmJhcigpLmZvbygpLmZvbygpLmJhcigpOwoJfQp9