def describe_signature(self, signode: desc_signature, mode: str, env: 'BuildEnvironment', options: Dict) -> None:
    verify_description_mode(mode)
    assert self.symbol
    signode['is_multiline'] = True
    mainDeclNode = addnodes.desc_signature_line()
    mainDeclNode.sphinx_line_type = 'declarator'
    mainDeclNode['add_permalink'] = (not self.symbol.isRedeclaration)
    if self.templatePrefix:
        self.templatePrefix.describe_signature(signode, mode, env, symbol=self.symbol, lineSpec=options.get('tparam-line-spec'))
    signode += mainDeclNode
    if (self.visibility and (self.visibility != 'public')):
        mainDeclNode += addnodes.desc_annotation((self.visibility + ' '), (self.visibility + ' '))
    if (self.objectType == 'type'):
        prefix = self.declaration.get_type_declaration_prefix()
        prefix += ' '
        mainDeclNode += addnodes.desc_annotation(prefix, prefix)
    elif (self.objectType == 'concept'):
        mainDeclNode += addnodes.desc_annotation('concept ', 'concept ')
    elif (self.objectType == 'member'):
        pass
    elif (self.objectType == 'function'):
        pass
    elif (self.objectType == 'class'):
        assert (self.directiveType in ('class', 'struct'))
        prefix = (self.directiveType + ' ')
        mainDeclNode += addnodes.desc_annotation(prefix, prefix)
    elif (self.objectType == 'union'):
        mainDeclNode += addnodes.desc_annotation('union ', 'union ')
    elif (self.objectType == 'enum'):
        if (self.directiveType == 'enum'):
            prefix = 'enum '
        elif (self.directiveType == 'enum-class'):
            prefix = 'enum class '
        elif (self.directiveType == 'enum-struct'):
            prefix = 'enum struct '
        else:
            assert False
        mainDeclNode += addnodes.desc_annotation(prefix, prefix)
    elif (self.objectType == 'enumerator'):
        mainDeclNode += addnodes.desc_annotation('enumerator ', 'enumerator ')
    else:
        assert False
    self.declaration.describe_signature(mainDeclNode, mode, env, self.symbol)
def describe_signature(self, signode: desc_signature, mode: str, env: 'BuildEnvironment', options: Dict) -> None:
    verify_description_mode(mode)
    assert self.symbol
    signode['is_multiline'] = True
    mainDeclNode = addnodes.desc_signature_line()
    mainDeclNode.sphinx_line_type = 'declarator'
    mainDeclNode['add_permalink'] = (not self.symbol.isRedeclaration)
    if self.templatePrefix:
        self.templatePrefix.describe_signature(signode, mode, env, symbol=self.symbol, lineSpec=options.get('tparam-line-spec'))
    signode += mainDeclNode
    if (self.visibility and (self.visibility != 'public')):
        mainDeclNode += addnodes.desc_annotation((self.visibility + ' '), (self.visibility + ' '))
    if (self.objectType == 'type'):
        prefix = self.declaration.get_type_declaration_prefix()
        prefix += ' '
        mainDeclNode += addnodes.desc_annotation(prefix, prefix)
    elif (self.objectType == 'concept'):
        mainDeclNode += addnodes.desc_annotation('concept ', 'concept ')
    elif (self.objectType == 'member'):
        pass
    elif (self.objectType == 'function'):
        pass
    elif (self.objectType == 'class'):
        assert (self.directiveType in ('class', 'struct'))
        prefix = (self.directiveType + ' ')
        mainDeclNode += addnodes.desc_annotation(prefix, prefix)
    elif (self.objectType == 'union'):
        mainDeclNode += addnodes.desc_annotation('union ', 'union ')
    elif (self.objectType == 'enum'):
        if (self.directiveType == 'enum'):
            prefix = 'enum '
        elif (self.directiveType == 'enum-class'):
            prefix = 'enum class '
        elif (self.directiveType == 'enum-struct'):
            prefix = 'enum struct '
        else:
            assert False
        mainDeclNode += addnodes.desc_annotation(prefix, prefix)
    elif (self.objectType == 'enumerator'):
        mainDeclNode += addnodes.desc_annotation('enumerator ', 'enumerator ')
    else:
        assert False
    self.declaration.describe_signature(mainDeclNode, mode, env, self.symbol)