private int readInputData(byte[] buf,int off,int len) throws IOException {
  cbLock.lock();
  try {
    return iis.read(buf,off,len);
  }
  finally {
    cbLock.unlock();
  }
}

private int readInputData ( byte [ ] buf , int off , int len ) throws IOException { cbLock . lock ( ) ; try { return iis . read ( buf , off , len ) ; } finally { cbLock . unlock ( ) ; } }
this method is called from native code in order to fill native input buffer . we block any attempt to change the reading state during this method , in order to prevent a corruption of the native decoder state .
