You do not always have all the information you need at the time of a given callback
You may need to store information in various data structures (stacks, queues,vectors, arrays, etc.) and act on it at a later point
For example the
characters() method is not guaranteed
to give you the maximum number of contiguous characters. It may
split a single run of characters over multiple method calls.