public void OnApply(IAppRefreshSettings appRefreshSettings)
        {
            RefreshFlags flags = 0;
            var          g     = _global_decompilerSettings;
            var          d     = decompilerSettings;

            d.DecompilationObject0 = DecompilationObject0.Object;
            d.DecompilationObject1 = DecompilationObject1.Object;
            d.DecompilationObject2 = DecompilationObject2.Object;
            d.DecompilationObject3 = DecompilationObject3.Object;
            d.DecompilationObject4 = DecompilationObject4.Object;

            if (g.AnonymousMethods != d.AnonymousMethods)
            {
                flags |= RefreshFlags.ILAst | RefreshFlags.ShowMember;
            }
            if (g.ExpressionTrees != d.ExpressionTrees)
            {
                flags |= RefreshFlags.ILAst;
            }
            if (g.YieldReturn != d.YieldReturn)
            {
                flags |= RefreshFlags.ILAst | RefreshFlags.ShowMember;
            }
            if (g.AsyncAwait != d.AsyncAwait)
            {
                flags |= RefreshFlags.ILAst | RefreshFlags.ShowMember;
            }
            if (g.AutomaticProperties != d.AutomaticProperties)
            {
                flags |= RefreshFlags.CSharp | RefreshFlags.ShowMember;
            }
            if (g.AutomaticEvents != d.AutomaticEvents)
            {
                flags |= RefreshFlags.CSharp | RefreshFlags.ShowMember;
            }
            if (g.UsingStatement != d.UsingStatement)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.ForEachStatement != d.ForEachStatement)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.LockStatement != d.LockStatement)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.SwitchStatementOnString != d.SwitchStatementOnString)
            {
                flags |= RefreshFlags.CSharp | RefreshFlags.ShowMember;
            }
            if (g.UsingDeclarations != d.UsingDeclarations)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.QueryExpressions != d.QueryExpressions)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.FullyQualifyAmbiguousTypeNames != d.FullyQualifyAmbiguousTypeNames)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.FullyQualifyAllTypes != d.FullyQualifyAllTypes)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.UseDebugSymbols != d.UseDebugSymbols)
            {
                flags |= RefreshFlags.DecompileAll;
            }
            if (g.ObjectOrCollectionInitializers != d.ObjectOrCollectionInitializers)
            {
                flags |= RefreshFlags.ILAst;
            }
            if (g.ShowXmlDocumentation != d.ShowXmlDocumentation)
            {
                flags |= RefreshFlags.DecompileAll;
            }
            if (g.RemoveEmptyDefaultConstructors != d.RemoveEmptyDefaultConstructors)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.IntroduceIncrementAndDecrement != d.IntroduceIncrementAndDecrement)
            {
                flags |= RefreshFlags.ILAst;
            }
            if (g.MakeAssignmentExpressions != d.MakeAssignmentExpressions)
            {
                flags |= RefreshFlags.ILAst;
            }
            if (g.AlwaysGenerateExceptionVariableForCatchBlocksUnlessTypeIsObject != d.AlwaysGenerateExceptionVariableForCatchBlocksUnlessTypeIsObject)
            {
                flags |= RefreshFlags.ILAst;
            }
            if (g.ShowTokenAndRvaComments != d.ShowTokenAndRvaComments)
            {
                flags |= RefreshFlags.DecompileAll;
            }
            if (g.DecompilationObject0 != d.DecompilationObject0)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.DecompilationObject1 != d.DecompilationObject1)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.DecompilationObject2 != d.DecompilationObject2)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.DecompilationObject3 != d.DecompilationObject3)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.DecompilationObject4 != d.DecompilationObject4)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.SortMembers != d.SortMembers)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.ForceShowAllMembers != d.ForceShowAllMembers)
            {
                flags |= RefreshFlags.CSharp | RefreshFlags.ShowMember;
            }
            if (g.SortSystemUsingStatementsFirst != d.SortSystemUsingStatementsFirst)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.MaxArrayElements != d.MaxArrayElements)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.SortCustomAttributes != d.SortCustomAttributes)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.UseSourceCodeOrder != d.UseSourceCodeOrder)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.AllowFieldInitializers != d.AllowFieldInitializers)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.OneCustomAttributePerLine != d.OneCustomAttributePerLine)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.TypeAddInternalModifier != d.TypeAddInternalModifier)
            {
                flags |= RefreshFlags.CSharp;
            }
            if (g.MemberAddPrivateModifier != d.MemberAddPrivateModifier)
            {
                flags |= RefreshFlags.CSharp;
            }

            if ((flags & RefreshFlags.ShowMember) != 0)
            {
                appRefreshSettings.Add(AppSettingsConstants.REFRESH_LANGUAGE_SHOWMEMBER);
            }
            if ((flags & RefreshFlags.ILAst) != 0)
            {
                appRefreshSettings.Add(SettingsConstants.REDECOMPILE_ILAST_ILSPY_CODE);
            }
            if ((flags & RefreshFlags.CSharp) != 0)
            {
                appRefreshSettings.Add(SettingsConstants.REDECOMPILE_CSHARP_ILSPY_CODE);
            }
            if ((flags & RefreshFlags.VB) != 0)
            {
                appRefreshSettings.Add(SettingsConstants.REDECOMPILE_VB_ILSPY_CODE);
            }

            decompilerSettings.CopyTo(_global_decompilerSettings);
        }