if (!(this.peekOffset == other.peekOffset)) { LinearPrinter.println("Different branches have diff num of pops. " + "this = " + this.peekOffset + " other= " + other.peekOffset + ")  Nonlinear!");
if (!(this.peekOffset == other.peekOffset)) {
    public void applyConfluence(LinearFilterVisitor other) {	// first thing that we need to do is to check both non linear flags.	if (this.nonLinearFlag || other.nonLinearFlag) {	    this.nonLinearFlag = true;	    return;	}	// now, check the linear representations	if ((!this.representationMatrix.equals(other.representationMatrix)) ||	    (!this.representationVector.equals(other.representationVector))) {	    LinearPrinter.println("Different branches compute different functions. Nonlinear!");	    this.nonLinearFlag = true;	    return;	}	// now, check the peek offset	if (!(this.peekOffset == other.peekOffset)) {	    LinearPrinter.println("Different branches have diff num of pops. " +				  "this = " + this.peekOffset +				  " other= " + other.peekOffset +				  ")  Nonlinear!");	    this.nonLinearFlag = true;	    return;	}	    	// now, check the push offset	if (!(this.pushOffset == other.pushOffset)) {	    LinearPrinter.println("Different branches have diff num of pushes. Nonlinear!");	    this.nonLinearFlag = true;	    return;	}	// now, do a set union on the two variable mappings and set	// that union as the variable mapping for this	this.variablesToLinearForms = setUnion(this.variablesToLinearForms,					       other.variablesToLinearForms);	// make sure we are still good from a representation invariant point of view	checkRep();    }