Before:
root
 |-- a: struct (nullable = true)
 |    |-- b: string (nullable = true)
 |    |-- c: array (nullable = true)
 |    |    |-- element: struct (containsNull = true)
 |    |    |    |-- d: array (nullable = true)
 |    |    |    |    |-- element: string (containsNull = true)
 |    |    |    |-- e: string (nullable = true)
 |-- f: string (nullable = true)
 |-- g: array (nullable = true)
 |    |-- element: string (containsNull = true)
with explodeArrays set to false:
root                                                                            
 |-- f: string (nullable = true)
 |-- g: array (nullable = true)
 |    |-- element: string (containsNull = true)
 |-- a_b: string (nullable = true)
 |-- a_c_d: array (nullable = true)
 |    |-- element: array (containsNull = true)
 |    |    |-- element: string (containsNull = true)
 |-- a_c_e: array (nullable = true)
 |    |-- element: string (containsNull = true)
with explodeArrays set to true:
root
 |-- f: string (nullable = true)
 |-- g: string (nullable = true)
 |-- a_b: string (nullable = true)
 |-- a_c_d: string (nullable = true)
 |-- a_c_e: string (nullable = true)