private byte[] firstElement() throws KeeperException, InterruptedException {
  while (true) {
    String firstChild=firstChild(false);
    if (firstChild == null) {
      return null;
    }
    try {
      return zookeeper.getData(dir + "/" + firstChild,null,null,true);
    }
 catch (    KeeperException.NoNodeException e) {
      updateLock.lockInterruptibly();
      try {
        knownChildren.remove(firstChild);
      }
  finally {
        updateLock.unlock();
      }
    }
  }
}

private byte [ ] firstElement ( ) throws KeeperException , InterruptedException { while ( true ) { String firstChild = firstChild ( false ) ; if ( firstChild == null ) { return null ; } try { return zookeeper . getData ( dir + "/" + firstChild , null , null , true ) ; } catch ( KeeperException . NoNodeException e ) { updateLock . lockInterruptibly ( ) ; try { knownChildren . remove ( firstChild ) ; } finally { updateLock . unlock ( ) ; } } } }
return the head of the queue without modifying the queue .
