private int ValueOf(Expression left, BinaryOperator op, Expression right)
        {
            int leftValue = this.ValueOf(left);
            int rightValue = this.ValueOf(right);

            return this.ValueOf(leftValue, op.Representation, rightValue);
        }
        public BinaryExpression(Expression left, BinaryOperator op, Expression right)
        {
            if (left == null)
                throw new ArgumentNullException(nameof(left));

            if (op == null)
                throw new ArgumentNullException(nameof(op));

            if (right == null)
                throw new ArgumentNullException(nameof(right));

            this.LeftSubexpression = left;
            this.Operator = op;
            this.RightSubexpression = right;
        }