// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// This file has been automatically generated. Please do not edit it manually.
// Generated by tests/ffi/generator/structs_by_value_tests_generator.dart.

import 'dart:ffi';

class Struct1ByteBool extends Struct {
  @Bool()
  external bool a0;

  String toString() => "(${a0})";
}

class Struct1ByteInt extends Struct {
  @Int8()
  external int a0;

  String toString() => "(${a0})";
}

class Struct3BytesHomogeneousUint8 extends Struct {
  @Uint8()
  external int a0;

  @Uint8()
  external int a1;

  @Uint8()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct3BytesInt2ByteAligned extends Struct {
  @Int16()
  external int a0;

  @Int8()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct4BytesHomogeneousInt16 extends Struct {
  @Int16()
  external int a0;

  @Int16()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct4BytesFloat extends Struct {
  @Float()
  external double a0;

  String toString() => "(${a0})";
}

class Struct7BytesHomogeneousUint8 extends Struct {
  @Uint8()
  external int a0;

  @Uint8()
  external int a1;

  @Uint8()
  external int a2;

  @Uint8()
  external int a3;

  @Uint8()
  external int a4;

  @Uint8()
  external int a5;

  @Uint8()
  external int a6;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3}, ${a4}, ${a5}, ${a6})";
}

class Struct7BytesInt4ByteAligned extends Struct {
  @Int32()
  external int a0;

  @Int16()
  external int a1;

  @Int8()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct8BytesInt extends Struct {
  @Int16()
  external int a0;

  @Int16()
  external int a1;

  @Int32()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct8BytesHomogeneousFloat extends Struct {
  @Float()
  external double a0;

  @Float()
  external double a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct8BytesFloat extends Struct {
  @Double()
  external double a0;

  String toString() => "(${a0})";
}

class Struct8BytesMixed extends Struct {
  @Float()
  external double a0;

  @Int16()
  external int a1;

  @Int16()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct9BytesHomogeneousUint8 extends Struct {
  @Uint8()
  external int a0;

  @Uint8()
  external int a1;

  @Uint8()
  external int a2;

  @Uint8()
  external int a3;

  @Uint8()
  external int a4;

  @Uint8()
  external int a5;

  @Uint8()
  external int a6;

  @Uint8()
  external int a7;

  @Uint8()
  external int a8;

  String toString() =>
      "(${a0}, ${a1}, ${a2}, ${a3}, ${a4}, ${a5}, ${a6}, ${a7}, ${a8})";
}

class Struct9BytesInt4Or8ByteAligned extends Struct {
  @Int64()
  external int a0;

  @Int8()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct10BytesHomogeneousBool extends Struct {
  @Bool()
  external bool a0;

  @Bool()
  external bool a1;

  @Bool()
  external bool a2;

  @Bool()
  external bool a3;

  @Bool()
  external bool a4;

  @Bool()
  external bool a5;

  @Bool()
  external bool a6;

  @Bool()
  external bool a7;

  @Bool()
  external bool a8;

  @Bool()
  external bool a9;

  String toString() =>
      "(${a0}, ${a1}, ${a2}, ${a3}, ${a4}, ${a5}, ${a6}, ${a7}, ${a8}, ${a9})";
}

class Struct12BytesHomogeneousFloat extends Struct {
  @Float()
  external double a0;

  @Float()
  external double a1;

  @Float()
  external double a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct16BytesHomogeneousFloat extends Struct {
  @Float()
  external double a0;

  @Float()
  external double a1;

  @Float()
  external double a2;

  @Float()
  external double a3;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3})";
}

class Struct16BytesMixed extends Struct {
  @Double()
  external double a0;

  @Int64()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct16BytesMixed2 extends Struct {
  @Float()
  external double a0;

  @Float()
  external double a1;

  @Float()
  external double a2;

  @Int32()
  external int a3;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3})";
}

class Struct17BytesInt extends Struct {
  @Int64()
  external int a0;

  @Int64()
  external int a1;

  @Int8()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct19BytesHomogeneousUint8 extends Struct {
  @Uint8()
  external int a0;

  @Uint8()
  external int a1;

  @Uint8()
  external int a2;

  @Uint8()
  external int a3;

  @Uint8()
  external int a4;

  @Uint8()
  external int a5;

  @Uint8()
  external int a6;

  @Uint8()
  external int a7;

  @Uint8()
  external int a8;

  @Uint8()
  external int a9;

  @Uint8()
  external int a10;

  @Uint8()
  external int a11;

  @Uint8()
  external int a12;

  @Uint8()
  external int a13;

  @Uint8()
  external int a14;

  @Uint8()
  external int a15;

  @Uint8()
  external int a16;

  @Uint8()
  external int a17;

  @Uint8()
  external int a18;

  String toString() =>
      "(${a0}, ${a1}, ${a2}, ${a3}, ${a4}, ${a5}, ${a6}, ${a7}, ${a8}, ${a9}, ${a10}, ${a11}, ${a12}, ${a13}, ${a14}, ${a15}, ${a16}, ${a17}, ${a18})";
}

class Struct20BytesHomogeneousInt32 extends Struct {
  @Int32()
  external int a0;

  @Int32()
  external int a1;

  @Int32()
  external int a2;

  @Int32()
  external int a3;

  @Int32()
  external int a4;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3}, ${a4})";
}

class Struct20BytesHomogeneousFloat extends Struct {
  @Float()
  external double a0;

  @Float()
  external double a1;

  @Float()
  external double a2;

  @Float()
  external double a3;

  @Float()
  external double a4;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3}, ${a4})";
}

class Struct32BytesHomogeneousDouble extends Struct {
  @Double()
  external double a0;

