def _parse_initializer(self, outer: str=None, allowFallback: bool=True) -> ASTInitializer:
    self.skip_ws()
    if (outer == 'member'):
        bracedInit = self._parse_braced_init_list()
        if (bracedInit is not None):
            return ASTInitializer(bracedInit, hasAssign=False)
    if (not self.skip_string('=')):
        return None
    bracedInit = self._parse_braced_init_list()
    if (bracedInit is not None):
        return ASTInitializer(bracedInit)
    if (outer == 'member'):
        fallbackEnd = []
    elif (outer == 'templateParam'):
        fallbackEnd = [',', '>']
    elif (outer is None):
        fallbackEnd = [',', ')']
    else:
        self.fail(("Internal error, initializer for outer '%s' not implemented." % outer))
    inTemplate = (outer == 'templateParam')

    def parser() -> ASTExpression:
        return self._parse_assignment_expression(inTemplate=inTemplate)
    value = self._parse_expression_fallback(fallbackEnd, parser, allow=allowFallback)
    return ASTInitializer(value)
def _parse_initializer(self, outer: str=None, allowFallback: bool=True) -> ASTInitializer:
    self.skip_ws()
    if (outer == 'member'):
        bracedInit = self._parse_braced_init_list()
        if (bracedInit is not None):
            return ASTInitializer(bracedInit, hasAssign=False)
    if (not self.skip_string('=')):
        return None
    bracedInit = self._parse_braced_init_list()
    if (bracedInit is not None):
        return ASTInitializer(bracedInit)
    if (outer == 'member'):
        fallbackEnd = []
    elif (outer == 'templateParam'):
        fallbackEnd = [',', '>']
    elif (outer is None):
        fallbackEnd = [',', ')']
    else:
        self.fail(("Internal error, initializer for outer '%s' not implemented." % outer))
    inTemplate = (outer == 'templateParam')

    def parser() -> ASTExpression:
        return self._parse_assignment_expression(inTemplate=inTemplate)
    value = self._parse_expression_fallback(fallbackEnd, parser, allow=allowFallback)
    return ASTInitializer(value)