private static void GetFlagsAndPreferences(ContentMetadataStoreMode mode, ContentMetadataStoreModeFlags modeMask, out ContentMetadataStoreModeFlags redisFlags, out ContentMetadataStoreModeFlags distributedFlags, out bool preferRedis, out bool preferDistributed)
        {
            var modeFlags = mode.MaskFlags(modeMask);

            redisFlags       = modeFlags & ContentMetadataStoreModeFlags.Redis;
            distributedFlags = modeFlags & ContentMetadataStoreModeFlags.Distributed;
            var preference = mode.MaskFlags(ContentMetadataStoreModeFlags.PreferenceMask);

            preferRedis       = preference.HasAllFlags(ContentMetadataStoreModeFlags.PreferRedis) || distributedFlags == 0;
            preferDistributed = preference.HasAllFlags(ContentMetadataStoreModeFlags.PreferDistributed) || redisFlags == 0;
        }
 public static ContentMetadataStoreMode Mask(this ContentMetadataStoreMode mode, ContentMetadataStoreModeFlags?mask)
 {
     return((ContentMetadataStoreMode)mode.MaskFlags(mask));
 }