\long\def\MH_nospace_ifnextchar:Nnn #1#2#3{
\MH_let:NwN\reserved@d=~#1
\def\reserved@a{#2}
\def\reserved@b{#3}
\futurelet\@let@token\MH_nospace_nextchar:
}
\def\MH_nospace_nextchar:{
\MH_if_meaning:NN \@let@token\reserved@d
\MH_let:NwN \reserved@b\reserved@a
\MH_fi:
\reserved@b
}
\long\def\MH_nospace_testopt:nn #1#2{
\MH_nospace_ifnextchar:Nnn[
{#1}
{#1[{#2}]}
}
\def\MH_nospace_protected_testopt:n #1{
\MH_if_meaning:NN \protect\@typeset@protect
\expandafter\MH_nospace_testopt:nn
\MH_else:
\@x@protect#1