/// <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;
			}
		}
		/// <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 ) {
		}