protected void init() {
    if (myWrapper != null) return;

    myProcessor = createProcessor();

    String dialogGroupKey = ObjectUtils
      .notNull(myProcessor.getContextUserData(DiffUserDataKeys.DIALOG_GROUP_KEY), DEFAULT_DIALOG_GROUP_KEY);

    myWrapper = new WindowWrapperBuilder(DiffUtil.getWindowMode(myHints), new MyPanel(myProcessor.getComponent()))
      .setProject(myProject)
      .setParent(myHints.getParent())
      .setDimensionServiceKey(dialogGroupKey)
      .setPreferredFocusedComponent(() -> myProcessor.getPreferredFocusedComponent())
      .setOnShowCallback(() -> myProcessor.updateRequest())
      .build();
    myWrapper.setImages(DiffUtil.DIFF_FRAME_ICONS.getValue());
    Disposer.register(myWrapper, myProcessor);

    Consumer<WindowWrapper> wrapperHandler = myHints.getWindowConsumer();
    if (wrapperHandler != null) wrapperHandler.consume(myWrapper);

    MessageBusConnection appConnection = ApplicationManager.getApplication().getMessageBus().connect(myProcessor);
    appConnection.subscribe(ApplicationActivationListener.TOPIC, new ApplicationActivationListener() {
      @Override
      public void applicationActivated(@NotNull IdeFrame ideFrame) {
        DiffRequest request = myProcessor.getActiveRequest();
        if (request != null) {
          VirtualFile[] files = VfsUtilCore.toVirtualFileArray(request.getFilesToRefresh());
          DiffUtil.refreshOnFrameActivation(files);
        }
      }
    });
  }
protected void init()