statements.addStatement(new JExpressionStatement(null, new JMethodCallExpression (null, new JThisExpression(null), SwitchCode.SW_SS_TRIPS, new JExpression[0]), null));
    private void rawMainFunction(FlatNode node, JBlock statements,				 LocalVariables localVariables)     {	SIRFilter filter = (SIRFilter)node.contents;		//generate the code to define the local variables	//defineLocalVars(statements, localVariables);	//create the params list, for some reason 	//calling toArray() on the list breaks a later pass	List paramList = filter.getParams();	JExpression[] paramArray;	if (paramList == null || paramList.size() == 0)	    paramArray = new JExpression[0];	else	    paramArray = (JExpression[])paramList.toArray(new JExpression[0]);		//if standalone, add a field for the iteration counter...	JFieldDeclaration iterationCounter = null;	if (KjcOptions.standalone) {	    iterationCounter = 		new JFieldDeclaration(new JVariableDefinition(0,							      CStdType.Integer, 							      FlatIRToC.MAINMETHOD_COUNTER,							      new JIntLiteral(-1)));	    filter.addField(iterationCounter);	}		//add the call to the init function	statements.addStatement	    (new 	     JExpressionStatement(null,				  new JMethodCallExpression				  (null,				   new JThisExpression(null),				   filter.getInit().getName(),				   paramArray),				  null));		//add the call to initWork	if (filter instanceof SIRTwoStageFilter) {	    SIRTwoStageFilter two = (SIRTwoStageFilter)filter;	    JBlock body = 		(JBlock)ObjectDeepCloner.deepCopy		(two.getInitWork().getBody());	    //add the code to receive the items into the buffer	    statements.addStatement		(makeForLoop(receiveCode(filter, filter.getInputType(), 					 localVariables),			     localVariables.exeIndex,			     new JIntLiteral(two.getInitPeekInt())));	    	    //now inline the init work body	    statements.addStatement(body);	    //if a simple filter, reset the simpleIndex	    if (isSimple(filter)) {		statements.addStatement		    (new JExpressionStatement(null,					      (new JAssignmentExpression					       (null,						new JLocalVariableExpression						(null, localVariables.simpleIndex),						new JIntLiteral(-1))), null));	    }	}				    	if (initFire - 1 > 0) {	//add the code to collect enough data necessary to fire the 	//work function for the first time	    	    if (bottomPeek > 0) {		statements.addStatement		    (makeForLoop(receiveCode(filter, filter.getInputType(),					     localVariables),				 localVariables.exeIndex,				 new JIntLiteral(bottomPeek)));	    }	    	    //add the calls for the work function in the initialization stage	    statements.addStatement(generateInitWorkLoop				    (filter, localVariables));	}	//add the code to collect all data produced by the upstream filter 	//but not consumed by this filter in the initialization stage	if (remaining > 0) {	   statements.addStatement		(makeForLoop(receiveCode(filter, filter.getInputType(),					 localVariables),			     localVariables.exeIndex,			     new JIntLiteral(remaining))); 	}	if (RawBackend.FILTER_DEBUG_MODE) {	    statements.addStatement		(new SIRPrintStatement(null,				       new JStringLiteral(null, filter.getName() + " Starting Steady-State\\n"),				       null));	}		//add the call to the work function	statements.addStatement(generateSteadyStateLoop(filter,							localVariables));		    }