switching ArgValue to use std.variant