// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library example;

// Copying these over from zircon/system/utest/fidl/transformer.test.fidl since
// there does not appear to be an easy way to include a non-public FIDL library
// in zircon from fuchsia.
union UnionSize36Alignment4 {
    1: uint8 unused1;           // avoid tag 0
    2: uint8 unused2;           // avoid tag 1
    3: uint8 unused3;           // avoid tag 2
    4: array<uint8>:32 variant; // 0x5e411019
};

struct Sandwich4 {
    uint32 before;
    UnionSize36Alignment4 the_union;
    uint32 after;
};
