func (d *NullDec) Add(x, y *NullDec) *NullDec {
	if x.Null() || y.Null() {
		d.SetNull()
	} else {
		d.dec.Add(&x.dec, &y.dec)
		d.valid = true
	}
	return d
}
Add sets d to the sum x+y and returns d.
The scale of d is the larger of the scales of the two operands.
package decimal
import "database/sql/driver"
type NullDec struct {
	dec   Dec
	valid bool
}
func (d NullDec) Null() bool {
	return !d.valid
}
func (d *NullDec) SetNull() *NullDec {
	d.valid = false
	return d
}
func (d NullDec) String() string {
	if d.Null() {
		return ""
	}
	return d.dec.String()
}
func (d NullDec) Bytes() []byte {
	if d.Null() {
		return nil
	}
	return d.dec.Bytes()
}
func (d *NullDec) Scan(value interface{}) error {
	if value == nil {
		d.valid = false
		return nil
	}
	err := d.dec.Scan(value)
	if err != nil {
		return err
	}
	d.valid = true
	return nil
}
func (d NullDec) Value() (driver.Value, error) {
	if d.Null() {
		return nil, nil
	}
	return d.dec.Value()
}
func (d *NullDec) SetDec(x *Dec) *NullDec {
	d.valid = true
	d.dec.Set(x)
	return d
}
func (d *NullDec) Dec() *Dec {
	if d.Null() {
		return nil
	}
	return &d.dec
}
func (d *NullDec) Set(x *NullDec) *NullDec {
	d.valid = x.valid
	d.dec.Set(&x.dec)
	return d
}
func (d *NullDec) SetFloat64(f float64) error {
	err := d.dec.SetFloat64(f)
	if err != nil {
		return err
	}
	d.valid = true
	return nil
}
func (d *NullDec) SetInt64(i int64) *NullDec {
	d.valid = true
	d.dec.SetInt64(i)
	return d
}
func (d *NullDec) SetInt128(x *Int128) *NullDec {
	d.valid = true
	d.dec.SetInt128(x)
	return d
}
func (d *NullDec) SetString(s string) error {
	if s == "" {
		d.SetNull()
		return nil
	}
	err := d.dec.SetString(s)
	if err != nil {
		return err
	}
	d.valid = true
	return nil
}
func (d *NullDec) SetBytes(buf []byte) error {
	if buf == nil {
		d.SetNull()
		return nil
	}
	err := d.dec.SetBytes(buf)
	if err != nil {
		return err
	}
	d.valid = true
	return nil
}
func (d NullDec) Sign() int {
	if d.Null() {
		return 0
	}
	return d.dec.Sign()
}
func (x NullDec) Cmp(y *NullDec) int {
	if x.Null() || y.Null() {
		return 0
	}
	return x.dec.Cmp(&y.dec)
}
func (d *NullDec) Abs(x *NullDec) *NullDec {
	if x.Null() {
		d.SetNull()
	} else {
		d.dec.Abs(&x.dec)
		d.valid = true
	}
	return d
}
func (d *NullDec) Neg(x *NullDec) *NullDec {
	if x.Null() {
		d.SetNull()
	} else {
		d.dec.Neg(&x.dec)
		d.valid = true
	}
	return d
}