func (v Values) ComplexAt(i int) (c complex128, ok bool) {
	switch val := v[i]; val.Kind() {
	case reflect.Complex64, reflect.Complex128:
		c, ok = val.Complex(), true
	}
	return
}
ComplexAt returns i-th v's underlying value, as a complex128.
The ok return value assumes false if i-th v's Kind is not Complex64 or Complex128.
It panics if i is out of v's range.
package async
import (
	"fmt"
	"reflect"
	"strings"
)
type Values []reflect.Value
func (v Values) BoolAt(i int) (t, ok bool) {
	val := v[i]
	if ok = val.Kind() == reflect.Bool; !ok {
		return
	}
	t = val.Bool()
	return
}
func (v Values) BytesAt(i int) (b []byte, ok bool) {
	val := v[i]
	if ok = val.Kind() == reflect.Slice && val.Type().Elem().Kind() == reflect.Uint8; !ok {
		return
	}
	b = val.Bytes()
	return
}