Source:
<code>private List<@NonNull ITimeGraphRowModel> getRowModels(ITmfStateSystem ss, Map<Integer, Long> idToDisplayQuark, @Nullable List<Long> times, Map<String, Object> fetchParameters, @Nullable IProgressMonitor monitor) throws IndexOutOfBoundsException, TimeRangeException, StateSystemDisposedException { Map<@NonNull Integer, @NonNull Predicate<@NonNull Multimap<@NonNull String, @NonNull Object>>> predicates = new HashMap<>(); Multimap<@NonNull Integer, @NonNull String> regexesMap = DataProviderParameterUtils.extractRegexFilter(fetchParameters); if (regexesMap != null) { predicates.putAll(computeRegexPredicate(regexesMap)); } Map<Integer, ITimeGraphRowModel> quarkToRow = new HashMap<>(idToDisplayQuark.size()); for (Entry<Integer, Long> entry : idToDisplayQuark.entrySet()) { quarkToRow.put(entry.getKey(), new TimeGraphRowModel(entry.getValue(), new ArrayList<>())); } <START> long currentEndTime = ss.getCurrentEndTime(); <END> for (ITmfStateInterval interval : ss.query2D(idToDisplayQuark.keySet(), getTimes(ss, times))) { if (monitor != null && monitor.isCanceled()) { return Collections.emptyList(); } ITimeGraphRowModel row = quarkToRow.get(interval.getAttribute()); if (row != null) { List<@NonNull ITimeGraphState> states = row.getStates(); ITimeGraphState timeGraphState = getStateFromInterval(interval, currentEndTime); applyFilterAndAddState(states, timeGraphState, row.getEntryID(), predicates, monitor); } } for (ITimeGraphRowModel model : quarkToRow.values()) { model.getStates().sort(Comparator.comparingLong(ITimeGraphState::getStartTime)); } return new ArrayList<>(quarkToRow.values()); }</code><technical_language>current end time here? I get state interval a minimum currentEndTime interval end time. state system end time, yes, current end time if state system is construction, pose problem</technical_language>

Target:
private List<@NonNull ITimeGraphRowModel> getRowModels(ITmfStateSystem ss, Map<Integer, Long> idToDisplayQuark, @Nullable List<Long> times, Map<String, Object> fetchParameters, @Nullable IProgressMonitor monitor) throws IndexOutOfBoundsException, TimeRangeException, StateSystemDisposedException { Map<@NonNull Integer, @NonNull Predicate<@NonNull Multimap<@NonNull String, @NonNull Object>>> predicates = new HashMap<>(); Multimap<@NonNull Integer, @NonNull String> regexesMap = DataProviderParameterUtils.extractRegexFilter(fetchParameters); if (regexesMap != null) { predicates.putAll(computeRegexPredicate(regexesMap)); } Map<Integer, ITimeGraphRowModel> quarkToRow = new HashMap<>(idToDisplayQuark.size()); for (Entry<Integer, Long> entry : idToDisplayQuark.entrySet()) { quarkToRow.put(entry.getKey(), new TimeGraphRowModel(entry.getValue(), new ArrayList<>())); } for (ITmfStateInterval interval : ss.query2D(idToDisplayQuark.keySet(), getTimes(ss, times))) { if (monitor != null && monitor.isCanceled()) { return Collections.emptyList(); } ITimeGraphRowModel row = quarkToRow.get(interval.getAttribute()); if (row != null) { List<@NonNull ITimeGraphState> states = row.getStates(); ITimeGraphState timeGraphState = getStateFromInterval(interval, ss.getCurrentEndTime()); applyFilterAndAddState(states, timeGraphState, row.getEntryID(), predicates, monitor); } } for (ITimeGraphRowModel model : quarkToRow.values()) { model.getStates().sort(Comparator.comparingLong(ITimeGraphState::getStartTime)); } return new ArrayList<>(quarkToRow.values()); }