Ref Star

<..ref star..>
 \def\:temp{\protect \T@ref}
 \ifx \::ref\:temp
    \edef\::ref{\noexpand\protect \expandafter\noexpand \csname ::ref \endcsname}
    \expandafter\def\csname ::ref \endcsname{\@ifstar \@refstar \T@ref}
 \fi
 <.ref star for babl.>
 -_-_-

<..ref star for babl..>
 \def\:temp#1{\@safe@activestrue\org@:ref{#1}\@safe@activesfalse}
 \expandafter\ifx \csname :ref \endcsname\:temp
    \expandafter\def\csname :ref \endcsname{\@ifnextchar*{\:refstar}{\r:ref}}
    \def\r:ref#1{\@safe@activestrue\org@:ref{#1}\@safe@activesfalse}
    \def\:refstar#1{\r:ref}
 \fi
 -_-_-

<..ref star..>+
 \expandafter\ifx \csname real@setref\endcsname\relax
    \def\@pagerefstar#1{%
       \HyRef@StarSetRef{#1}\@secondoffive
    }
    \def\HyRef@StarSetRef#1{%
      \begingroup
        \Hy@safe@activestrue
        \edef\x{#1}%
        \@onelevel@sanitize\x
        \edef\x{\endgroup
          \noexpand\HyRef@@StarSetRef
            \expandafter\noexpand\csname r@\x\endcsname{\x}%
        }%
      \x
    }
 
    \def\HyRef@@StarSetRef#1#2#3{%
      \ifx#1\@undefined
        \let#1\relax
      \fi
      \real@setref#1#3{#2}%
    }
 \fi
 \expandafter\ifx \csname real@setref\endcsname\relax
    \let\real@setref\@setref
 \fi
 -_-_-

test data