public synchronized T removeNextHatched() throws InterruptedException {
  T o=getNextHatched();
  orderList.removeFirst();
  hatchMap.remove(o);
  notifyAll();
  return o;
}

public synchronized T removeNextHatched ( ) throws InterruptedException { T o = getNextHatched ( ) ; orderList . removeFirst ( ) ; hatchMap . remove ( o ) ; notifyAll ( ) ; return o ; }
remove next hatched object . blocks until next is available .
