last.put(self, new Integer(nodes.size()));
last.put(self, new Integer(nodes.size()-1));
    private void buildNodesList() {	// add dummy start node	nodes.add(new DummyNode());	// add nodes in stream	SIRIterator it = IterFactory.createIter(str);	it.accept(new EmptyStreamVisitor() {		public void preVisitStream(SIRStream self,					   SIRIterator iter) {		    first.put(self, new Integer(nodes.size()));		}		public void postVisitStream(SIRStream self,					    SIRIterator iter) {		    last.put(self, new Integer(nodes.size()));		}		public void visitFilter(SIRFilter self,					SIRFilterIter iter) {		    nodes.add(self);		}		public void preVisitFeedbackLoop(SIRFeedbackLoop self,						 SIRFeedbackLoopIter iter) {		    super.preVisitFeedbackLoop(self, iter);		    nodes.add(self.getJoiner());		}				public void postVisitSplitJoin(SIRSplitJoin self,					       SIRSplitJoinIter iter) {		    nodes.add(self.getJoiner());		    super.postVisitSplitJoin(self, iter);		}	    });	// add dummy end node	nodes.add(new DummyNode());    }