The element-wise array coercion introduced in caf3e65 ran a dynamic-cast
cascade per array element and was applied at every nesting level, making
large GeoJSON parses ~20x slower (50k-point FeatureCollection: ~1.0s vs
~0.05s before). On the main thread this blocked long enough for the iOS
watchdog to kill the app.
The _dictionaryUpCast trap is specific to dictionary casts; casting an
NSArray to [Sendable] only checks element conformance and is safe. Use a
single whole-array cast and keep element-wise recursion only for
dictionaries, where the trap lives.