}  if (!IMEMEstimation.TESTING_IMEM) {  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]);        // 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 (SpaceDynamicBackend.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));    }