  @Double()
  external double a1;

  @Double()
  external double a2;

  @Double()
  external double a3;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3})";
}

class Struct40BytesHomogeneousDouble extends Struct {
  @Double()
  external double a0;

  @Double()
  external double a1;

  @Double()
  external double a2;

  @Double()
  external double a3;

  @Double()
  external double a4;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3}, ${a4})";
}

class Struct1024BytesHomogeneousUint64 extends Struct {
  @Uint64()
  external int a0;

  @Uint64()
  external int a1;

  @Uint64()
  external int a2;

  @Uint64()
  external int a3;

  @Uint64()
  external int a4;

  @Uint64()
  external int a5;

  @Uint64()
  external int a6;

  @Uint64()
  external int a7;

  @Uint64()
  external int a8;

  @Uint64()
  external int a9;

  @Uint64()
  external int a10;

  @Uint64()
  external int a11;

  @Uint64()
  external int a12;

  @Uint64()
  external int a13;

  @Uint64()
  external int a14;

  @Uint64()
  external int a15;

  @Uint64()
  external int a16;

  @Uint64()
  external int a17;

  @Uint64()
  external int a18;

  @Uint64()
  external int a19;

  @Uint64()
  external int a20;

  @Uint64()
  external int a21;

  @Uint64()
  external int a22;

  @Uint64()
  external int a23;

  @Uint64()
  external int a24;

  @Uint64()
  external int a25;

  @Uint64()
  external int a26;

  @Uint64()
  external int a27;

  @Uint64()
  external int a28;

  @Uint64()
  external int a29;

  @Uint64()
  external int a30;

  @Uint64()
  external int a31;

  @Uint64()
  external int a32;

  @Uint64()
  external int a33;

  @Uint64()
  external int a34;

  @Uint64()
  external int a35;

  @Uint64()
  external int a36;

  @Uint64()
  external int a37;

  @Uint64()
  external int a38;

  @Uint64()
  external int a39;

  @Uint64()
  external int a40;

  @Uint64()
  external int a41;

  @Uint64()
  external int a42;

  @Uint64()
  external int a43;

  @Uint64()
  external int a44;

  @Uint64()
  external int a45;

