call `abort()` instead of `assert(false)`
abort()
will always abort the program instead of silently ignoring
the error when built with -DNDEBUG
abort()
will always abort the program instead of silently ignoring
the error when built with -DNDEBUG