Advanced Software Construction In Java