Source:
<code>public ITmfCommonXAxisResponse fetchXY(TimeQueryFilter filter, @Nullable IProgressMonitor monitor) { if (!(fProvider instanceof IAnalysisModule)) { return TmfCommonXAxisResponseFactory.createFailedResponse(Messages.SegmentStoreDataProvider_SegmentMustBeAnIAnalysisModule); } <START> if (!(((IAnalysisModule) fProvider).waitForCompletion())) { return TmfCommonXAxisResponseFactory.createFailedResponse(CommonStatusMessage.ANALYSIS_INITIALIZATION_FAILED); } <END> final ISegmentStore<ISegment> segStore = fProvider.getSegmentStore(); if (segStore == null) { return TmfCommonXAxisResponseFactory.createFailedResponse(Messages.SegmentStoreDataProvider_SegmentNotAvailable); } long start = filter.getStart(); long end = filter.getEnd(); fPixelStart = start; fPixelSize = Math.max(1, (end - start) / MAX_POINTS); final Iterable<ISegment> intersectingElements = segStore.getIntersectingElements(start, end, SegmentComparators.INTERVAL_START_COMPARATOR); final Iterable<ISegment> displayData = compactList(start, intersectingElements); List<Long> xSeries = new ArrayList<>(); List<Double> yValues = new ArrayList<>(); ImmutableMap.Builder<String, IYModel> ySeries = ImmutableMap.builder(); for (ISegment segment : displayData) { if (monitor != null && monitor.isCanceled()) { return TmfCommonXAxisResponseFactory.createCancelledResponse(CommonStatusMessage.PROGRESS_MONITOR_CANCELLED); } xSeries.add(segment.getStart()); yValues.add((double) segment.getLength()); } ySeries.put(Messages.SegmentStoreDataProvider_Duration, new YModel(Messages.SegmentStoreDataProvider_Duration, Doubles.toArray(yValues))); return TmfCommonXAxisResponseFactory.create(Messages.SegmentStoreScatterGraphViewer_title, Longs.toArray(xSeries), ySeries.build(), filter.getEnd(), true); }</code><technical_language>need work segment store api, in a separate patch</technical_language>

Target:
public ITmfCommonXAxisResponse fetchXY(TimeQueryFilter filter, @Nullable IProgressMonitor monitor) { if (!(fProvider instanceof IAnalysisModule)) { return TmfCommonXAxisResponseFactory.createFailedResponse(Messages.SegmentStoreDataProvider_SegmentMustBeAnIAnalysisModule); } if (!(((IAnalysisModule) fProvider).waitForCompletion())) { return TmfCommonXAxisResponseFactory.createFailedResponse(CommonStatusMessage.ANALYSIS_INITIALIZATION_FAILED); } final ISegmentStore<ISegment> segStore = fProvider.getSegmentStore(); if (segStore == null) { return TmfCommonXAxisResponseFactory.createFailedResponse(Messages.SegmentStoreDataProvider_SegmentNotAvailable); } long start = filter.getStart(); long end = filter.getEnd(); fPixelSize = Math.max(1, (end - start) / filter.getTimesRequested().length); final Iterable<ISegment> intersectingElements = segStore.getIntersectingElements(start, end, SegmentComparators.INTERVAL_START_COMPARATOR); final Iterable<ISegment> displayData = compactList(start, intersectingElements); List<Long> xSeries = new ArrayList<>(); List<Double> yValues = new ArrayList<>(); for (ISegment segment : displayData) { if (monitor != null && monitor.isCanceled()) { return TmfCommonXAxisResponseFactory.createCancelledResponse(CommonStatusMessage.TASK_CANCELLED); } xSeries.add(segment.getStart()); yValues.add((double) segment.getLength()); } Map<String, IYModel> ySeries = ImmutableMap.of(Messages.SegmentStoreDataProvider_Duration, new YModel(Messages.SegmentStoreDataProvider_Duration, Doubles.toArray(yValues))); return TmfCommonXAxisResponseFactory.create(Messages.SegmentStoreScatterGraphViewer_title, Longs.toArray(xSeries), ySeries, filter.getEnd(), true); }