A <code>FilterInputStream</code> contains some other input stream, which it uses as its basic source of data, possibly transforming the data along the way or providing additional functionality. The class <code>FilterInputStream</code> itself simply overrides all methods of <code>InputStream</code> with versions that pass all requests to the contained input stream. Subclasses of <code>FilterInputStream</code> may further override some of these methods and may also provide additional methods and fields.