Given a stream of events, for any event in the stream I needed to be able to obtain both the preceding and following n events. To achieve this, I developed this RingBuffer implementation. When operating in `ordered` mode it allows me to get the preceding n events, at that point, by then adding a listener to the RingBuffer I can then also get the following n events.