Is there any reason to use construct like `version (assert) if (empty) throw new RangeError();` intead of `onRangeError()` or just plain assert? Worse, this causes @nogc to differ between release and debug. See also: https://run.dlang.io/is/7h48fC Thanks