return GenerateCCode.makeForLoop(assigns, induction,
return GenerateCCode.makeDoLoop(assigns, induction,
    private JStatement getDuplicateCode(JBlock enclosingBlock, int mult, boolean isInit)     {	JBlock assigns = new JBlock(null, new JStatement[0], null);	JVariableDefinition induction = 	    GenerateCCode.newIntLocal(DUPLICATECOUNTER, myUniqueID, 0);	//add the decl of the induction variable	enclosingBlock.addStatementFirst(new JVariableDeclarationStatement					(null, induction, null));	for (int i = 0; i < node.ways; i++) {	    assert node.weights[i] == 1;	    	    FusionState downstream =  FusionState.getFusionState(node.edges[i]);	    //if init outgoing[induction] = incoming[induction]	    //if steady outgoing[induction + peekBufSize_outgoing] = incoming[induction]	    JLocalVariableExpression incomingBuffer = 		new JLocalVariableExpression(null,					     getBufferVar(null, isInit));	    JLocalVariableExpression outgoingBuffer = 		new JLocalVariableExpression		(null, downstream.getBufferVar(node, isInit));								      	    JArrayAccessExpression rhs = 		new JArrayAccessExpression(null, incomingBuffer, 					   new JLocalVariableExpression					   (null, induction));	    	    JExpression outgoingIndex = new JLocalVariableExpression(null, induction);	    	    if (!isInit && downstream.getPeekBufferSize() > 0) 		outgoingIndex = new JAddExpression(null,						   outgoingIndex,						   new JIntLiteral(downstream.getPeekBufferSize()));	    JArrayAccessExpression lhs =		new JArrayAccessExpression(null, outgoingBuffer,					   outgoingIndex);	    	    JExpressionStatement assignment = 		new JExpressionStatement(null,					 new JAssignmentExpression(null,								   lhs,								   rhs),					 null);	    assigns.addStatement(assignment);	}		return GenerateCCode.makeForLoop(assigns, induction, 					     new JIntLiteral(mult));    }