diff --git a/tests/MyGame/Example/StructOfStructsOfStructs.kt b/tests/MyGame/Example/StructOfStructsOfStructs.kt
new file mode 100644
index 0000000..955b600
--- /dev/null
+++ b/tests/MyGame/Example/StructOfStructsOfStructs.kt
@@ -0,0 +1,38 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+package MyGame.Example
+
+import java.nio.*
+import kotlin.math.sign
+import com.google.flatbuffers.*
+
+@Suppress("unused")
+class StructOfStructsOfStructs : Struct() {
+
+    fun __init(_i: Int, _bb: ByteBuffer)  {
+        __reset(_i, _bb)
+    }
+    fun __assign(_i: Int, _bb: ByteBuffer) : StructOfStructsOfStructs {
+        __init(_i, _bb)
+        return this
+    }
+    val a : MyGame.Example.StructOfStructs? get() = a(MyGame.Example.StructOfStructs())
+    fun a(obj: MyGame.Example.StructOfStructs) : MyGame.Example.StructOfStructs? = obj.__assign(bb_pos + 0, bb)
+    companion object {
+        fun createStructOfStructsOfStructs(builder: FlatBufferBuilder, a_a_id: UInt, a_a_distance: UInt, a_b_a: Short, a_b_b: Byte, a_c_id: UInt, a_c_distance: UInt) : Int {
+            builder.prep(4, 20)
+            builder.prep(4, 20)
+            builder.prep(4, 8)
+            builder.putInt(a_c_distance.toInt())
+            builder.putInt(a_c_id.toInt())
+            builder.prep(2, 4)
+            builder.pad(1)
+            builder.putByte(a_b_b)
+            builder.putShort(a_b_a)
+            builder.prep(4, 8)
+            builder.putInt(a_a_distance.toInt())
+            builder.putInt(a_a_id.toInt())
+            return builder.offset()
+        }
+    }
+}
