/// <summary>
        /// Creates an instance of <see cref="ConfigurableLtoFlashBooleanFeature"/>.
        /// </summary>
        /// <param name="uniqueId">The unique identifier of the configurable feature.</param>
        /// <param name="displayName">The user-friendly display name of the feature.</param>
        /// <param name="defaultValue">The factory default value for the feature.</param>
        /// <param name="featureFlagsMask">The flags mask for the feature.</param>
        /// <param name="readOnly">If <c>true</c>, the feature is read-only and will throw a <see cref="System.InvalidOperationException"/> if modified.</param>
        /// <returns>A new configurable LTO Flash! feature.</returns>
        public static IConfigurableLtoFlashFeature Create(string uniqueId, string displayName, bool defaultValue, DeviceStatusFlags featureFlagsMask, bool readOnly)
        {
            IConfigurableLtoFlashFeature configurableFeature;

            if (readOnly)
            {
                configurableFeature = new ReadOnlyConfigurableLtoFlashFeature(uniqueId, displayName, defaultValue, featureFlagsMask);
            }
            else
            {
                configurableFeature = new ConfigurableLtoFlashBooleanFeature(uniqueId, displayName, defaultValue, featureFlagsMask);
            }
            return(configurableFeature);
        }
        private static Dictionary <string, IConfigurableLtoFlashFeature> InitializeConfigurableFeatures(bool readOnly)
        {
            var configurableFeatures = new IConfigurableLtoFlashFeature[]
            {
                ConfigurableLtoFlashEcsCompatibilityFeature.Create(readOnly),
                ConfigurableLtoFlashIntellivisionIICompatibilityFeature.Create(readOnly),
                ConfigurableLtoFlashShowTitleScreenFeature.Create(readOnly),
                ConfigurableLtoFlashSaveMenuPositionFeature.Create(readOnly),
                ConfigurableLtoFlashBooleanFeature.Create(Device.BackgroundGCPropertyName, Resources.Strings.SetBackgroundGarbageCollectCommand_Name, true, DeviceStatusFlags.BackgroundGC, readOnly),
                ConfigurableLtoFlashBooleanFeature.Create(Device.KeyclicksPropertyName, Resources.Strings.SetKeyclicksCommand_Name, false, DeviceStatusFlags.Keyclicks, readOnly),
                ConfigurableLtoFlashBooleanFeature.Create(Device.EnableConfigMenuOnCartPropertyName, Resources.Strings.SetEnableConfigMenuOnCartCommand_Name, true, DeviceStatusFlags.EnableCartConfig, readOnly),
                ConfigurableLtoFlashBooleanFeature.Create(Device.ZeroLtoFlashRamPropertyName, Resources.Strings.SetRandomizeLtoFlashRamCommand_Name, true, DeviceStatusFlags.ZeroRamBeforeLoad, readOnly),
            };
            var configurableFeaturesDictionary = configurableFeatures.ToDictionary(f => f.UniqueId);

            return(configurableFeaturesDictionary);
        }