public OperationExpression combineConstInput() {
		Operator newOp;

		if (left instanceof BooleanConstant) {
			if (((BooleanConstant) left).getConst()) { // true const
				newOp = ((PrimitiveOperator) op).oneLeft();
			} else {
				newOp = ((PrimitiveOperator) op).zeroLeft();
			}

			return new BinaryOpExpression(newOp, middle, right);
		}

		if (middle instanceof BooleanConstant) {
			if (((BooleanConstant) middle).getConst()) { // true const
				newOp = ((PrimitiveOperator) op).oneMid();
			} else {
				newOp = ((PrimitiveOperator) op).zeroMid();
			}

			return new BinaryOpExpression(newOp, left, right);
		}

		// right IS instanceof BooleanConstant
		if (((BooleanConstant) right).getConst()) { // true const
			newOp = ((PrimitiveOperator) op).oneRight();
		} else {
			newOp = ((PrimitiveOperator) op).zeroRight();
		}

		return new BinaryOpExpression(newOp, left, middle);
	}