  @Uint64()
  external int a46;

  @Uint64()
  external int a47;

  @Uint64()
  external int a48;

  @Uint64()
  external int a49;

  @Uint64()
  external int a50;

  @Uint64()
  external int a51;

  @Uint64()
  external int a52;

  @Uint64()
  external int a53;

  @Uint64()
  external int a54;

  @Uint64()
  external int a55;

  @Uint64()
  external int a56;

  @Uint64()
  external int a57;

  @Uint64()
  external int a58;

  @Uint64()
  external int a59;

  @Uint64()
  external int a60;

  @Uint64()
  external int a61;

  @Uint64()
  external int a62;

  @Uint64()
  external int a63;

  @Uint64()
  external int a64;

  @Uint64()
  external int a65;

  @Uint64()
  external int a66;

  @Uint64()
  external int a67;

  @Uint64()
  external int a68;

  @Uint64()
  external int a69;

  @Uint64()
  external int a70;

  @Uint64()
  external int a71;

  @Uint64()
  external int a72;

  @Uint64()
  external int a73;

  @Uint64()
  external int a74;

  @Uint64()
  external int a75;

  @Uint64()
  external int a76;

  @Uint64()
  external int a77;

  @Uint64()
  external int a78;

  @Uint64()
  external int a79;

  @Uint64()
  external int a80;

  @Uint64()
  external int a81;

  @Uint64()
  external int a82;

  @Uint64()
  external int a83;

  @Uint64()
  external int a84;

  @Uint64()
  external int a85;

  @Uint64()
  external int a86;

  @Uint64()
  external int a87;

  @Uint64()
  external int a88;

  @Uint64()
  external int a89;

  @Uint64()
  external int a90;

  @Uint64()
  external int a91;

  @Uint64()
  external int a92;

  @Uint64()
  external int a93;

  @Uint64()
  external int a94;

  @Uint64()
  external int a95;

  @Uint64()
  external int a96;

  @Uint64()
  external int a97;

  @Uint64()
  external int a98;

  @Uint64()
  external int a99;

  @Uint64()
  external int a100;

  @Uint64()
  external int a101;

  @Uint64()
  external int a102;

  @Uint64()
  external int a103;

  @Uint64()
  external int a104;

  @Uint64()
  external int a105;

  @Uint64()
  external int a106;

  @Uint64()
  external int a107;

  @Uint64()
  external int a108;

  @Uint64()
  external int a109;

  @Uint64()
  external int a110;

  @Uint64()
  external int a111;

  @Uint64()
  external int a112;

  @Uint64()
  external int a113;

  @Uint64()
  external int a114;

  @Uint64()
  external int a115;

  @Uint64()
  external int a116;

  @Uint64()
  external int a117;

  @Uint64()
  external int a118;

  @Uint64()
  external int a119;

  @Uint64()
  external int a120;

  @Uint64()
  external int a121;

  @Uint64()
  external int a122;

  @Uint64()
  external int a123;

  @Uint64()
  external int a124;

  @Uint64()
  external int a125;

  @Uint64()
  external int a126;

  @Uint64()
  external int a127;

