class LogBookEventIterator implements Iterator<LogbookEvent>, Iterable<LogbookEvent> {

    @Override
    public LogbookEvent next() {
        LogbookEvent logbookEvent = new LogbookEvent();
        skip("Event");

        logbookEvent.setEvId(tryTake("EventIdentifier"));
        logbookEvent.setEvTypeProc(tryTake("EventTypeCode"));
        logbookEvent.setEvType(tryTake("EventType"));
        logbookEvent.setEvDateTime(take("EventDateTime"));
        logbookEvent.setOutcome(tryTake("Outcome"));
        logbookEvent.setOutDetail(tryTake("OutcomeDetail"));
        logbookEvent.setOutMessg(tryTake("OutcomeDetailMessage"));
        logbookEvent.setEvDetData(tryTake("EventDetailData"));
        logbookEvent.setAgId(tryTake("AgentIdentifier"));
        logbookEvent.setObId(tryTake("ObjectIdentifier"));

        skip("Event");
        return logbookEvent;
    }

    public  LogBookEventIterator(XMLEventReader reader);

}