/// <summary>
        /// Create an InflaterInputStream with the specified decompresseor
        /// and a specified buffer size.
        /// </summary>
        /// <param name = "baseInputStream">
        /// the InputStream to read bytes from
        /// </param>
        /// <param name = "inf">
        /// the decompressor used to decompress data read from baseInputStream
        /// </param>
        /// <param name = "size">
        /// size of the buffer to use
        /// </param>
        public InflaterInputStream(Stream baseInputStream, Inflater inf, int size)
        {
            this.baseInputStream = baseInputStream;
            this.inf = inf;
            try {
                this.len = (int)baseInputStream.Length;
            } catch (Exception) {
                // the stream may not support .Length
                this.len = 0;
            }

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

            buf = new byte[size]; //Create the buffer
        }
 /// <summary>
 /// Create an InflaterInputStream with the specified decompresseor
 /// and a default buffer size.
 /// </summary>
 /// <param name = "baseInputStream">
 /// the InputStream to read bytes from
 /// </param>
 /// <param name = "inf">
 /// the decompressor used to decompress data read from baseInputStream
 /// </param>
 public InflaterInputStream(Stream baseInputStream, Inflater inf)
     : this(baseInputStream, inf, 4096)
 {
 }