No, not an arbitrary character range, it's quite a lot smarter than that. It's an AST transformation - it takes the parsed tree out and puts it in another file and updates any imports that refer to the prior function to the new location. That all happens in the LSP side, not the LLM side, so it's deterministic. You can look at the source code for the LSP yourself.