public PrimitiveOperator combineRightNRight(PrimitiveOperator other) {
		boolean[] newTruthTable = new boolean[4];

		// the other gate is on the left side - on the MSB
		newTruthTable[0]     = truthTable[((other.truthTable[0]) ? 2 : 0) | 0]; //00
		newTruthTable[1]     = truthTable[((other.truthTable[1]) ? 2 : 0) | 1]; //01
		newTruthTable[2]     = truthTable[((other.truthTable[2]) ? 2 : 0) | 0]; //10
		newTruthTable[3]     = truthTable[((other.truthTable[3]) ? 2 : 0) | 1]; //11

		return new PrimitiveOperator(newTruthTable);
	}