private static void WriteBitmapPalette(BinaryWriter writer,
                                        BitmapPalette palette)
 {
     if (palette == null)
     {
         writer.Write((byte)BitmapPaletteEnum.None);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.BlackAndWhite))
     {
         writer.Write((byte)BitmapPaletteEnum.BlackAndWhite);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.BlackAndWhiteTransparent))
     {
         writer.Write((byte)BitmapPaletteEnum.BlackAndWhiteTransparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Gray16))
     {
         writer.Write((byte)BitmapPaletteEnum.Gray16);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Gray16Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Gray16Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Gray256))
     {
         writer.Write((byte)BitmapPaletteEnum.Gray256);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Gray256Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Gray256Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Gray4))
     {
         writer.Write((byte)BitmapPaletteEnum.Gray4);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Gray4Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Gray4Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone125))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone125);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone125Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone125Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone216))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone216);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone216Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone216Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone252))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone252);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone252Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone252Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone256))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone256);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone256Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone256Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone27))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone27);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone27Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone27Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone64))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone64);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone64Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone64Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone8))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone8);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.Halftone8Transparent))
     {
         writer.Write((byte)BitmapPaletteEnum.Halftone8Transparent);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.WebPalette))
     {
         writer.Write((byte)BitmapPaletteEnum.WebPalette);
     }
     else if (CheckAreEqual(palette, BitmapPalettes.WebPaletteTransparent))
     {
         writer.Write((byte)BitmapPaletteEnum.WebPaletteTransparent);
     }
     else
     {
         throw new SerializerException(string.Format("Unsupported BitmapPalette: {0}",
                                                     palette.ToString()));
     }
 }