// Copyright 2016 The Vanadium Authors. 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 was auto-generated by v.io/v23/vdl/vdltest/internal/vdltestgen
// Run the following to re-generate:
//   $ jiri run go generate v.io/v23/vdl/vdltest

package vdltest

// Types: 324
// ------------------------------
// |             |Total|Contains|
// ------------------------------
// |any          |    1|      44|
// |optional     |    8|      68|
// |bool         |    2|      60|
// |byte         |    2|      59|
// |uint16       |    2|      37|
// |uint32       |    2|      43|
// |uint64       |    2|      40|
// |int8         |    2|      38|
// |int16        |    2|      36|
// |int32        |    2|      36|
// |int64        |    2|      42|
// |float32      |    2|      40|
// |float64      |    2|      49|
// |string       |    2|      85|
// |enum         |    2|      69| [labels=3]
// |typeobject   |    1|      35|
// |array        |   32|      72| [len min=1 max=3]
// |list         |   64|      95| [unnamed=32]
// |set          |   38|      73| [unnamed=19]
// |map          |   38|      66| [unnamed=19]
// |struct       |   59|     148| [fields max=33]
// |union        |   57|      86| [fields min=1 max=33]
// ------------------------------
// |IsNamed      |  232|     293|
// |IsUnnamed    |   92|     231|
// |IsNumber     |   20|     168|
// |IsErrorType  |    1|      37|
// |IsBytes      |    6|      19|
// |IsPartOfCycle|    0|       0|
// |CanBeNamed   |  322|     322|
// |CanBeKey     |  105|     310|
// |CanBeNil     |    9|      75|
// |CanBeOptional|   59|     148|
// ------------------------------
// 
// Only named types appear below, by definition.

