llvm::opt::ArgStringList const char* vs llvm::StringRef

I noticed that ArgStringList - a very widely used type - uses raw const char* to hold strings, instead of wonderfully useful StringRef helper. Is there a technical reason for this? Does ArgStringList predate StringRef? Is it just that ArgStringList is too widely used to make any kind of breaking change?

From the class comment, it looks like ArgStringList is designed for
building "argv" lists for invoking subprocesses. Thinks like ::exec
and ::posix_spawn take a `const char *argv[]` parameter. Building
an array of `StringRef` wouldn't actually solve the problem at hand.