Currently, arrays must be arrays of the exact type expected. While full coercion is performed on scalars, we skip it for arrays for performance reasons in tryMakeCompatible(..). I'm not sure this makes sense. We should have a slow path. It also gets tricky because interfaces like JSON don't allow native representations for big decimals.