public void setSourceLocationUsingHighlight(final SourceLocation sourceLocation) {
        // Don't need to set currentHexHighlight as hex mode will always be off at this point
        currentTextHighlight = sourceLocation.getFirstHighlight();

        final DataRange highlight = sourceLocation.getFirstHighlight();
        if (highlight == null) {
            // no highlight so just get the requested data.
            setSourceLocation(sourceLocation);
        } else {
            updateStepControlVisibility();
            if (receivedSourceLocation != null && isCurrentSourceSuitable(sourceLocation)) {
                // The requested highlight is inside the currently held data so just update
                // the highlight in the editor
//                GWT.log("Using existing source");

                // Update the highlight in case refresh is called
                requestedSourceLocation = receivedSourceLocation.copy()
                        .withHighlight(highlight)
                        .build();

                updateEditorHighlights(Collections.singletonList(currentTextHighlight));
            } else {
                // Highlight is outside the currently held data so we need to fetch data
                // that contains the highlight.
                doWithConfig(sourceConfig -> {
                    final DataRange newDataRange;
                    if (textPresenter.getViewAsHexOption().isOnAndAvailable()) {
                        newDataRange = buildNewSourceLocationFromHighlightForHexDump(
                                sourceLocation, highlight, sourceConfig);
                    } else {
                        final Location newSourceStart = buildNewSourceLocationFromHighlight(
                                sourceLocation, highlight, sourceConfig);
                        newDataRange = DataRange.fromLocation(newSourceStart);
                    }
                    final SourceLocation newSourceLocation = sourceLocation.copy()
                            .withDataRange(newDataRange)
                            .build();

                    // Now fetch the required range
                    setSourceLocation(newSourceLocation, true);
                });
            }
        }
    }
Will attempt to set the source range using the passed highlight, i.e. if the highlight
is towards the end of the data then it will set the range to enclose the highlight.
stroom-core-client/src/main/java/stroom/data/client/presenter/SourcePresenter.java