private MemoryFilterProvider()
        {
            var ascii85   = new Ascii85Filter();
            var asciiHex  = new AsciiHexDecodeFilter();
            var ccitt     = new CcittFaxDecodeFilter();
            var dct       = new DctDecodeFilter();
            var flate     = new FlateFilter();
            var jbig2     = new Jbig2DecodeFilter();
            var jpx       = new JpxDecodeFilter();
            var runLength = new RunLengthFilter();
            var lzw       = new LzwFilter();

            filterInstances = new Dictionary <string, IFilter>
            {
                { NameToken.Ascii85Decode.Data, ascii85 },
                { NameToken.Ascii85DecodeAbbreviation.Data, ascii85 },
                { NameToken.AsciiHexDecode.Data, asciiHex },
                { NameToken.AsciiHexDecodeAbbreviation.Data, asciiHex },
                { NameToken.CcittfaxDecode.Data, ccitt },
                { NameToken.CcittfaxDecodeAbbreviation.Data, ccitt },
                { NameToken.DctDecode.Data, dct },
                { NameToken.DctDecodeAbbreviation.Data, dct },
                { NameToken.FlateDecode.Data, flate },
                { NameToken.FlateDecodeAbbreviation.Data, flate },
                { NameToken.Jbig2Decode.Data, jbig2 },
                { NameToken.JpxDecode.Data, jpx },
                { NameToken.RunLengthDecode.Data, runLength },
                { NameToken.RunLengthDecodeAbbreviation.Data, runLength },
                { NameToken.LzwDecode, lzw },
                { NameToken.LzwDecodeAbbreviation, lzw }
            };
        }
        public MemoryFilterProvider(IDecodeParameterResolver decodeParameterResolver, IPngPredictor pngPredictor, ILog log)
        {
            var ascii85   = new Ascii85Filter();
            var asciiHex  = new AsciiHexDecodeFilter();
            var ccitt     = new CcittFaxDecodeFilter();
            var dct       = new DctDecodeFilter();
            var flate     = new FlateFilter(decodeParameterResolver, pngPredictor, log);
            var jbig2     = new Jbig2DecodeFilter();
            var jpx       = new JpxDecodeFilter();
            var runLength = new RunLengthFilter();
            var lzw       = new LzwFilter(decodeParameterResolver, pngPredictor);

            filterInstances = new Dictionary <string, IFilter>
            {
                { NameToken.Ascii85Decode.Data, ascii85 },
                { NameToken.Ascii85DecodeAbbreviation.Data, ascii85 },
                { NameToken.AsciiHexDecode.Data, asciiHex },
                { NameToken.AsciiHexDecodeAbbreviation.Data, asciiHex },
                { NameToken.CcittfaxDecode.Data, ccitt },
                { NameToken.CcittfaxDecodeAbbreviation.Data, ccitt },
                { NameToken.DctDecode.Data, dct },
                { NameToken.DctDecodeAbbreviation.Data, dct },
                { NameToken.FlateDecode.Data, flate },
                { NameToken.FlateDecodeAbbreviation.Data, flate },
                { NameToken.Jbig2Decode.Data, jbig2 },
                { NameToken.JpxDecode.Data, jpx },
                { NameToken.RunLengthDecode.Data, runLength },
                { NameToken.RunLengthDecodeAbbreviation.Data, runLength },
                { NameToken.LzwDecode, lzw },
                { NameToken.LzwDecodeAbbreviation, lzw }
            };
        }