macro_rules! jsv {
(undefined) => { ... };
(null) => { ... };
($v : literal) => { ... };
({ }) => { ... };
({ $($k : tt $(: $v : expr) ?), + $(,) ? }) => { ... };
(@ impl set_prop_and_check $obj : ident($k : tt) : $v : expr) => { ... };
(@ impl set_prop_and_check $obj : ident($k : tt)) => { ... };
(@ impl resolve_prop_key $k : ident) => { ... };
(@ impl resolve_prop_key $k : literal) => { ... };
(@ impl resolve_prop_key [$k : expr]) => { ... };
(@ impl resolve_prop_key $k : tt) => { ... };
([]) => { ... };
([$($arr_item : expr), + $(,) ?]) => { ... };
}