/// <summary>
        /// This version also accepts <see cref="SymbolDisplayCompilerInternalOptions"/>.
        /// </summary>
        internal SymbolDisplayFormat(
            SymbolDisplayCompilerInternalOptions compilerInternalOptions,
            SymbolDisplayGlobalNamespaceStyle globalNamespaceStyle     = default(SymbolDisplayGlobalNamespaceStyle),
            SymbolDisplayTypeQualificationStyle typeQualificationStyle = default(SymbolDisplayTypeQualificationStyle),
            SymbolDisplayGenericsOptions genericsOptions           = default(SymbolDisplayGenericsOptions),
            SymbolDisplayMemberOptions memberOptions               = default(SymbolDisplayMemberOptions),
            SymbolDisplayParameterOptions parameterOptions         = default(SymbolDisplayParameterOptions),
            SymbolDisplayDelegateStyle delegateStyle               = default(SymbolDisplayDelegateStyle),
            SymbolDisplayExtensionMethodStyle extensionMethodStyle = default(SymbolDisplayExtensionMethodStyle),
            SymbolDisplayPropertyStyle propertyStyle               = default(SymbolDisplayPropertyStyle),
            SymbolDisplayLocalOptions localOptions = default(SymbolDisplayLocalOptions),
            SymbolDisplayKindOptions kindOptions   = default(SymbolDisplayKindOptions),
            SymbolDisplayMiscellaneousOptions miscellaneousOptions = default(SymbolDisplayMiscellaneousOptions))
        {
            // If we want to display `!`, then we surely also want to display `?`
            Debug.Assert(miscellaneousOptions.IncludesOption(SymbolDisplayMiscellaneousOptions.IncludeNullableReferenceTypeModifier) ||
                         !compilerInternalOptions.IncludesOption(SymbolDisplayCompilerInternalOptions.IncludeNonNullableTypeModifier));

            this.GlobalNamespaceStyle    = globalNamespaceStyle;
            this.TypeQualificationStyle  = typeQualificationStyle;
            this.GenericsOptions         = genericsOptions;
            this.MemberOptions           = memberOptions;
            this.ParameterOptions        = parameterOptions;
            this.DelegateStyle           = delegateStyle;
            this.ExtensionMethodStyle    = extensionMethodStyle;
            this.PropertyStyle           = propertyStyle;
            this.LocalOptions            = localOptions;
            this.KindOptions             = kindOptions;
            this.MiscellaneousOptions    = miscellaneousOptions;
            this.CompilerInternalOptions = compilerInternalOptions;
        }