  String toString() =>
      "(${a0}, ${a1}, ${a2}, ${a3}, ${a4}, ${a5}, ${a6}, ${a7}, ${a8}, ${a9}, ${a10}, ${a11}, ${a12}, ${a13}, ${a14}, ${a15}, ${a16}, ${a17}, ${a18}, ${a19}, ${a20}, ${a21}, ${a22}, ${a23}, ${a24}, ${a25}, ${a26}, ${a27}, ${a28}, ${a29}, ${a30}, ${a31}, ${a32}, ${a33}, ${a34}, ${a35}, ${a36}, ${a37}, ${a38}, ${a39}, ${a40}, ${a41}, ${a42}, ${a43}, ${a44}, ${a45}, ${a46}, ${a47}, ${a48}, ${a49}, ${a50}, ${a51}, ${a52}, ${a53}, ${a54}, ${a55}, ${a56}, ${a57}, ${a58}, ${a59}, ${a60}, ${a61}, ${a62}, ${a63}, ${a64}, ${a65}, ${a66}, ${a67}, ${a68}, ${a69}, ${a70}, ${a71}, ${a72}, ${a73}, ${a74}, ${a75}, ${a76}, ${a77}, ${a78}, ${a79}, ${a80}, ${a81}, ${a82}, ${a83}, ${a84}, ${a85}, ${a86}, ${a87}, ${a88}, ${a89}, ${a90}, ${a91}, ${a92}, ${a93}, ${a94}, ${a95}, ${a96}, ${a97}, ${a98}, ${a99}, ${a100}, ${a101}, ${a102}, ${a103}, ${a104}, ${a105}, ${a106}, ${a107}, ${a108}, ${a109}, ${a110}, ${a111}, ${a112}, ${a113}, ${a114}, ${a115}, ${a116}, ${a117}, ${a118}, ${a119}, ${a120}, ${a121}, ${a122}, ${a123}, ${a124}, ${a125}, ${a126}, ${a127})";
}

class StructAlignmentInt16 extends Struct {
  @Int8()
  external int a0;

  @Int16()
  external int a1;

  @Int8()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class StructAlignmentInt32 extends Struct {
  @Int8()
  external int a0;

  @Int32()
  external int a1;

  @Int8()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class StructAlignmentInt64 extends Struct {
  @Int8()
  external int a0;

  @Int64()
  external int a1;

  @Int8()
  external int a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class Struct8BytesNestedInt extends Struct {
  external Struct4BytesHomogeneousInt16 a0;

  external Struct4BytesHomogeneousInt16 a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct8BytesNestedFloat extends Struct {
  external Struct4BytesFloat a0;

  external Struct4BytesFloat a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct8BytesNestedFloat2 extends Struct {
  external Struct4BytesFloat a0;

  @Float()
  external double a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct8BytesNestedMixed extends Struct {
  external Struct4BytesHomogeneousInt16 a0;

  external Struct4BytesFloat a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct16BytesNestedInt extends Struct {
  external Struct8BytesNestedInt a0;

  external Struct8BytesNestedInt a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct32BytesNestedInt extends Struct {
  external Struct16BytesNestedInt a0;

  external Struct16BytesNestedInt a1;

  String toString() => "(${a0}, ${a1})";
}

class StructNestedIntStructAlignmentInt16 extends Struct {
  external StructAlignmentInt16 a0;

  external StructAlignmentInt16 a1;

  String toString() => "(${a0}, ${a1})";
}

class StructNestedIntStructAlignmentInt32 extends Struct {
  external StructAlignmentInt32 a0;

  external StructAlignmentInt32 a1;

  String toString() => "(${a0}, ${a1})";
}

class StructNestedIntStructAlignmentInt64 extends Struct {
  external StructAlignmentInt64 a0;

  external StructAlignmentInt64 a1;

  String toString() => "(${a0}, ${a1})";
}

class StructNestedIrregularBig extends Struct {
  @Uint16()
  external int a0;

  external Struct8BytesNestedMixed a1;

  @Uint16()
  external int a2;

  external Struct8BytesNestedFloat2 a3;

  @Uint16()
  external int a4;

  external Struct8BytesNestedFloat a5;

  @Uint16()
  external int a6;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3}, ${a4}, ${a5}, ${a6})";
}

class StructNestedIrregularBigger extends Struct {
  external StructNestedIrregularBig a0;

  external Struct8BytesNestedMixed a1;

  @Float()
  external double a2;

  @Double()
  external double a3;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3})";
}

class StructNestedIrregularEvenBigger extends Struct {
  @Uint64()
  external int a0;

  external StructNestedIrregularBigger a1;

  external StructNestedIrregularBigger a2;

  @Double()
  external double a3;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3})";
}

class Struct8BytesInlineArrayInt extends Struct {
  @Array(8)
  external Array<Uint8> a0;

  String toString() => "(${[for (var i0 = 0; i0 < 8; i0 += 1) a0[i0]]})";
}

class Struct10BytesInlineArrayBool extends Struct {
  @Array(10)
  external Array<Bool> a0;

  String toString() => "(${[for (var i0 = 0; i0 < 10; i0 += 1) a0[i0]]})";
}

class StructInlineArrayIrregular extends Struct {
  @Array(2)
  external Array<Struct3BytesInt2ByteAligned> a0;

  @Uint8()
  external int a1;

  String toString() => "(${[for (var i0 = 0; i0 < 2; i0 += 1) a0[i0]]}, ${a1})";
}

class StructInlineArray100Bytes extends Struct {
  @Array(100)
  external Array<Uint8> a0;

  String toString() => "(${[for (var i0 = 0; i0 < 100; i0 += 1) a0[i0]]})";
}

class StructInlineArrayBig extends Struct {
  @Uint32()
  external int a0;

  @Uint32()
  external int a1;

  @Array(4000)
  external Array<Uint8> a2;

  String toString() =>
      "(${a0}, ${a1}, ${[for (var i0 = 0; i0 < 4000; i0 += 1) a2[i0]]})";
}

class StructStruct16BytesHomogeneousFloat2 extends Struct {
  external Struct4BytesFloat a0;

  @Array(2)
  external Array<Struct4BytesFloat> a1;

  @Float()
  external double a2;

  String toString() =>
      "(${a0}, ${[for (var i0 = 0; i0 < 2; i0 += 1) a1[i0]]}, ${a2})";
}

class StructStruct32BytesHomogeneousDouble2 extends Struct {
  external Struct8BytesFloat a0;

  @Array(2)
  external Array<Struct8BytesFloat> a1;

  @Double()
  external double a2;

  String toString() =>
      "(${a0}, ${[for (var i0 = 0; i0 < 2; i0 += 1) a1[i0]]}, ${a2})";
}

class StructStruct16BytesMixed3 extends Struct {
  external Struct4BytesFloat a0;

  @Array(1)
  external Array<Struct8BytesMixed> a1;

  @Array(2)
  external Array<Int16> a2;

  String toString() => "(${a0}, ${[
        for (var i0 = 0; i0 < 1; i0 += 1) a1[i0]
      ]}, ${[for (var i0 = 0; i0 < 2; i0 += 1) a2[i0]]})";
}

