public OnDemandData getNextNode()
    {
	OnDemandData onDemandData;
	synchronized(aClass19_1358)
	{
	    onDemandData = (OnDemandData)aClass19_1358.popHead();
	}
	if(onDemandData == null)
	    return null;
	synchronized(nodeSubList)
	{
	    onDemandData.unlinkSub();
	}
	if(onDemandData.buffer == null)
	    return onDemandData;
	int i = 0;
	try
	{
	    GZIPInputStream gzipinputstream = new GZIPInputStream(new ByteArrayInputStream(onDemandData.buffer));
	    do
	    {
		if(i == gzipInputBuffer.length)
		    throw new RuntimeException("buffer overflow!");
		int k = gzipinputstream.read(gzipInputBuffer, i, gzipInputBuffer.length - i);
		if(k == -1)
		    break;
		i += k;
	    } while(true);
	}
	catch(IOException _ex)
	{
	    throw new RuntimeException("error unzipping");
	}
	onDemandData.buffer = new byte[i];
	System.arraycopy(gzipInputBuffer, 0, onDemandData.buffer, 0, i);

	return onDemandData;
    }