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),+ $(,)? ]) => { ... };
}