if (filterInfo.isSimple() && (KjcOptions.magicdram || filterInfo.traceNode.getPrevious().isFilterTrace())) {
if (filterInfo.isSimple()) {
    JStatement generateInitWorkLoop(FilterContent filter, 				    GeneratedVariables generatedVariables)     {	JBlock block = new JBlock(null, new JStatement[0], null);		//if a simple filter and the previous trace is a filter , reset the simpleIndex	if (filterInfo.isSimple() && 	    (KjcOptions.magicdram ||	    filterInfo.traceNode.getPrevious().isFilterTrace())) {	    block.addStatement		(new JExpressionStatement(null,					  (new JAssignmentExpression					   (null,					    new JFieldAccessExpression					    (null, new JThisExpression(null), 					     generatedVariables.simpleIndex.getIdent()),					    new JIntLiteral(-1))), null));	}		if (KjcOptions.magicdram || filterInfo.traceNode.getPrevious().isFilterTrace()) {	    JStatement innerReceiveLoop = 		makeForLoop(receiveCode(filter, filter.getInputType(),					generatedVariables),			    generatedVariables.exeIndex,			    new JIntLiteral(filter.getPopInt()));	    	    JExpression isFirst = 		new JEqualityExpression(null,				    false,					new JFieldAccessExpression					(null, new JThisExpression(null),					 generatedVariables.exeIndex1.getIdent()),					new JIntLiteral(0));	    JStatement ifStatement = 		new JIfStatement(null,				 isFirst,				 innerReceiveLoop,				 null, 				 null);	    	    //add the if statement	    block.addStatement(ifStatement);	}		//clone the work function and inline it	JBlock workBlock = 	    (JBlock)ObjectDeepCloner.deepCopy(filter.getWork().getBody());		//if we are in debug mode, print out that the filter is firing	if (SpaceTimeBackend.FILTER_DEBUG_MODE) {	    block.addStatement		(new SIRPrintStatement(null,				       new JStringLiteral(null, filter.getName() + " firing (init)."),				       null));	}		block.addStatement(workBlock);		//return the for loop that executes the block init - 1	//times	return makeForLoop(block, generatedVariables.exeIndex1, 			   new JIntLiteral(initFire - 1));    }