SimpleDot.printGraph(str, "first-sir-tree.dot");
if (KjcOptions.debug) SimpleDot.printGraph(str, "first-sir-tree.dot");
    public static void doit(SIRStream str) {        // visit the hoister in all containers        IterFactory.createFactory().createIter(str).accept(new EmptyStreamVisitor() {                /* pre-visit a pipeline */                public void preVisitPipeline(SIRPipeline self,                                             SIRPipelineIter iter) {                    self.clear();                    self.getInit().accept(new InitializationHoister(self));                }                        /* pre-visit a splitjoin */                public void preVisitSplitJoin(SIRSplitJoin self,                                              SIRSplitJoinIter iter) {                    self.clear();                    self.getInit().accept(new InitializationHoister(self));                }                        /* pre-visit a feedbackloop */                public void preVisitFeedbackLoop(SIRFeedbackLoop self,                                                 SIRFeedbackLoopIter iter) {                    self.clear();                    self.getInit().accept(new InitializationHoister(self));                    // if we don't have enough children, add null loop                    if (self.size()<2) {                        self.add(null);                    }                }            });        // dump the dot graph of <str>        SimpleDot.printGraph(str, "first-sir-tree.dot");        // if we had an exception, throw it        if (nonConstantArgError!=null) {            throw nonConstantArgError;        }    }