public class firstClass {
int a;
	Object o;
	void myMethod() {
if (i == 0) {	doSomething();
	doSomethingElse();
		} else {
if (right())		doThis();
else
			if (left()) {
	doThis();
doThat();
				} else
if (up())
		doThis();
else {
doThat();
				doThat();
}
lastThing();
}
}
}