type (
	XBool bool
	XString string
	XByte byte
	XEnumAbc enum{A;B;C}
	XEnumBcd enum{B;C;D}
	XStructEmpty struct {
	}
	XNamedError struct {
		Id string
		Msg string
	}
	XUint16 uint16
	XUint32 uint32
	XUint64 uint64
	XInt8 int8
	XInt16 int16
	XInt32 int32
	XInt64 int64
	XFloat32 float32
	XFloat64 float64
	XArray3_Any [3]any
	XArray3_Bool [3]bool
	XArray3_XBool [3]XBool
	XArray1_String [1]string
	XArray3_XString [3]XString
	XArray2_TypeObject [2]typeobject
	XArray1_Byte [1]byte
	XArray2_XByte [2]XByte
	XArray2_XEnumAbc [2]XEnumAbc
	XArray2_XEnumBcd [2]XEnumBcd
	XArray1_XStructEmpty [1]XStructEmpty
	XArray1_XNamedError [1]XNamedError
	XArray2_Error [2]error
	XArray1_Uint32 [1]uint32
	XArray3_Uint64 [3]uint64
	XArray3_Int64 [3]int64
	XArray1_OptXStructEmpty [1]?XStructEmpty
	XArray3_OptXNamedError [3]?XNamedError
	XList_Any []any
	XList_Bool []bool
	XList_XBool []XBool
	XList_String []string
	XList_XString []XString
	XList_TypeObject []typeobject
	XList_Byte []byte
	XList_XByte []XByte
	XList_XEnumAbc []XEnumAbc
	XList_XEnumBcd []XEnumBcd
	XList_XStructEmpty []XStructEmpty
	XList_XNamedError []XNamedError
	XList_Error []error
	XList_XUint16 []XUint16
	XList_XFloat32 []XFloat32
	XList_XFloat64 []XFloat64
	XList_OptXStructEmpty []?XStructEmpty
	XList_OptXNamedError []?XNamedError
	XSet_Bool set[bool]
	XSet_XBool set[XBool]
	XSet_String set[string]
	XSet_XString set[XString]
	XSet_Byte set[byte]
	XSet_XByte set[XByte]
	XSet_XEnumAbc set[XEnumAbc]
	XSet_XEnumBcd set[XEnumBcd]
	XSet_XStructEmpty set[XStructEmpty]
	XSet_XNamedError set[XNamedError]
	XSet_Uint64 set[uint64]
	XSet_XUint64 set[XUint64]
	XSet_Float32 set[float32]
	XMap_Bool_Bool map[bool]bool
	XMap_XBool_XBool map[XBool]XBool
	XMap_String_String map[string]string
	XMap_XString_XString map[XString]XString
	XMap_Byte_Byte map[byte]byte
	XMap_XByte_XByte map[XByte]XByte
	XMap_XEnumAbc_XEnumAbc map[XEnumAbc]XEnumAbc
	XMap_XEnumBcd_XEnumBcd map[XEnumBcd]XEnumBcd
	XMap_XStructEmpty_XStructEmpty map[XStructEmpty]XStructEmpty
	XMap_XNamedError_XNamedError map[XNamedError]XNamedError
	XMap_XUint32_XUint32 map[XUint32]XUint32
	XMap_XInt32_XInt32 map[XInt32]XInt32
	XMap_Int64_Int64 map[int64]int64
	XStructDepth1_All struct {
		F0 any
		F1 bool
		F2 XBool
		F3 string
		F4 XString
		F5 typeobject
		F6 byte
		F7 XByte
		F8 XEnumAbc
		F9 XEnumBcd
		F10 XStructEmpty
		F11 XNamedError
		F12 error
		F13 uint16
		F14 XUint16
		F15 uint32
		F16 XUint32
		F17 uint64
		F18 XUint64
		F19 int8
		F20 XInt8
		F21 int16
		F22 XInt16
		F23 int32
		F24 XInt32
		F25 int64
		F26 XInt64
		F27 float32
		F28 XFloat32
		F29 float64
		F30 XFloat64
		F31 ?XStructEmpty
		F32 ?XNamedError
	}
	XStructDepth1_Any struct {
		F0 any
	}
	XStructDepth1_Bool struct {
		F1 bool
	}
	XStructDepth1_XBool struct {
		F2 XBool
	}
	XStructDepth1_String struct {
		F3 string
	}
	XStructDepth1_XString struct {
		F4 XString
	}
	XStructDepth1_TypeObject struct {
		F5 typeobject
	}
	XStructDepth1_Byte struct {
		F6 byte
	}
	XStructDepth1_XByte struct {
		F7 XByte
	}
	XStructDepth1_XEnumAbc struct {
		F8 XEnumAbc
	}
	XStructDepth1_XEnumBcd struct {
		F9 XEnumBcd
	}
	XStructDepth1_XStructEmpty struct {
		F10 XStructEmpty
	}
	XStructDepth1_XNamedError struct {
		F11 XNamedError
	}
	XStructDepth1_Error struct {
		F12 error
	}
	XStructDepth1_Uint16 struct {
		F13 uint16
	}
	XStructDepth1_XUint16 struct {
		F14 XUint16
	}
	XStructDepth1_Uint32 struct {
		F15 uint32
	}
	XStructDepth1_XUint32 struct {
		F16 XUint32
	}
	XStructDepth1_Uint64 struct {
		F17 uint64
	}
	XStructDepth1_XUint64 struct {
		F18 XUint64
	}
	XStructDepth1_Int8 struct {
		F19 int8
	}
	XStructDepth1_XInt8 struct {
		F20 XInt8
	}
	XStructDepth1_Int16 struct {
		F21 int16
	}
	XStructDepth1_XInt16 struct {
		F22 XInt16
	}
	XStructDepth1_Int32 struct {
		F23 int32
	}
	XStructDepth1_XInt32 struct {
		F24 XInt32
	}
	XStructDepth1_Int64 struct {
		F25 int64
	}
	XStructDepth1_XInt64 struct {
		F26 XInt64
	}
	XStructDepth1_Float32 struct {
		F27 float32
	}
	XStructDepth1_XFloat32 struct {
		F28 XFloat32
	}
	XStructDepth1_Float64 struct {
		F29 float64
	}
	XStructDepth1_XFloat64 struct {
		F30 XFloat64
	}
	XStructDepth1_OptXStructEmpty struct {
		F31 ?XStructEmpty
	}
	XStructDepth1_OptXNamedError struct {
		F32 ?XNamedError
	}
	XUnionDepth1_All union {
		F0 any
		F1 bool
		F2 XBool
		F3 string
		F4 XString
		F5 typeobject
		F6 byte
		F7 XByte
		F8 XEnumAbc
		F9 XEnumBcd
		F10 XStructEmpty
		F11 XNamedError
		F12 error
		F13 uint16
		F14 XUint16
		F15 uint32
		F16 XUint32
		F17 uint64
		F18 XUint64
		F19 int8
		F20 XInt8
		F21 int16
		F22 XInt16
		F23 int32
		F24 XInt32
		F25 int64
		F26 XInt64
		F27 float32
		F28 XFloat32
		F29 float64
		F30 XFloat64
		F31 ?XStructEmpty
		F32 ?XNamedError
	}
	XUnionDepth1_Any union {
		F0 any
	}
	XUnionDepth1_Bool union {
		F1 bool
	}
	XUnionDepth1_XBool union {
		F2 XBool
	}
	XUnionDepth1_String union {
		F3 string
	}
	XUnionDepth1_XString union {
		F4 XString
	}
	XUnionDepth1_TypeObject union {
		F5 typeobject
	}
	XUnionDepth1_Byte union {
		F6 byte
	}
	XUnionDepth1_XByte union {
		F7 XByte
	}
	XUnionDepth1_XEnumAbc union {
		F8 XEnumAbc
	}
	XUnionDepth1_XEnumBcd union {
		F9 XEnumBcd
	}
	XUnionDepth1_XStructEmpty union {
		F10 XStructEmpty
	}
	XUnionDepth1_XNamedError union {
		F11 XNamedError
	}
	XUnionDepth1_Error union {
		F12 error
	}
	XUnionDepth1_Uint16 union {
		F13 uint16
	}
	XUnionDepth1_XUint16 union {
		F14 XUint16
	}
	XUnionDepth1_Uint32 union {
		F15 uint32
	}
	XUnionDepth1_XUint32 union {
		F16 XUint32
	}
	XUnionDepth1_Uint64 union {
		F17 uint64
	}
	XUnionDepth1_XUint64 union {
		F18 XUint64
	}
	XUnionDepth1_Int8 union {
		F19 int8
	}
	XUnionDepth1_XInt8 union {
		F20 XInt8
	}
	XUnionDepth1_Int16 union {
		F21 int16
	}
	XUnionDepth1_XInt16 union {
		F22 XInt16
	}
	XUnionDepth1_Int32 union {
		F23 int32
	}
	XUnionDepth1_XInt32 union {
		F24 XInt32
	}
	XUnionDepth1_Int64 union {
		F25 int64
	}
	XUnionDepth1_XInt64 union {
		F26 XInt64
	}
	XUnionDepth1_Float32 union {
		F27 float32
	}
	XUnionDepth1_XFloat32 union {
		F28 XFloat32
	}
	XUnionDepth1_Float64 union {
		F29 float64
	}
	XUnionDepth1_XFloat64 union {
		F30 XFloat64
	}
	XUnionDepth1_OptXStructEmpty union {
		F31 ?XStructEmpty
	}
	XUnionDepth1_OptXNamedError union {
		F32 ?XNamedError
	}
	XArray1_XArray3_Int64 [1]XArray3_Int64
	XArray1_XList_Byte [1]XList_Byte
	XArray1_Set_XEnumBcd [1]set[XEnumBcd]
	XArray2_Map_Byte_Byte [2]map[byte]byte
	XArray2_XStructDepth1_All [2]XStructDepth1_All
	XArray3_XUnionDepth1_All [3]XUnionDepth1_All
	XArray3_OptXStructDepth1_XFloat32 [3]?XStructDepth1_XFloat32
	XList_XArray1_XStructEmpty []XArray1_XStructEmpty
	XList_List_XString [][]XString
	XList_Set_XBool []set[XBool]
	XList_XMap_Byte_Byte []XMap_Byte_Byte
	XList_XStructDepth1_All []XStructDepth1_All
	XList_XUnionDepth1_All []XUnionDepth1_All
	XList_OptXStructDepth1_XEnumBcd []?XStructDepth1_XEnumBcd
	XSet_XArray1_XStructEmpty set[XArray1_XStructEmpty]
	XSet_XStructDepth1_XFloat64 set[XStructDepth1_XFloat64]
	XSet_XUnionDepth1_XInt8 set[XUnionDepth1_XInt8]
	XMap_XArray3_XBool_XArray3_XBool map[XArray3_XBool]XArray3_XBool
	XMap_XStructDepth1_XBool_XStructDepth1_XBool map[XStructDepth1_XBool]XStructDepth1_XBool
	XMap_XUnionDepth1_XUint64_XUnionDepth1_XUint64 map[XUnionDepth1_XUint64]XUnionDepth1_XUint64
	XStructDepth2_All struct {
		F0 XArray2_TypeObject
		F1 XArray1_Uint32
		F2 []int16
		F3 XList_Any
		F4 set[float64]
		F5 XSet_XEnumBcd
		F6 map[byte]byte
		F7 map[uint32]uint32
		F8 XStructDepth1_All
		F9 XStructDepth1_Bool
		F10 XUnionDepth1_All
		F11 XUnionDepth1_Float64
		F12 ?XStructDepth1_XEnumBcd
		F13 ?XStructDepth1_XUint16
	}
	XStructDepth2_XArray2_TypeObject struct {
		F0 XArray2_TypeObject
	}
	XStructDepth2_XArray1_Uint32 struct {
		F1 XArray1_Uint32
	}
	XStructDepth2_List_Int16 struct {
		F2 []int16
	}
	XStructDepth2_XList_Any struct {
		F3 XList_Any
	}
	XStructDepth2_Set_Float64 struct {
		F4 set[float64]
	}
	XStructDepth2_XSet_XEnumBcd struct {
		F5 XSet_XEnumBcd
	}
	XStructDepth2_Map_Byte_Byte struct {
		F6 map[byte]byte
	}
	XStructDepth2_Map_Uint32_Uint32 struct {
		F7 map[uint32]uint32
	}
	XStructDepth2_XStructDepth1_All struct {
		F8 XStructDepth1_All
	}
	XStructDepth2_XStructDepth1_Bool struct {
		F9 XStructDepth1_Bool
	}
	XStructDepth2_XUnionDepth1_All struct {
		F10 XUnionDepth1_All
	}
	XStructDepth2_XUnionDepth1_Float64 struct {
		F11 XUnionDepth1_Float64
	}
	XStructDepth2_OptXStructDepth1_XEnumBcd struct {
		F12 ?XStructDepth1_XEnumBcd
	}
	XStructDepth2_OptXStructDepth1_XUint16 struct {
		F13 ?XStructDepth1_XUint16
	}
	XUnionDepth2_All union {
		F0 XArray1_String
		F1 XArray2_XByte
		F2 XList_XByte
		F3 XList_OptXNamedError
		F4 XSet_XBool
		F5 XSet_XNamedError
		F6 map[XBool]XBool
		F7 XMap_XBool_XBool
		F8 XStructDepth1_All
		F9 XStructDepth1_Int8
		F10 XUnionDepth1_All
		F11 XUnionDepth1_XUint32
		F12 ?XStructDepth1_XEnumBcd
		F13 ?XStructDepth1_XFloat32
	}
	XUnionDepth2_XArray1_String union {
		F0 XArray1_String
	}
	XUnionDepth2_XArray2_XByte union {
		F1 XArray2_XByte
	}
	XUnionDepth2_XList_XByte union {
		F2 XList_XByte
	}
	XUnionDepth2_XList_OptXNamedError union {
		F3 XList_OptXNamedError
	}
	XUnionDepth2_XSet_XBool union {
		F4 XSet_XBool
	}
	XUnionDepth2_XSet_XNamedError union {
		F5 XSet_XNamedError
	}
	XUnionDepth2_Map_XBool_XBool union {
		F6 map[XBool]XBool
	}
	XUnionDepth2_XMap_XBool_XBool union {
		F7 XMap_XBool_XBool
	}
	XUnionDepth2_XStructDepth1_All union {
		F8 XStructDepth1_All
	}
	XUnionDepth2_XStructDepth1_Int8 union {
		F9 XStructDepth1_Int8
	}
	XUnionDepth2_XUnionDepth1_All union {
		F10 XUnionDepth1_All
	}
	XUnionDepth2_XUnionDepth1_XUint32 union {
		F11 XUnionDepth1_XUint32
	}
	XUnionDepth2_OptXStructDepth1_XEnumBcd union {
		F12 ?XStructDepth1_XEnumBcd
	}
	XUnionDepth2_OptXStructDepth1_XFloat32 union {
		F13 ?XStructDepth1_XFloat32
	}
	XArray1_XArray1_XList_Byte [1]XArray1_XList_Byte
	XArray2_List_XMap_XByte_XByte [2][]XMap_XByte_XByte
	XArray2_Set_XUnionDepth1_XNamedError [2]set[XUnionDepth1_XNamedError]
	XArray3_Map_XUnionDepth1_Float64_XUnionDepth1_Float64 [3]map[XUnionDepth1_Float64]XUnionDepth1_Float64
	XArray2_XStructDepth2_All [2]XStructDepth2_All
	XArray2_XUnionDepth2_All [2]XUnionDepth2_All
	XArray3_OptXStructDepth2_Set_Float64 [3]?XStructDepth2_Set_Float64
	XList_XArray3_XUnionDepth1_All []XArray3_XUnionDepth1_All
	XList_List_XMap_XByte_XByte [][]XMap_XByte_XByte
	XList_XSet_XArray1_XStructEmpty []XSet_XArray1_XStructEmpty
	XList_XMap_XArray3_XBool_XArray3_XBool []XMap_XArray3_XBool_XArray3_XBool
	XList_XStructDepth2_All []XStructDepth2_All
	XList_XUnionDepth2_All []XUnionDepth2_All
	XList_OptXStructDepth2_Set_Float64 []?XStructDepth2_Set_Float64
	XSet_XArray1_XArray3_Int64 set[XArray1_XArray3_Int64]
	XSet_XStructDepth2_XStructDepth1_Bool set[XStructDepth2_XStructDepth1_Bool]
	XSet_XUnionDepth2_XArray1_String set[XUnionDepth2_XArray1_String]
	XMap_XArray1_XArray3_Int64_XArray1_XArray3_Int64 map[XArray1_XArray3_Int64]XArray1_XArray3_Int64
	XMap_XStructDepth2_XArray1_Uint32_XStructDepth2_XArray1_Uint32 map[XStructDepth2_XArray1_Uint32]XStructDepth2_XArray1_Uint32
	XMap_XUnionDepth2_XArray2_XByte_XUnionDepth2_XArray2_XByte map[XUnionDepth2_XArray2_XByte]XUnionDepth2_XArray2_XByte
	XStructDepth3_All struct {
		F0 XArray1_Set_XEnumBcd
		F1 []XUnionDepth1_All
		F2 XSet_XArray1_XStructEmpty
		F3 map[XUnionDepth1_Float64]XUnionDepth1_Float64
		F4 XStructDepth2_All
		F5 XUnionDepth2_All
		F6 ?XStructDepth2_Set_Float64
	}
	XStructDepth3_XArray1_Set_XEnumBcd struct {
		F0 XArray1_Set_XEnumBcd
	}
	XStructDepth3_List_XUnionDepth1_All struct {
		F1 []XUnionDepth1_All
	}
	XStructDepth3_XSet_XArray1_XStructEmpty struct {
		F2 XSet_XArray1_XStructEmpty
	}
	XStructDepth3_Map_XUnionDepth1_Float64_XUnionDepth1_Float64 struct {
		F3 map[XUnionDepth1_Float64]XUnionDepth1_Float64
	}
	XStructDepth3_XStructDepth2_All struct {
		F4 XStructDepth2_All
	}
	XStructDepth3_XUnionDepth2_All struct {
		F5 XUnionDepth2_All
	}
	XStructDepth3_OptXStructDepth2_Set_Float64 struct {
		F6 ?XStructDepth2_Set_Float64
	}
	XUnionDepth3_All union {
		F0 XArray3_OptXStructDepth1_XFloat32
		F1 []XList_Error
		F2 set[XStructDepth1_String]
		F3 XMap_XStructDepth1_XBool_XStructDepth1_XBool
		F4 XStructDepth2_All
		F5 XUnionDepth2_All
		F6 ?XStructDepth2_Set_Float64
	}
	XUnionDepth3_XArray3_OptXStructDepth1_XFloat32 union {
		F0 XArray3_OptXStructDepth1_XFloat32
	}
	XUnionDepth3_List_XList_Error union {
		F1 []XList_Error
	}
	XUnionDepth3_Set_XStructDepth1_String union {
		F2 set[XStructDepth1_String]
	}
	XUnionDepth3_XMap_XStructDepth1_XBool_XStructDepth1_XBool union {
		F3 XMap_XStructDepth1_XBool_XStructDepth1_XBool
	}
	XUnionDepth3_XStructDepth2_All union {
		F4 XStructDepth2_All
	}
	XUnionDepth3_XUnionDepth2_All union {
		F5 XUnionDepth2_All
	}
	XUnionDepth3_OptXStructDepth2_Set_Float64 union {
		F6 ?XStructDepth2_Set_Float64
	}
)
