 guarantee is "without blocking for more input" rather than "without
 blocking": a read may still block waiting for I/O to complete&nbsp;&mdash; the guarantee is
 merely that it won't have to wait indefinitely for data to be written. The result of this
 method should not be used as a license to do I/O on a thread that shouldn't be blocked.

 <p>Secondly, the result is a
 conservative estimate and may be significantly smaller than the actual number of bytes
 available. In particular, an implementation that a