I am aware of the use of size classes in modern allocators.  My point was more about what the intended usage pattern was for clients of this API, since two reasonable people could read what is currently here and come to the two distinct protocols that I outlined in my message.  I.e. there may be value (in terms of debugging tools, I'm thinking of e.g. valgrind) of still requiring a client to call back through `realloc` even when they "know" via `usable_size` that they already have the space available, so that the allocator has a chance to record locally what state is actually allowed to be used by a correct client.