public void beginReading() {
   super.beginReading();
   buf.flip(); // don't need to synchronize -- we hold the semaphore
 }