add time and duration support
don't change the input value when bind returns false
track down the cases when reflect can panic
test:
- repeated bindings
- cases of allocations
- preallocated and unallocated list sizes