Source:
<code>public synchronized List<IMarkerEvent> getMarkerList(String category, long startTime, long endTime, long resolution, IProgressMonitor monitor) { if (!category.equals(LOST_EVENTS)) { return Collections.emptyList(); } ITmfStateSystem ss = getStateSystem(); if (ss == null) { return Collections.emptyList(); } int lostEventsQuark = getLostEventsQuark(ss); if (lostEventsQuark == -1) { return Collections.emptyList(); } long[] request = new long[] { startTime, endTime, resolution, ss.getCurrentEndTime() }; if (Arrays.equals(request, fLastRequest)) { return fLastMarkers; } List<IMarkerEvent> markers = new ArrayList<>(); try { long start = Math.max(startTime, ss.getStartTime()); long end = Math.min(endTime, ss.getCurrentEndTime()); if (start <= end) { long firstStartTime = ss.querySingleState(start, lostEventsQuark).getStartTime(); start = <START> Math.max(firstStartTime - 1, ss.getStartTime()); <END> long nextStartTime = ss.querySingleState(end, lostEventsQuark).getEndTime() + 1; end = Math.min(nextStartTime, ss.getCurrentEndTime()); List<ITmfStateInterval> intervals = StateSystemUtils.queryHistoryRange(ss, lostEventsQuark, start, end, resolution, monitor); for (ITmfStateInterval interval : intervals) { if (interval.getStateValue().isNull()) { continue; } long lostEventsStartTime = interval.getStartTime(); long lostEventsEndTime = interval.getStateValue().unboxLong(); long duration = lostEventsEndTime - lostEventsStartTime; IMarkerEvent marker = new MarkerEvent(null, lostEventsStartTime, duration, LOST_EVENTS, COLOR, null, false); markers.add(marker); } } } catch (AttributeNotFoundException | StateSystemDisposedException e) { } fLastRequest = request; fLastMarkers = Collections.unmodifiableList(markers); return fLastMarkers; }</code><technical_language>I - 1 moved previous line, consistent nextStartTime line below. Also, discussed, this code return markers instead of one. This works I respect contract of getMarkerList return one. Otherwise, another client of getMarkerList fail in unexpected case of markers before</technical_language>

Target:
public synchronized List<IMarkerEvent> getMarkerList(String category, long startTime, long endTime, long resolution, IProgressMonitor monitor) { if (!category.equals(LOST_EVENTS)) { return Collections.emptyList(); } ITmfStateSystem ss = getStateSystem(); if (ss == null) { return Collections.emptyList(); } int lostEventsQuark = getLostEventsQuark(ss); if (lostEventsQuark == -1) { return Collections.emptyList(); } long[] request = new long[] { startTime, endTime, resolution, ss.getCurrentEndTime() }; if (Arrays.equals(request, fLastRequest)) { return fLastMarkers; } List<IMarkerEvent> markers = new ArrayList<>(); try { long start = Math.max(startTime, ss.getStartTime()); long end = Math.min(endTime, ss.getCurrentEndTime()); if (start <= end) { start = Math.max(start - 1, ss.getStartTime()); long nextStartTime = ss.querySingleState(end, lostEventsQuark).getEndTime() + 1; end = Math.min(nextStartTime, ss.getCurrentEndTime()); List<ITmfStateInterval> intervals = StateSystemUtils.queryHistoryRange(ss, lostEventsQuark, start, end, resolution, monitor); for (ITmfStateInterval interval : intervals) { if (interval.getStateValue().isNull()) { continue; } long lostEventsStartTime = interval.getStartTime(); long lostEventsEndTime = interval.getStateValue().unboxLong(); long duration = lostEventsEndTime - lostEventsStartTime; IMarkerEvent marker = new MarkerEvent(null, lostEventsStartTime, duration, LOST_EVENTS, COLOR, null, false); markers.add(marker); } } } catch (AttributeNotFoundException | StateSystemDisposedException e) { } fLastRequest = request; fLastMarkers = Collections.unmodifiableList(markers); return fLastMarkers; }