Source:
<code>protected @Nullable List<@NonNull ITimeGraphRowModel> getRowModel(@NonNull ITmfStateSystem ss, @NonNull SelectionTimeQueryFilter filter, @Nullable IProgressMonitor monitor) throws StateSystemDisposedException { TreeMultimap<Integer, ITmfStateInterval> intervals = TreeMultimap.create(Comparator.naturalOrder(), Comparator.comparing(ITmfStateInterval::getStartTime)); Map<@NonNull Long, @NonNull Integer> entries = getSelectedEntries(filter); Collection<Long> times = getTimes(filter, ss.getStartTime(), ss.getCurrentEndTime()); for (ITmfStateInterval interval : ss.query2D(entries.values(), times)) { if (monitor != null && monitor.isCanceled()) { return Collections.emptyList(); } intervals.put(interval.getAttribute(), interval); } Map<@NonNull Integer, @NonNull Predicate< @NonNull Map<@NonNull String, @NonNull String>>> predicates = new HashMap<>(); if (filter instanceof TimeGraphStateQueryFilter) { TimeGraphStateQueryFilter timeEventFilter = (TimeGraphStateQueryFilter) filter; predicates.putAll(computeRegexPredicate(timeEventFilter)); } List<@NonNull ITimeGraphRowModel> rows = new ArrayList<>(); for (Map.Entry<Long, Integer> entry : entries.entrySet()) { if (monitor != null && monitor.isCanceled()) { return Collections.emptyList(); } List<ITimeGraphState> eventList = new ArrayList<>(); for (ITmfStateInterval interval : intervals.get(entry.getValue())) { long startTime = interval.getStartTime(); long duration = interval.getEndTime() - startTime + 1; Object state = interval.getValue(); TimeGraphState <START> value = <END> state == null ? new TimeGraphState(startTime, duration, Math.max(entry.getKey().intValue(), 0)) : new TimeGraphState(startTime, duration, Math.max(entry.getKey().intValue(), 0), String.valueOf(state)); addToStateList(eventList, value, entry.getKey(), predicates, monitor); } rows.add(new TimeGraphRowModel(entry.getKey(), eventList)); } return rows; }</code><technical_language>discuss later, I state values if</technical_language>

Target:
protected @Nullable List<@NonNull ITimeGraphRowModel> getRowModel(@NonNull ITmfStateSystem ss, @NonNull SelectionTimeQueryFilter filter, @Nullable IProgressMonitor monitor) throws StateSystemDisposedException { TreeMultimap<Integer, ITmfStateInterval> intervals = TreeMultimap.create(Comparator.naturalOrder(), Comparator.comparing(ITmfStateInterval::getStartTime)); Map<@NonNull Long, @NonNull Integer> entries = getSelectedEntries(filter); Collection<Long> times = getTimes(filter, ss.getStartTime(), ss.getCurrentEndTime()); for (ITmfStateInterval interval : ss.query2D(entries.values(), times)) { if (monitor != null && monitor.isCanceled()) { return Collections.emptyList(); } intervals.put(interval.getAttribute(), interval); } Map<@NonNull Integer, @NonNull Predicate<@NonNull Map<@NonNull String, @NonNull String>>> predicates = new HashMap<>(); if (filter instanceof TimeGraphStateQueryFilter) { TimeGraphStateQueryFilter timeEventFilter = (TimeGraphStateQueryFilter) filter; predicates.putAll(computeRegexPredicate(timeEventFilter)); } List<@NonNull ITimeGraphRowModel> rows = new ArrayList<>(); for (Map.Entry<@NonNull Long, @NonNull Integer> entry : entries.entrySet()) { if (monitor != null && monitor.isCanceled()) { return Collections.emptyList(); } List<ITimeGraphState> eventList = new ArrayList<>(); for (ITmfStateInterval interval : intervals.get(entry.getValue())) { long startTime = interval.getStartTime(); long duration = interval.getEndTime() - startTime + 1; Object state = interval.getValue(); TimeGraphState value = state == null ? new TimeGraphState(startTime, duration, 0) : new TimeGraphState(startTime, duration, 0, String.valueOf(state)); addToStateList(eventList, value, entry.getKey(), predicates, monitor); } rows.add(new TimeGraphRowModel(entry.getKey(), eventList)); } return rows; }