@Contract(pure = true) // to avoid ignoring the result
  public static LowMemoryWatcher register(@NotNull Runnable runnable) {
    return new LowMemoryWatcher(runnable, LowMemoryWatcherType.ALWAYS);
  }
@Contract(pure = true) // to avoid ignoring the result
  public static LowMemoryWatcher register(@NotNull Runnable runnable)