Suspicious: shouldn't this be two `else if` blocks, one for `reflect.Slice` and one for `reflect.Map` kinds?