@Override public void run() throws Exception {
monitor.beginTask(calculatingChangedRegions, 20);
IFileStore fileStore = buffer.getFileStore();
ITextFileBufferManager fileBufferManager = createTextFileBufferManager();
fileBufferManager.connectFileStore(fileStore, getSubProgressMonitor(monitor, 15));
try {
IDocument old = ((ITextFileBuffer) fileBufferManager.getFileStoreFileBuffer(fileStore)).getDocument();
result.set(getChangedLineRegions(old));
} finally {
fileBufferManager.disconnectFileStore(fileStore, getSubProgressMonitor(monitor, 5));