The specific marker value used for this class allows for some level of protection against misuse where seek() is called on a mark or release() is called in the wrong order.
seek()
release()
public virtual int Mark() { if (numMarkers == 0) { lastTokenBufferStart = lastToken; } int mark = -numMarkers - 1; numMarkers++; return mark; }