'Return the length of the buffer.
Note that whether this returns a *character* pos or a *byte* pos is
left fuzzy so that SilverCity and SciMoz implementations can be
efficient. All that is guaranteed is that the *_at_pos() methods
work as expected.'

def length(self):

    raise VirtualMethodError()
