Lifter.eliminatePipe(synced);
    public static void addDeepRectangularSyncPoints(SIRStream str) {	// first lift everything	Lifter.lift(str);	// make all splitjoins rectangular and add synchronization	IterFactory.createIter(str).accept(new EmptyStreamVisitor() {		public void preVisitSplitJoin(SIRSplitJoin self, SIRSplitJoinIter iter) {		    super.preVisitSplitJoin(self, iter);		    self.makeRectangular();		}		public void postVisitSplitJoin(SIRSplitJoin self, SIRSplitJoinIter iter) {		    super.postVisitSplitJoin(self, iter);		    // don't need to do anything if only one level in <self>		    if (self.getRectangularHeight()>1) {			// make partitiongroup, putting each child in its own group			SIRPipeline synced = addSyncPoints(self, PartitionGroup.createUniformPartition(self.getRectangularHeight()));			self.getParent().replace(self, synced);		    }		}});	// lift all but sync points we added	Lifter.liftPreservingSync(str);    }