Most of them appear in the disclaimers, but some are in the code as well.
In a ringbuffer implementation with only two begin/end pointers, it's impossible to distinguish between an empty and a full ringbuffer. The correct interpretation mode needs to be specified by the user.