macro_rules! __impl_use_hook {
    (
        @
        [ $($impl_generics:tt)* ]
        [ $ty:ty ]
        [ $($where:tt)* ]
        {
            $(#[$meta_use:meta])*
            $use_hook:ident
            $({$($args_lifetimes:tt)*})?
            $([$($args_generics:tt)*])?
            ( $self_0:ident $($self_1:ident)? $(, $arg_pat:ident : $arg_ty:ty)* $(,)? ) -> $value:ty $impl_use_hook:block
        }
    ) => { ... };
    (
        *
        $impl_generics:tt
        $ty:tt
        $where:tt
    ) => { ... };
    (
        *
        $impl_generics:tt
        $ty:tt
        $where:tt
        $($use_hook_tt:tt)+
    ) => { ... };
}