io/src/main/java/com/stanfy/enroscar/io/PoolableBufferedInputStream.java
@Override
  public synchronized void reset() throws IOException {
    // BEGIN android-changed
    /*
     * These exceptions get thrown in some "normalish" circumstances,
     * so it is preferable to avoid loading up the whole big set of
     * messages just for these cases.
     */
    if (buf == null) {
      throw new IOException("Stream is closed");
    }
    if (-1 == markpos) {
      throw new IOException("Mark has been invalidated.");
    }
    // END android-changed
    pos = markpos;
  }
@Override
  public synchronized void reset() throws IOException {
    // BEGIN android-changed
    /*
     * These exceptions get thrown in some "normalish" circumstances,
     * so it is preferable to avoid loading up the whole big set of
     * messages just for these cases.
     */
    if (buf == null) {
      throw new IOException("Stream is closed");
    }
    if (-1 == markpos) {
      throw new IOException("Mark has been invalidated.");
    }
    // END android-changed
    pos = markpos;
  }
@ Override public synchronized void reset ( ) throws IOException { // BEGIN android-changed
 /*
     * These exceptions get thrown in some "normalish" circumstances,
     * so it is preferable to avoid loading up the whole big set of
     * messages just for these cases.
     */ if ( buf == null ) { throw new IOException ( "Stream is closed" ) ; } if ( - 1 == markpos ) { throw new IOException ( "Mark has been invalidated." ) ; } // END android-changed
 pos = markpos ; }
Resets this stream to the last marked location.

@throws IOException
if this stream is closed, no mark has been set or the mark is
no longer valid because more than {@code readlimit} bytes
have been read since setting the mark.
@see #mark(int)
Resets this stream to the last marked location .