Java Design by Contract