&& ((JExpressionStatement) last).getExpression() instanceof SIRPopExpression) ); workBody.addAllStatements(posn+1,initAndLoop);
&& ((JExpressionStatement) last).getExpression() instanceof SIRPopExpression) ) { lastPos--; last = stmts.get(lastPos); }  workBody.addAllStatements(lastPos+1,initAndLoop);
    private static void putInPokeBuffer(SIRFilter filter,            JVariableDefinition pokeBufDefn,             JFieldAccessExpression pokeBufAccess,            JVariableDefinition pokeBufOffsetDef,            JFieldAccessExpression pokeBufOffset) {            int vecSize = KjcOptions.vectorize / 4;            int bufsize = (vecSize - 1) * filter.getPushInt();                    // add buffer and and offset declarations.            filter.addField(new JFieldDeclaration(pokeBufDefn));            filter.addField(new JFieldDeclaration(pokeBufOffsetDef));                    // statements to make a loop to push poke buffer contents            JStatement initOffset = new JExpressionStatement(                    new JAssignmentExpression(                            pokeBufOffset,                            new JIntLiteral(0)));            JStatement moveOne = new JExpressionStatement(                    new SIRPushExpression(                            new JArrayAccessExpression(                                    pokeBufAccess,                                    pokeBufOffset),                                    filter.getOutputType()));            JStatement bump = new JExpressionStatement(                new JPostfixExpression(                        at.dms.kjc.Constants.OPE_POSTINC,                        pokeBufOffset));            JBlock moveBump = new JBlock(new JStatement[]{moveOne,bump});            JStatement moveLoop = at.dms.util.Utils.makeForLoop(moveBump, bufsize);            List<JStatement> initAndLoop =                 Arrays.asList(new JStatement[]{initOffset,moveLoop});                        // instert statements at end of block but before            // any SIRMarker of final SIRPopExpression            JBlock workBody = filter.getWork().getBody();            List<JStatement> stmts = workBody.getStatements();            int posn = stmts.size(); // start 1 past end            JStatement last;            do {posn = posn - 1;     // and back up to right position                last = stmts.get(posn);}             while (last instanceof SIRMarker                    || (last instanceof JExpressionStatement                            && ((JExpressionStatement) last).getExpression() instanceof SIRPopExpression) );            workBody.addAllStatements(posn+1,initAndLoop);            workBody.addStatement(0, (JStatement)AutoCloner.deepCopy(initOffset));    }