@Override
  public @NotNull Disposable synchronizeWithFragment(@NotNull PsiFile injectedFile, @NotNull Document copyDocument) {
    Place shreds = InjectedLanguageUtilBase.getShreds(injectedFile);
    Project project = injectedFile.getProject();
    PsiLanguageInjectionHost host = Objects.requireNonNull(InjectedLanguageManager.getInstance(project).getInjectionHost(injectedFile));
    Document origDocument = host.getContainingFile().getFileDocument();
    Editor editor = new ImaginaryEditor(project, origDocument);
    InjectedFileChangesHandler handler = QuickEditHandler.getHandler(injectedFile, editor, shreds, copyDocument);
    copyDocument.addDocumentListener(new DocumentListener() {
      @Override
      public void documentChanged(@NotNull DocumentEvent event) {
        handler.commitToOriginal(event);
      }
    });
    QuickEditHandler.initGuardedBlocks(copyDocument, origDocument, shreds);
    return handler;
  }
@Override
  public @NotNull Disposable synchronizeWithFragment(@NotNull PsiFile injectedFile, @NotNull Document copyDocument)