public BoundUnaryExpression(UnaryOperatorExpressionSyntax syntax, bool hasValue, bool hasErrors, TokenKind kind, BaseBoundExpression expression)
            : base(hasValue, hasErrors)
        {
            Debug.Assert(!syntax.IsDefault(), "'syntax' must not be null.");
            Debug.Assert(!kind.IsDefault(), "'kind' must not be null.");
            Debug.Assert(!expression.IsDefault(), "'expression' must not be null.");

            this.Syntax     = syntax;
            this.Kind       = kind;
            this.Expression = expression;
        }
        public BoundBinaryExpression(BinaryOperatorExpressionSyntax syntax, bool hasValue, bool hasErrors, TokenKind kind, BaseBoundExpression left, BaseBoundExpression right)
            : base(hasValue, hasErrors)
        {
            Debug.Assert(!syntax.IsDefault(), "'syntax' must not be null.");
            Debug.Assert(!kind.IsDefault(), "'kind' must not be null.");
            Debug.Assert(!left.IsDefault(), "'left' must not be null.");
            Debug.Assert(!right.IsDefault(), "'right' must not be null.");

            this.Syntax = syntax;
            this.Kind   = kind;
            this.Left   = left;
            this.Right  = right;
        }