private CodeGenerationContextInfo GetCodeGenerationContextInfo(
            SyntaxNode containerNode,
            OptionSet?options         = null,
            EnvDTE.vsCMAccess access  = EnvDTE.vsCMAccess.vsCMAccessDefault,
            bool generateMethodBodies = true)
        {
            var generateDefaultAccessibility = (access & EnvDTE.vsCMAccess.vsCMAccessDefault) == 0;
            var globalOptions = State.ProjectCodeModelFactory.GlobalOptions;

            var languageServices = Workspace.Services.GetLanguageServices(containerNode.SyntaxTree.Options.Language);
            var fallbackOptions  = globalOptions.GetCodeGenerationOptions(languageServices);
            var codeGenOptions   = CodeGenerationOptions.Create(options ?? Workspace.Options, fallbackOptions, languageServices);

            return(codeGenOptions.GetInfo(
                       new CodeGenerationContext(
                           generateDefaultAccessibility: generateDefaultAccessibility,
                           generateMethodBodies: generateMethodBodies),
                       containerNode.SyntaxTree.Options));
        }