/* 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;
	    }
	}

	public static void main (String[] args) throws java.lang.Exception
	{
		new DerivedBuilder().foo().bar().foo().foo().bar();
	}
}