if (tileLimit==1 || (cont.getParent() instanceof SIRSplitJoin)) {
if (tileLimit==1 || (cont.getParent()!=null && cont.getParent().getSuccessor(cont) instanceof SIRJoiner)) {
	public StreamTransform traceback(HashMap map, int[] tileCounter, int tileLimit) {	    /*	    if (uniformSJ.contains(cont)) {		// optimize uniform splitjoins		tracebackUniform(map, tileCounter, tileLimit);	    } else {	    */	    StreamTransform result = null;	    if (tileLimit==1 || (cont.getParent() instanceof SIRSplitJoin)) {		result = super.traceback(map, tileCounter, tileLimit);	    } else {		// if we're not fusing into a single tile, need to:		// 1) decrease the tileLimit since one will be reserved for the joiner		result = super.traceback(map, tileCounter, tileLimit-1);		// 2) unless we have a tileLimit of 2 (in which case		//    the joiner should just as well be fused in with		//    the parallel streams) increment the tile count		//    before adding the joiner		if (tileLimit!=2) {		    tileCounter[0]++;		}	    }	    // add the joiner	    map.put(((SIRSplitJoin)cont).getJoiner(), new Integer(tileCounter[0]));	    return result;	}