I feel like manipulating the argument vs manipulating a constant would be better to go with the first, you can test more easily and the end result for the user (ie mutating ARGV) would be the same, since it's what is passed as input to this class. As long as the warning shows that it mutates the variable, we should be good.