if (getBufferVar(null, isInit) != null) enclosingBlock.addStatementFirst (new JVariableDeclarationStatement(null, getBufferVar(null, isInit), null));
    public JStatement[] getWork(JBlock enclosingBlock, boolean isInit)     {	JBlock statements = new JBlock(null, new JStatement[0], null);		int mult = StrToRStream.getMult(getNode(), isInit);	if (mult == 0)	    return statements.getStatementArray();		//add the buffer declaration	if (getBufferVar(null, isInit) != null)	    enclosingBlock.addStatementFirst		(new JVariableDeclarationStatement(null, 						   getBufferVar(null, isInit),						   null));		//add the block to do the data reordering	if (node.isDuplicateSplitter()) {	    enclosingBlock.addStatement(getDuplicateCode(enclosingBlock, mult, isInit));	}	else {	    enclosingBlock.addStatement(getRRCode(enclosingBlock, mult, isInit));	}	//either way, we have to generate code to save the non-pop'ed items now	//by moving them to beginning of the buffer	if (remaining[0] > 0) {	    //create the loop counter	    JVariableDefinition loopCounterBackup = 		GenerateCCode.newIntLocal(BACKUPCOUNTER, myUniqueID, 0);	    //add the declaration of the counter	    enclosingBlock.addStatementFirst(new JVariableDeclarationStatement					     (null, loopCounterBackup, null));	    //make the back up loop, move peekBufferItems starting at mult*weight	    //to the beginning 	    statements.addStatement 		(remainingBackupLoop(bufferVar[0],				     loopCounterBackup,				     StrToRStream.getMult(node, isInit) * distinctRoundItems(),				     remaining[0]));	}		return statements.getStatementArray();    }