private void replaceString(
     Document document,
     int startOffset,
     int endOffset,
     String s,
     @Nullable PsiElement replacement) {
   final DocumentChangeTransaction documentChangeTransaction = getTransaction(document);
   if (documentChangeTransaction != null) {
     documentChangeTransaction.replace(startOffset, endOffset - startOffset, s, replacement);
   }
 }
 private void deleteString(Document document, int startOffset, int endOffset) {
   final DocumentChangeTransaction documentChangeTransaction = getTransaction(document);
   if (documentChangeTransaction != null) {
     documentChangeTransaction.replace(startOffset, endOffset - startOffset, "");
   }
 }
 public void insertString(Document document, int offset, String s) {
   final DocumentChangeTransaction documentChangeTransaction = getTransaction(document);
   if (documentChangeTransaction != null) {
     documentChangeTransaction.replace(offset, 0, s);
   }
 }
 public void replaceString(Document document, int startOffset, int endOffset, String s) {
   final DocumentChangeTransaction documentChangeTransaction = getTransaction(document);
   if (documentChangeTransaction != null) {
     documentChangeTransaction.replace(startOffset, endOffset - startOffset, s);
   }
 }