/// <summary>
    /// Copy properties from "Tools|Options" page objects to <paramref
    /// name="globalSettings"/>.
    /// </summary>
    private void CopyOptionsPagesToGlobalSettings(GlobalSettings globalSettings) {
      CheckOnWriteThread();

      var page = _visualStudioPackageProvider.GetToolsOptionsPage<GeneralOptions>();
      ReflectionUtils.CopyDeclaredPublicProperties(page, "", globalSettings, "", throwOnExtraProperty: true);

      var page2 = _visualStudioPackageProvider.GetToolsOptionsPage<CodingStyleOptions>();
      ReflectionUtils.CopyDeclaredPublicProperties(page2, "", globalSettings, "CodingStyle", throwOnExtraProperty: true);
    }
    private GlobalSettings CreateGlobalSettings() {
      var result = new GlobalSettings();
      CopyOptionsPagesToGlobalSettings(result);

      // Ensure changes to the GlobalSettings object are save to the VS Settings.
      result.PropertyChanged += GlobalSettingsPropertyChangedHandler;

      // Ensure changes to the VS Settings are reflected to the GlobalSettings object.
      _eventBus.RegisterHandler("ToolsOptionsPageApply", ToolsOptionsPageApplyHandler);

      return result;
    }