In case there is garbage collection between allocate and initialize?  Maybe it makes more sense to set source to `Qnil` in tokenizer_allocate, then unconditionally mark it, which is what strscan from the standard library does.