publicclassPostOffice{enumMailHandler{
GENERAL_DELIVERY {booleanhandle(Mail m){switch(m.generalDelivery){case YES:System.out.println("Using general delivery for "+ m);returntrue;default:returnfalse;}}},
MACHINE_SCAN {booleanhandle(Mail m){switch(m.scannability){case UNSCANNABLE:returnfalse;default:switch(m.address){case INCORRECT:returnfalse;default:System.out.println("Delivering"+ m +"automaticallu");returntrue;}}}},
VISUAL_INSPECTION {booleanhandle(Mail m){switch(m.readability){case ILLEGIBLE:returnfalse;default:switch(m.address){case INCORRECT:returnfalse;default:System.out.println("Delivering"+ m +"normally");returntrue;}}}},
RETURN_TO_SENDER {booleanhandle(Mail m){switch(m.returnAddress){case MISSING:returnfalse;default:switch(m.address){case INCORRECT:returnfalse;default:System.out.println("Delivering"+ m +"to sender");returntrue;}}}};abstractbooleanhandle(Mail m);}staticvoidhandle(Mail m){for(MailHandler value :MailHandler.values()){if(value.handle(m)){return;}System.out.println(m+"is a dead letter");}}publicstaticvoidmain(String[] args){for(Mail mail :Mail.generator(10)){System.out.println(mail.details());handle(mail);System.out.println("*****");}}}