protected function advanceCursor(int $byteCount)
    {
        if (0 >= $byteCount) {
            throw new DomainException("Byte count to advance cursor must be positive");
        }
        if ($this->isEnd()) {
            throw new LogicException("Cursor is at the end of text and cannot be advanced");
        }
        $maxByteCount = strlen($this->getText()) - $this->cursor;
        if ($byteCount > $maxByteCount) {
            throw new LogicException("Cursor cannot be advanced beyond the end of text");
        }
        $this->cursor += $byteCount;
        $this->textAtCursor = null;
        return $this;
    }