Make Null a subclass of AnyVal under -Yexplicit-nulls

type NonNull[A] = NotGiven[Null <:< A]

trait JBox {
  def put[T](t: T)(using erased NonNull[T]): Unit
}

This is incorrect and changes the meaning of the code. This would be no different than this code in java:

interface JBox {
    <T extends @NotNull Object> void put(T t);
}

which is not the same as the original example. The OG example allows nullable types as input.
The point explicitly is to cast away null, or “MINUS_NULL”, as jSpecify calls it.