with #18 call stack depth is reduced so that huge arrays can be deserialised into. This creates a slight inefficiency for small class deserialisation, where call stack depth is not a problem.
I more performant solution would be:
For non arrays, call stack depth should grow
For arrays (large ones): Call stack depth should reset to prevent "Maximum call stack size exceeded" errors (and overall improve performance of the application)
with #18 call stack depth is reduced so that huge arrays can be deserialised into. This creates a slight inefficiency for small class deserialisation, where call stack depth is not a problem.
I more performant solution would be: