*/
    public JMethodDeclaration getInitStageMethod()     {        JBlock statements = new JBlock(null, new JStatement[0], null);        FilterContent filter = filterInfo.filter;        //if we have gdn output then we have to set up the gdn packet header for        //each gdn send        if (gdnOutput) {            statements.addStatement(setupGDNStore(true, false));        }        //add the call to initWork        if (filterInfo.isTwoStage()) {            //FilterContent two = filter;            /*              JBlock body =               (JBlock)ObjectDeepCloner.deepCopy              (filter.getInitWork().getBody());            */            JMethodCallExpression initWorkCall =                 new JMethodCallExpression(null, new JThisExpression(null),                                          filter.getInitWork().getName(),                                          new JExpression[0]);                    //add the code to receive the items into the buffer from the network            statements.addStatement                (makeForLoopFieldIndex(receiveCode(filter, filter.getInputType(),                                          generatedVariables),                             generatedVariables.exeIndex,                             new JIntLiteral(filterInfo.prePeek)));            //now inline the init work body            statements.addStatement(new JExpressionStatement(null, initWorkCall, null));            //if a simple filter, reset the simpleIndex            if (filterInfo.isSimple()) {                statements.addStatement                    (new JExpressionStatement(null,                                              (new JAssignmentExpression                                               (null,                                                new JFieldAccessExpression                                                (null, new JThisExpression(null),                                                  generatedVariables.simpleIndex.getIdent()),                                                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 (filterInfo.bottomPeek > 0) {                statements.addStatement                    (makeForLoopFieldIndex(receiveCode(filter, filter.getInputType(),                                             generatedVariables),                                 generatedVariables.exeIndex,                                 new JIntLiteral(filterInfo.bottomPeek)));            }                    //add the calls for the work function in the initialization stage            statements.addStatement(generateInitWorkLoop                                    (filter, generatedVariables));        }        //add the code to collect all data produced by the upstream filter         //but not consumed by this filter in the initialization stage        if (filterInfo.remaining > 0) {            statements.addStatement                (makeForLoopFieldIndex(receiveCode(filter, filter.getInputType(),                                         generatedVariables),                             generatedVariables.exeIndex,                             new JIntLiteral(filterInfo.remaining)));         }        if (SpaceTimeBackend.FILTER_DEBUG_MODE) {            statements.addStatement                (new SIRPrintStatement(null,                                       new JStringLiteral(null, filter.getName() + " Starting Steady-State"),                                       null));        }                //add the necessary handling of dram cache alignment over the gdn        statements.addStatement(gdnCacheAlign(true));            return new JMethodDeclaration(null, at.dms.kjc.Constants.ACC_PUBLIC,                                      CStdType.Void,                                      initStage + uniqueID,                                      JFormalParameter.EMPTY,                                      CClassType.EMPTY,                                      statements,                                      null,                                      null);     }