Code generated by go run encgen.go -output enc_helpers.go; DO NOT EDIT.
Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encBoolSlice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]bool)
It is kind bool but not type bool. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != false || .sendZero {
			if  {
				.encodeUint(1)
			} else {
				.encodeUint(0)
			}
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encComplex64Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]complex64)
It is kind complex64 but not type complex64. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0+0i || .sendZero {
			 := floatBits(float64(real()))
			 := floatBits(float64(imag()))
			.encodeUint()
			.encodeUint()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encComplex128Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]complex128)
It is kind complex128 but not type complex128. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0+0i || .sendZero {
			 := floatBits(real())
			 := floatBits(imag())
			.encodeUint()
			.encodeUint()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encFloat32Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]float32)
It is kind float32 but not type float32. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			 := floatBits(float64())
			.encodeUint()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encFloat64Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]float64)
It is kind float64 but not type float64. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			 := floatBits()
			.encodeUint()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encIntSlice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]int)
It is kind int but not type int. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeInt(int64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encInt16Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]int16)
It is kind int16 but not type int16. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeInt(int64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encInt32Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]int32)
It is kind int32 but not type int32. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeInt(int64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encInt64Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]int64)
It is kind int64 but not type int64. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeInt()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encInt8Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]int8)
It is kind int8 but not type int8. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeInt(int64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encStringSlice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]string)
It is kind string but not type string. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != "" || .sendZero {
			.encodeUint(uint64(len()))
			.b.WriteString()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encUintSlice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]uint)
It is kind uint but not type uint. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeUint(uint64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encUint16Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]uint16)
It is kind uint16 but not type uint16. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeUint(uint64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encUint32Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]uint32)
It is kind uint32 but not type uint32. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeUint(uint64())
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encUint64Slice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]uint64)
It is kind uint64 but not type uint64. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeUint()
		}
	}
	return true
}

Can only slice if it is addressable.
	if !.CanAddr() {
		return false
	}
	return encUintptrSlice(, .Slice(0, .Len()))
}

func ( *encoderState,  reflect.Value) bool {
	,  := .Interface().([]uintptr)
It is kind uintptr but not type uintptr. TODO: We can handle this unsafely.
		return false
	}
	for ,  := range  {
		if  != 0 || .sendZero {
			.encodeUint(uint64())
		}
	}
	return true