all : Self.java

clean :
	rm -f mid.part mid.help

test : Self.clone
	diff Self.java $<

%.class : %.java
	javac $<

mid.mean : Top.class top.part bottom.part
	( java Top top.part && cat bottom.part ) > $@

mid.help : Bottom.class  mid.mean
	java Bottom mid.mean > $@

Self.java : top.part mid.help mid.mean
	cat top.part mid.help mid.mean > $@

Self.clone : Self.class
	java Self > $@