class Struct8BytesInlineArrayMultiDimensionalInt extends Struct {
  @Array(2, 2, 2)
  external Array<Array<Array<Uint8>>> a0;

  String toString() => "(${[
        for (var i0 = 0; i0 < 2; i0 += 1)
          [
            for (var i1 = 0; i1 < 2; i1 += 1)
              [for (var i2 = 0; i2 < 2; i2 += 1) a0[i0][i1][i2]]
          ]
      ]})";
}

class Struct32BytesInlineArrayMultiDimensionalInt extends Struct {
  @Array(2, 2, 2, 2, 2)
  external Array<Array<Array<Array<Array<Uint8>>>>> a0;

  String toString() => "(${[
        for (var i0 = 0; i0 < 2; i0 += 1)
          [
            for (var i1 = 0; i1 < 2; i1 += 1)
              [
                for (var i2 = 0; i2 < 2; i2 += 1)
                  [
                    for (var i3 = 0; i3 < 2; i3 += 1)
                      [for (var i4 = 0; i4 < 2; i4 += 1) a0[i0][i1][i2][i3][i4]]
                  ]
              ]
          ]
      ]})";
}

class Struct64BytesInlineArrayMultiDimensionalInt extends Struct {
  @Array.multi([2, 2, 2, 2, 2, 2])
  external Array<Array<Array<Array<Array<Array<Uint8>>>>>> a0;

