Runnable (@NotNull final ProgressIndicator indicator) { try { indicator.checkCanceled(); List<CharSequence> sequences = ContainerUtil.map(getContents(), content -> content.getDocument().getImmutableCharSequence()); List<FineMergeLineFragment> lineFragments = myTextDiffProvider.compare(sequences.get(0), sequences.get(1), sequences.get(2), indicator); FoldingModelSupport.Data foldingState = myFoldingModel.createState(lineFragments, getFoldingModelSettings()); return apply(lineFragments, foldingState); } catch (DiffTooBigException e) { return applyNotification(DiffNotifications.createDiffTooBig()); } catch (ProcessCanceledException e) { throw e; } catch (Throwable e) { LOG.error(e); return applyNotification(DiffNotifications.createError()); } }