fix rest parameter, `?!` macro