  String toString() => "(${[
        for (var i0 = 0; i0 < 2; i0 += 1)
          [
            for (var i1 = 0; i1 < 2; i1 += 1)
              [
                for (var i2 = 0; i2 < 2; i2 += 1)
                  [
                    for (var i3 = 0; i3 < 2; i3 += 1)
                      [
                        for (var i4 = 0; i4 < 2; i4 += 1)
                          [
                            for (var i5 = 0; i5 < 2; i5 += 1)
                              a0[i0][i1][i2][i3][i4][i5]
                          ]
                      ]
                  ]
              ]
          ]
      ]})";
}

class Struct4BytesInlineArrayMultiDimensionalInt extends Struct {
  @Array(2, 2)
  external Array<Array<Struct1ByteInt>> a0;

  String toString() => "(${[
        for (var i0 = 0; i0 < 2; i0 += 1)
          [for (var i1 = 0; i1 < 2; i1 += 1) a0[i0][i1]]
      ]})";
}

@Packed(1)
class Struct3BytesPackedInt extends Struct {
  @Int8()
  external int a0;

  @Int16()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

@Packed(1)
class Struct3BytesPackedIntMembersAligned extends Struct {
  @Int8()
  external int a0;

  @Int16()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

@Packed(1)
class Struct5BytesPackedMixed extends Struct {
  @Float()
  external double a0;

  @Uint8()
  external int a1;

  String toString() => "(${a0}, ${a1})";
}

class StructNestedAlignmentStruct5BytesPackedMixed extends Struct {
  @Uint8()
  external int a0;

  external Struct5BytesPackedMixed a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct6BytesInlineArrayInt extends Struct {
  @Array(2)
  external Array<Struct3BytesPackedIntMembersAligned> a0;

  String toString() => "(${[for (var i0 = 0; i0 < 2; i0 += 1) a0[i0]]})";
}

@Packed(1)
class Struct8BytesPackedInt extends Struct {
  @Uint8()
  external int a0;

  @Uint32()
  external int a1;

  @Uint8()
  external int a2;

  @Uint8()
  external int a3;

  @Uint8()
  external int a4;

  String toString() => "(${a0}, ${a1}, ${a2}, ${a3}, ${a4})";
}

@Packed(1)
class Struct9BytesPackedMixed extends Struct {
  @Uint8()
  external int a0;

  @Double()
  external double a1;

  String toString() => "(${a0}, ${a1})";
}

class Struct15BytesInlineArrayMixed extends Struct {
  @Array(3)
  external Array<Struct5BytesPackedMixed> a0;

  String toString() => "(${[for (var i0 = 0; i0 < 3; i0 += 1) a0[i0]]})";
}

class Union4BytesMixed extends Union {
  @Uint32()
  external int a0;

  @Float()
  external double a1;

  String toString() => "(${a0}, ${a1})";
}

class Union8BytesNestedFloat extends Union {
  @Double()
  external double a0;

  external Struct8BytesHomogeneousFloat a1;

  String toString() => "(${a0}, ${a1})";
}

class Union9BytesNestedInt extends Union {
  external Struct8BytesInt a0;

  external Struct9BytesHomogeneousUint8 a1;

  String toString() => "(${a0}, ${a1})";
}

class Union16BytesNestedInlineArrayFloat extends Union {
  @Array(4)
  external Array<Float> a0;

  external Struct16BytesHomogeneousFloat a1;

  String toString() => "(${[for (var i0 = 0; i0 < 4; i0 += 1) a0[i0]]}, ${a1})";
}

class Union16BytesNestedFloat extends Union {
  external Struct8BytesHomogeneousFloat a0;

  external Struct12BytesHomogeneousFloat a1;

  external Struct16BytesHomogeneousFloat a2;

  String toString() => "(${a0}, ${a1}, ${a2})";
}

class StructInlineArrayInt extends Struct {
  @Array(10)
  external Array<WChar> a0;

  String toString() => "(${[for (var i0 = 0; i0 < 10; i0 += 1) a0[i0]]})";
}
