bundles/org.tukani.xz/src/org/tukaani/xz/XZInputStream.java
public void close(boolean closeInput) throws IOException {
        if (in != null) {
            if (xzIn != null) {
                xzIn.close(false);
                xzIn = null;
            }

            try {
                if (closeInput)
                    in.close();
            } finally {
                in = null;
            }
        }
    }
public void close(boolean closeInput) throws IOException {
        if (in != null) {
            if (xzIn != null) {
                xzIn.close(false);
                xzIn = null;
            }

            try {
                if (closeInput)
                    in.close();
            } finally {
                in = null;
            }
        }
    }
Closes the stream and optionally calls <code>in.close()</code>.
If the stream was already closed, this does nothing.
If <code>close(false)</code> has been called, a further
call of <code>close(true)</code> does nothing (it doesn't call
<code>in.close()</code>).
<p>
If you don't want to close the underlying <code>InputStream</code>,
there is usually no need to worry about closing this stream either;
it's fine to do nothing and let the garbage collector handle it.
However, if you are using {@link ArrayCache}, <code>close(false)</code>
can be useful to put the allocated arrays back to the cache without
closing the underlying <code>InputStream</code>.
<p>
Note that if you successfully reach the end of the stream
(<code>read</code> returns <code>-1</code>), the arrays are
automatically put back to the cache by that <code>read</code> call. In
this situation <code>close(false)</code> is redundant (but harmless).

@throws  IOException if thrown by <code>in.close()</code>

@since 1.7