+ {\parse@dlbl{\descref@i\relax\@gobble\relax}}%
+ {\parse@dlbl{\descref@i{ (}\autopageref)}}}
+\def\descref@i#1#2#3#4#5#6#7{\@ifnextchar@preserve[%
+ % {PGA}{PGB}{PGC}{MOD}{CAT}{{...}...}{LABEL}
+ {\descref@ii{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+ {\descref@iii{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}}}
+\def\descref@ii#1#2#3#4#5#6#7[#8]%
+ % {PGA}{PGB}{PGC}{MOD}{CAT}{{...}...}{LABEL}[AFTER]
+ {\descref@iii{#1}{#2}{#3}{#4}{#5}{#6}{#7}{ #8}}
+\def\descref@iii#1#2#3#4#5#6#7#8{%
+ % {PGA}{PGB}{PGC}{MOD}{CAT}{{...}...}{LABEL}{AFTER}
+ \begingroup%
+ \let\protect\@empty\def\@uscore{-\@gobble}%
+ \edef\temp@{\@desc@dispatch{desclabel}{#5}{#4}{#5}#6{#7}}%
+ \edef\next@##1##2##3{\endgroup%
+ \noexpand\hyperref[\temp@]{##1}##2{\temp@}##3}%
+ \next@{\code{#7}}{#8#1#2}{#3}%
+}
+
+%% \descindex[MOD]{CAT}{...}...{LABEL}[SUFFIX]
+%%
+%% Set a label and index entry here, as if for a description. The CAT names
+%% the category of thing being described, and the LABEL names the specific
+%% thing, as for `\descref'. The {...}... are any additional arguments
+%% required by the category's kind (e.g., method specializers). The MOD is
+%% the modifier to apply; see `\descref' for the details.
+%%
+%% The SUFFIX is appended to the index-entry text; by default it is empty.
+%% Useful values are `|(' and `|)' to set ranges.
+\def\descindex{\parse@dlbl\descindex@i}
+\def\descindex@i#1#2#3#4{\@ifnextchar[%
+ {\descindex@ii{#1}{#2}{#3}{#4}}%
+ {\descindex@ii{#1}{#2}{#3}{#4}[]}}
+\def\descindex@ii#1#2#3#4[#5]{%
+ {\begingroup\lccode`\~=`\_\lowercase{\endgroup\def~{_}}%
+ \protected@edef\@tempa{%
+ \noexpand\index{\@desc@dispatch{descindex}{#2}{#1}{#2}#3{#4}#5}}%
+ \@tempa}%
+}
+
+%% \desclabel[MOD]{CAT}{...}...{LABEL}[INDEX-SUFFIX]
+%%
+%% Set a label and index entry here, as if for a description. The CAT names
+%% the category of thing being described, and the LABEL names the specific
+%% thing, as for `\descref'. The {...}... are any additional arguments
+%% required by the category's kind (e.g., method specializers). The MOD is
+%% the modifier to apply; see `\descref' for the details.
+%%
+%% This will also add an index entry, as for `\descindex'; the INDEX-SUFFIX
+%% argument has the same effect as its SUFFIX argument.
+\def\desclabel{\parse@dlbl\desclabel@i}
+\def\desclabel@i#1#2#3#4{%