if (RawBackend.FILTER_DEBUG_MODE) { statements.addStatement (new SIRPrintStatement(null, new JStringLiteral(null, filter.getName() + " Starting Steady-State"), null)); }
    private static void rawMainFunction(SIRFilter filter)     {	JBlock statements = new JBlock();	//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]);		//add the call to the init function	statements.addStatement	    (new 	     JExpressionStatement(null,				  new JMethodCallExpression				  (null,				   new JThisExpression(null),				   filter.getInit().getName(),				   paramArray),				  null));		//inline the work function in a while loop	JBlock workBlock = 	    (JBlock)ObjectDeepCloner.	    deepCopy(filter.getWork().getBody());	//if we are in decoupled mode do not put the work function in a for loop	//and add the print statements	if (KjcOptions.decoupled) {	    workBlock.addStatementFirst		(new SIRPrintStatement(null, 				       new JIntLiteral(0),				       null));	    workBlock.addStatement(workBlock.size(), 				   new SIRPrintStatement(null, 							 new JIntLiteral(1),							 null));	    statements.addStatement(workBlock);	}	else {	    statements.addStatement		(new JWhileStatement(null, 				     new JBooleanLiteral(null, true),				     workBlock, 				     null));	}		JMethodDeclaration rawMainFunct = 	    new JMethodDeclaration(null, 				   at.dms.kjc.Constants.ACC_PUBLIC,				   CStdType.Void,				   RawExecutionCode.rawMain,				   JFormalParameter.EMPTY,				   CClassType.EMPTY,				   statements,				   null,				   null);	filter.addMethod(rawMainFunct);	         }