/// <summary>
 /// Create an InflaterInputStream with the specified decompressor
 /// and a default buffer size of 4KB.
 /// </summary>
 /// <param name = "baseInputStream">
 /// The source of input data
 /// </param>
 /// <param name = "inf">
 /// The decompressor used to decompress data read from baseInputStream
 /// </param>
 public InflaterInputStream(Stream baseInputStream, Inflater inf)
     : this(baseInputStream, inf, 4096)
 {
 }
        /// <summary>
        /// Create an InflaterInputStream with the specified decompressor
        /// and the specified buffer size.
        /// </summary>
        /// <param name = "baseInputStream">
        /// The InputStream to read bytes from
        /// </param>
        /// <param name = "inflater">
        /// The decompressor to use
        /// </param>
        /// <param name = "bufferSize">
        /// Size of the buffer to use
        /// </param>
        public InflaterInputStream(Stream baseInputStream, Inflater inflater, int bufferSize)
        {
            if (baseInputStream == null) {
                throw new ArgumentNullException("baseInputStream");
            }

            if (inflater == null) {
                throw new ArgumentNullException("inflater");
            }

            if (bufferSize <= 0) {
                throw new ArgumentOutOfRangeException("bufferSize");
            }

            this.baseInputStream = baseInputStream;
            this.inf = inflater;

            inputBuffer = new InflaterInputBuffer(baseInputStream, bufferSize);
        }
 /// <summary>
 /// Call <see cref="Inflater.SetInput(byte[], int, int)"/> passing the current clear text buffer contents.
 /// </summary>
 /// <param name="inflater">The inflater to set input for.</param>
 public void SetInflaterInput(Inflater inflater)
 {
     if ( available > 0 ) {
         inflater.SetInput(clearText, clearTextLength - available, available);
         available = 0;
     }
 }