public void execute(final Reader in, final PrintStream out) throws ParseException, HandlerException { parser.parse( in, new MowItNowHandler() { private Grid grid; private Mower mower; @Override public void order(Order order) throws HandlerException { try { mower = executor.execute(grid, mower, order); } catch (ExecutionException e) { throw new HandlerException(e); } } @Override public void endMower() throws HandlerException { out.println(MowItNowApp.this.toString(mower)); } @Override public void end() {} @Override public void beginMower(Mower mower) { this.mower = mower; } @Override public void begin(Grid grid) { this.grid = grid; } }); }