if (KjcOptions.decoupled) {
if (KjcOptions.decoupled || RawWorkEstimator.SIMULATING_WORK) {
    JStatement generateSteadyStateLoop(SIRFilter filter,                                       LocalVariables localVariables) {        // is we are rate matching generate the appropriate code        if (KjcOptions.ratematch)            return generateRateMatchSteadyState(filter, localVariables);        JBlock block = new JBlock(null, new JStatement[0], null);        // reset the simple index        if (isSimple(filter)) {            block.addStatement(new JExpressionStatement(null,                                                        (new JAssignmentExpression(null,                                                                                   accessBufferVar(localVariables.simpleIndex),                                                                                   new JIntLiteral(-1))), null));        }        // add the statements to receive pop items into the buffer        block.addStatement(makeForLoopBufferVar(receiveCode(filter,                                                            filter.getInputType(), localVariables),                                                localVariables.exeIndex, new JIntLiteral(filter.getPopInt())));        JBlock workBlock = RawExecutionCode.executeWorkFunction(filter);        // if we are in debug mode, print out that the filter is firing        if (SpaceDynamicBackend.FILTER_DEBUG_MODE) {            block.addStatement(new SIRPrintStatement(null, new JStringLiteral(                                                                              null, filter.getName() + " firing.\\n"), null));        }        // add the cloned work function to the block        block.addStatement(workBlock);        // }        // return block;        // if we are in decoupled mode do not put the work function in a for        // loop        // and add the print statements        if (KjcOptions.decoupled) {            block.addStatementFirst(new SIRPrintStatement(null,                                                          new JIntLiteral(0), null));            block.addStatement(block.size(), new SIRPrintStatement(null,                                                                   new JIntLiteral(1), null));            return block;        }        return new JWhileStatement(null,                                   KjcOptions.standalone ? (JExpression) new JPostfixExpression(                                                                                                null, Constants.OPE_POSTDEC,                                                                                                new JFieldAccessExpression(new JThisExpression(null),                                                                                                                           FlatIRToC.MAINMETHOD_COUNTER))                                   : (JExpression) new JBooleanLiteral(null, true), block,                                   null);    }