You can simplify a lot of your setup:

  pending = new FIFORevQueue(s);
  pending.outputType = 0;

Would replace the shareFreeList() as well as this loop to suck out the current generator.  But we should fix our outputType because it might have been tagged as SORT_COMMIT_TIME_DESC.