$ javac Toilet.java AutoToilet.java $ java Toilet Seat up Splash! pee Splash! more pee Seat down Splash! poo Yuck ... should have flushed first ... oh well here goes ... Splash! more poo Pretending to execute complicated flush procedure ... all gone Splash! cigarettes Pretending to execute complicated flush procedure ... Overflowed cigarettes all over the place ... Exception in thread "main" FloatingOverflowException at Toilet.flush(Toilet.java:65) at Toilet.main(Toilet.java:101) $ java AutoToilet Thanks for trying to adjust the seat, but it's not necessary for this fancy toilet. Whirr ... creak ... Seat up Splash! pee Whirr ... creak ... Seat down Splash! more pee Splash! poo Yuck ... should have flushed first ... oh well here goes ... Splash! more poo Pretending to execute complicated flush procedure ... all gone Splash! cigarettes Pretending to execute complicated flush procedure ... Overflowed cigarettes all over the place ... Caught exception, cleaning up mess. Retrying flush: Pretending to execute complicated flush procedure ... Overflowed cigarettes all over the place ... Caught exception, cleaning up mess. Retrying flush: Pretending to execute complicated flush procedure ... Overflowed cigarettes all over the place ... Caught exception, cleaning up mess. Retrying flush: Pretending to execute complicated flush procedure ... all gone All done. No need to destroy toilet; it will be garbage-collected.