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

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

		return new PrimitiveOperator(newTruthTable);
	}