private List<org.eclipse.lsp4j.TextEdit> format(ICompilationUnit cu, IDocument document, IRegion region, FormattingOptions options, boolean includeComments, IProgressMonitor monitor) {
if (cu == null || document == null || region == null || monitor.isCanceled()) {
return Collections.emptyList();
}
CodeFormatter formatter = ToolFactory.createCodeFormatter(getOptions(options, cu));
String lineDelimiter = TextUtilities.getDefaultLineDelimiter(document);
String sourceToFormat = document.get();
int kind = getFormattingKind(cu, includeComments);
TextEdit format = formatter.format(kind, sourceToFormat, region.getOffset(), region.getLength(), 0, lineDelimiter);
if (format == null || format.getChildren().length == 0 || monitor.isCanceled()) {
return Collections.<org.eclipse.lsp4j.TextEdit>emptyList();
}
MultiTextEdit flatEdit = TextEditUtil.flatten(format);
return convertEdits(flatEdit.getChildren(), document);
}