private static @NotNull ExceptionInfo createExceptionInfo(String message, String exceptionName, int startOffset) {
    return switch (exceptionName) {
      case "java.lang.ArrayIndexOutOfBoundsException" -> new ArrayIndexOutOfBoundsExceptionInfo(startOffset, message);
      case "java.lang.ArrayStoreException" -> new ArrayStoreExceptionInfo(startOffset, message);
      case "java.lang.ClassCastException" -> new ClassCastExceptionInfo(startOffset, message);
      case "java.lang.NullPointerException" -> new NullPointerExceptionInfo(startOffset, message);
      case "java.lang.AssertionError" -> new AssertionErrorInfo(startOffset, message);
      case "java.lang.ArithmeticException" -> new ArithmeticExceptionInfo(startOffset, message);
      case "java.lang.NegativeArraySizeException" -> new NegativeArraySizeExceptionInfo(startOffset, message);
      default -> {
        ExceptionInfo info =
          JetBrainsNotNullInstrumentationExceptionInfo.tryCreate(startOffset, exceptionName, message);
        yield info != null ? info : new ExceptionInfo(startOffset, exceptionName, message);
      }
    };
  }
private static @NotNull ExceptionInfo createExceptionInfo(String message, String exceptionName, int startOffset)