@ApiStatus.Internal
  public static void ensureRequiredClassesAreLoaded() {
    if (!classesLoaded.compareAndSet(false, true)) {
      return;
    }
    var classLoader = TextComponentEditorImpl.class.getClassLoader();
    for (var c : Arrays.asList(
      Border.class,
      CaretModel.class,
      Document.class,
      EditorColorsScheme.class,
      EditorGutter.class,
      EditorKind.class,
      EditorMouseEventArea.class,
      EditorMouseListener.class,
      EditorMouseMotionListener.class,
      EditorSettings.class,
      EmptyIndentsModel.class,
      EmptyInlayModel.class,
      EmptySoftWrapModel.class,
      FoldingModel.class,
      IndentsModel.class,
      InlayModel.class,
      Insets.class,
      JBInsets.class,
      JComponent.class,
      JTextArea.class,
      JTextComponent.class,
      LogicalPosition.class,
      MarkupModel.class,
      MouseEvent.class,
      Point.class,
      Point2D.class,
      Project.class,
      ScrollingModel.class,
      SettingsImpl.class,
      SoftWrapModel.class,
      TextAreaDocument.class,
      TextComponentCaret.class,
      TextComponentCaretModel.class,
      TextComponentDocument.class,
      TextComponentEditor.class,
      TextComponentFoldingModel.class,
      TextComponentScrollingModel.class,
      TextComponentSelectionModel.class,
      UserDataHolderBase.class,
      VisualPosition.class
    )) {
      try {
        Class.forName(c.getName(), true, classLoader);
      }
      catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
      }
    }
  }
@ApiStatus.Internal
  public static void ensureRequiredClassesAreLoaded()