// 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 (
	VBool bool
	VString string
	VByte byte
	VEnumAbc enum{A;B;C}
	VEnumBcd enum{B;C;D}
	VStructEmpty struct {
	}
	VNamedError struct {
		Id string
		Msg string
	}
	VUint16 uint16
	VUint32 uint32
	VUint64 uint64
	VInt8 int8
	VInt16 int16
	VInt32 int32
	VInt64 int64
	VFloat32 float32
	VFloat64 float64
	VArray3_Any [3]any
	VArray3_Bool [3]bool
	VArray3_VBool [3]VBool
	VArray1_String [1]string
	VArray3_VString [3]VString
	VArray2_TypeObject [2]typeobject
	VArray1_Byte [1]byte
	VArray2_VByte [2]VByte
	VArray2_VEnumAbc [2]VEnumAbc
	VArray2_VEnumBcd [2]VEnumBcd
	VArray1_VStructEmpty [1]VStructEmpty
	VArray1_VNamedError [1]VNamedError
	VArray2_Error [2]error
	VArray1_Uint32 [1]uint32
	VArray3_Uint64 [3]uint64
	VArray3_Int64 [3]int64
	VArray1_OptVStructEmpty [1]?VStructEmpty
	VArray3_OptVNamedError [3]?VNamedError
	VList_Any []any
	VList_Bool []bool
	VList_VBool []VBool
	VList_String []string
	VList_VString []VString
	VList_TypeObject []typeobject
	VList_Byte []byte
	VList_VByte []VByte
	VList_VEnumAbc []VEnumAbc
	VList_VEnumBcd []VEnumBcd
	VList_VStructEmpty []VStructEmpty
	VList_VNamedError []VNamedError
	VList_Error []error
	VList_VUint16 []VUint16
	VList_VFloat32 []VFloat32
	VList_VFloat64 []VFloat64
	VList_OptVStructEmpty []?VStructEmpty
	VList_OptVNamedError []?VNamedError
	VSet_Bool set[bool]
	VSet_VBool set[VBool]
	VSet_String set[string]
	VSet_VString set[VString]
	VSet_Byte set[byte]
	VSet_VByte set[VByte]
	VSet_VEnumAbc set[VEnumAbc]
	VSet_VEnumBcd set[VEnumBcd]
	VSet_VStructEmpty set[VStructEmpty]
	VSet_VNamedError set[VNamedError]
	VSet_Uint64 set[uint64]
	VSet_VUint64 set[VUint64]
	VSet_Float32 set[float32]
	VMap_Bool_Bool map[bool]bool
	VMap_VBool_VBool map[VBool]VBool
	VMap_String_String map[string]string
	VMap_VString_VString map[VString]VString
	VMap_Byte_Byte map[byte]byte
	VMap_VByte_VByte map[VByte]VByte
	VMap_VEnumAbc_VEnumAbc map[VEnumAbc]VEnumAbc
	VMap_VEnumBcd_VEnumBcd map[VEnumBcd]VEnumBcd
	VMap_VStructEmpty_VStructEmpty map[VStructEmpty]VStructEmpty
	VMap_VNamedError_VNamedError map[VNamedError]VNamedError
	VMap_VUint32_VUint32 map[VUint32]VUint32
	VMap_VInt32_VInt32 map[VInt32]VInt32
	VMap_Int64_Int64 map[int64]int64
	VStructDepth1_All struct {
		F0 any
		F1 bool
		F2 VBool
		F3 string
		F4 VString
		F5 typeobject
		F6 byte
		F7 VByte
		F8 VEnumAbc
		F9 VEnumBcd
		F10 VStructEmpty
		F11 VNamedError
		F12 error
		F13 uint16
		F14 VUint16
		F15 uint32
		F16 VUint32
		F17 uint64
		F18 VUint64
		F19 int8
		F20 VInt8
		F21 int16
		F22 VInt16
		F23 int32
		F24 VInt32
		F25 int64
		F26 VInt64
		F27 float32
		F28 VFloat32
		F29 float64
		F30 VFloat64
		F31 ?VStructEmpty
		F32 ?VNamedError
	}
	VStructDepth1_Any struct {
		F0 any
	}
	VStructDepth1_Bool struct {
		F1 bool
	}
	VStructDepth1_VBool struct {
		F2 VBool
	}
	VStructDepth1_String struct {
		F3 string
	}
	VStructDepth1_VString struct {
		F4 VString
	}
	VStructDepth1_TypeObject struct {
		F5 typeobject
	}
	VStructDepth1_Byte struct {
		F6 byte
	}
	VStructDepth1_VByte struct {
		F7 VByte
	}
	VStructDepth1_VEnumAbc struct {
		F8 VEnumAbc
	}
	VStructDepth1_VEnumBcd struct {
		F9 VEnumBcd
	}
	VStructDepth1_VStructEmpty struct {
		F10 VStructEmpty
	}
	VStructDepth1_VNamedError struct {
		F11 VNamedError
	}
	VStructDepth1_Error struct {
		F12 error
	}
	VStructDepth1_Uint16 struct {
		F13 uint16
	}
	VStructDepth1_VUint16 struct {
		F14 VUint16
	}
	VStructDepth1_Uint32 struct {
		F15 uint32
	}
	VStructDepth1_VUint32 struct {
		F16 VUint32
	}
	VStructDepth1_Uint64 struct {
		F17 uint64
	}
	VStructDepth1_VUint64 struct {
		F18 VUint64
	}
	VStructDepth1_Int8 struct {
		F19 int8
	}
	VStructDepth1_VInt8 struct {
		F20 VInt8
	}
	VStructDepth1_Int16 struct {
		F21 int16
	}
	VStructDepth1_VInt16 struct {
		F22 VInt16
	}
	VStructDepth1_Int32 struct {
		F23 int32
	}
	VStructDepth1_VInt32 struct {
		F24 VInt32
	}
	VStructDepth1_Int64 struct {
		F25 int64
	}
	VStructDepth1_VInt64 struct {
		F26 VInt64
	}
	VStructDepth1_Float32 struct {
		F27 float32
	}
	VStructDepth1_VFloat32 struct {
		F28 VFloat32
	}
	VStructDepth1_Float64 struct {
		F29 float64
	}
	VStructDepth1_VFloat64 struct {
		F30 VFloat64
	}
	VStructDepth1_OptVStructEmpty struct {
		F31 ?VStructEmpty
	}
	VStructDepth1_OptVNamedError struct {
		F32 ?VNamedError
	}
	VUnionDepth1_All union {
		F0 any
		F1 bool
		F2 VBool
		F3 string
		F4 VString
		F5 typeobject
		F6 byte
		F7 VByte
		F8 VEnumAbc
		F9 VEnumBcd
		F10 VStructEmpty
		F11 VNamedError
		F12 error
		F13 uint16
		F14 VUint16
		F15 uint32
		F16 VUint32
		F17 uint64
		F18 VUint64
		F19 int8
		F20 VInt8
		F21 int16
		F22 VInt16
		F23 int32
		F24 VInt32
		F25 int64
		F26 VInt64
		F27 float32
		F28 VFloat32
		F29 float64
		F30 VFloat64
		F31 ?VStructEmpty
		F32 ?VNamedError
	}
	VUnionDepth1_Any union {
		F0 any
	}
	VUnionDepth1_Bool union {
		F1 bool
	}
	VUnionDepth1_VBool union {
		F2 VBool
	}
	VUnionDepth1_String union {
		F3 string
	}
	VUnionDepth1_VString union {
		F4 VString
	}
	VUnionDepth1_TypeObject union {
		F5 typeobject
	}
	VUnionDepth1_Byte union {
		F6 byte
	}
	VUnionDepth1_VByte union {
		F7 VByte
	}
	VUnionDepth1_VEnumAbc union {
		F8 VEnumAbc
	}
	VUnionDepth1_VEnumBcd union {
		F9 VEnumBcd
	}
	VUnionDepth1_VStructEmpty union {
		F10 VStructEmpty
	}
	VUnionDepth1_VNamedError union {
		F11 VNamedError
	}
	VUnionDepth1_Error union {
		F12 error
	}
	VUnionDepth1_Uint16 union {
		F13 uint16
	}
	VUnionDepth1_VUint16 union {
		F14 VUint16
	}
	VUnionDepth1_Uint32 union {
		F15 uint32
	}
	VUnionDepth1_VUint32 union {
		F16 VUint32
	}
	VUnionDepth1_Uint64 union {
		F17 uint64
	}
	VUnionDepth1_VUint64 union {
		F18 VUint64
	}
	VUnionDepth1_Int8 union {
		F19 int8
	}
	VUnionDepth1_VInt8 union {
		F20 VInt8
	}
	VUnionDepth1_Int16 union {
		F21 int16
	}
	VUnionDepth1_VInt16 union {
		F22 VInt16
	}
	VUnionDepth1_Int32 union {
		F23 int32
	}
	VUnionDepth1_VInt32 union {
		F24 VInt32
	}
	VUnionDepth1_Int64 union {
		F25 int64
	}
	VUnionDepth1_VInt64 union {
		F26 VInt64
	}
	VUnionDepth1_Float32 union {
		F27 float32
	}
	VUnionDepth1_VFloat32 union {
		F28 VFloat32
	}
	VUnionDepth1_Float64 union {
		F29 float64
	}
	VUnionDepth1_VFloat64 union {
		F30 VFloat64
	}
	VUnionDepth1_OptVStructEmpty union {
		F31 ?VStructEmpty
	}
	VUnionDepth1_OptVNamedError union {
		F32 ?VNamedError
	}
	VArray1_VArray3_Int64 [1]VArray3_Int64
	VArray1_VList_Byte [1]VList_Byte
	VArray1_Set_VEnumBcd [1]set[VEnumBcd]
	VArray2_Map_Byte_Byte [2]map[byte]byte
	VArray2_VStructDepth1_All [2]VStructDepth1_All
	VArray3_VUnionDepth1_All [3]VUnionDepth1_All
	VArray3_OptVStructDepth1_VFloat32 [3]?VStructDepth1_VFloat32
	VList_VArray1_VStructEmpty []VArray1_VStructEmpty
	VList_List_VString [][]VString
	VList_Set_VBool []set[VBool]
	VList_VMap_Byte_Byte []VMap_Byte_Byte
	VList_VStructDepth1_All []VStructDepth1_All
	VList_VUnionDepth1_All []VUnionDepth1_All
	VList_OptVStructDepth1_VEnumBcd []?VStructDepth1_VEnumBcd
	VSet_VArray1_VStructEmpty set[VArray1_VStructEmpty]
	VSet_VStructDepth1_VFloat64 set[VStructDepth1_VFloat64]
	VSet_VUnionDepth1_VInt8 set[VUnionDepth1_VInt8]
	VMap_VArray3_VBool_VArray3_VBool map[VArray3_VBool]VArray3_VBool
	VMap_VStructDepth1_VBool_VStructDepth1_VBool map[VStructDepth1_VBool]VStructDepth1_VBool
	VMap_VUnionDepth1_VUint64_VUnionDepth1_VUint64 map[VUnionDepth1_VUint64]VUnionDepth1_VUint64
	VStructDepth2_All struct {
		F0 VArray2_TypeObject
		F1 VArray1_Uint32
		F2 []int16
		F3 VList_Any
		F4 set[float64]
		F5 VSet_VEnumBcd
		F6 map[byte]byte
		F7 map[uint32]uint32
		F8 VStructDepth1_All
		F9 VStructDepth1_Bool
		F10 VUnionDepth1_All
		F11 VUnionDepth1_Float64
		F12 ?VStructDepth1_VEnumBcd
		F13 ?VStructDepth1_VUint16
	}
	VStructDepth2_VArray2_TypeObject struct {
		F0 VArray2_TypeObject
	}
	VStructDepth2_VArray1_Uint32 struct {
		F1 VArray1_Uint32
	}
	VStructDepth2_List_Int16 struct {
		F2 []int16
	}
	VStructDepth2_VList_Any struct {
		F3 VList_Any
	}
	VStructDepth2_Set_Float64 struct {
		F4 set[float64]
	}
	VStructDepth2_VSet_VEnumBcd struct {
		F5 VSet_VEnumBcd
	}
	VStructDepth2_Map_Byte_Byte struct {
		F6 map[byte]byte
	}
	VStructDepth2_Map_Uint32_Uint32 struct {
		F7 map[uint32]uint32
	}
	VStructDepth2_VStructDepth1_All struct {
		F8 VStructDepth1_All
	}
	VStructDepth2_VStructDepth1_Bool struct {
		F9 VStructDepth1_Bool
	}
	VStructDepth2_VUnionDepth1_All struct {
		F10 VUnionDepth1_All
	}
	VStructDepth2_VUnionDepth1_Float64 struct {
		F11 VUnionDepth1_Float64
	}
	VStructDepth2_OptVStructDepth1_VEnumBcd struct {
		F12 ?VStructDepth1_VEnumBcd
	}
	VStructDepth2_OptVStructDepth1_VUint16 struct {
		F13 ?VStructDepth1_VUint16
	}
	VUnionDepth2_All union {
		F0 VArray1_String
		F1 VArray2_VByte
		F2 VList_VByte
		F3 VList_OptVNamedError
		F4 VSet_VBool
		F5 VSet_VNamedError
		F6 map[VBool]VBool
		F7 VMap_VBool_VBool
		F8 VStructDepth1_All
		F9 VStructDepth1_Int8
		F10 VUnionDepth1_All
		F11 VUnionDepth1_VUint32
		F12 ?VStructDepth1_VEnumBcd
		F13 ?VStructDepth1_VFloat32
	}
	VUnionDepth2_VArray1_String union {
		F0 VArray1_String
	}
	VUnionDepth2_VArray2_VByte union {
		F1 VArray2_VByte
	}
	VUnionDepth2_VList_VByte union {
		F2 VList_VByte
	}
	VUnionDepth2_VList_OptVNamedError union {
		F3 VList_OptVNamedError
	}
	VUnionDepth2_VSet_VBool union {
		F4 VSet_VBool
	}
	VUnionDepth2_VSet_VNamedError union {
		F5 VSet_VNamedError
	}
	VUnionDepth2_Map_VBool_VBool union {
		F6 map[VBool]VBool
	}
	VUnionDepth2_VMap_VBool_VBool union {
		F7 VMap_VBool_VBool
	}
	VUnionDepth2_VStructDepth1_All union {
		F8 VStructDepth1_All
	}
	VUnionDepth2_VStructDepth1_Int8 union {
		F9 VStructDepth1_Int8
	}
	VUnionDepth2_VUnionDepth1_All union {
		F10 VUnionDepth1_All
	}
	VUnionDepth2_VUnionDepth1_VUint32 union {
		F11 VUnionDepth1_VUint32
	}
	VUnionDepth2_OptVStructDepth1_VEnumBcd union {
		F12 ?VStructDepth1_VEnumBcd
	}
	VUnionDepth2_OptVStructDepth1_VFloat32 union {
		F13 ?VStructDepth1_VFloat32
	}
	VArray1_VArray1_VList_Byte [1]VArray1_VList_Byte
	VArray2_List_VMap_VByte_VByte [2][]VMap_VByte_VByte
	VArray2_Set_VUnionDepth1_VNamedError [2]set[VUnionDepth1_VNamedError]
	VArray3_Map_VUnionDepth1_Float64_VUnionDepth1_Float64 [3]map[VUnionDepth1_Float64]VUnionDepth1_Float64
	VArray2_VStructDepth2_All [2]VStructDepth2_All
	VArray2_VUnionDepth2_All [2]VUnionDepth2_All
	VArray3_OptVStructDepth2_Set_Float64 [3]?VStructDepth2_Set_Float64
	VList_VArray3_VUnionDepth1_All []VArray3_VUnionDepth1_All
	VList_List_VMap_VByte_VByte [][]VMap_VByte_VByte
	VList_VSet_VArray1_VStructEmpty []VSet_VArray1_VStructEmpty
	VList_VMap_VArray3_VBool_VArray3_VBool []VMap_VArray3_VBool_VArray3_VBool
	VList_VStructDepth2_All []VStructDepth2_All
	VList_VUnionDepth2_All []VUnionDepth2_All
	VList_OptVStructDepth2_Set_Float64 []?VStructDepth2_Set_Float64
	VSet_VArray1_VArray3_Int64 set[VArray1_VArray3_Int64]
	VSet_VStructDepth2_VStructDepth1_Bool set[VStructDepth2_VStructDepth1_Bool]
	VSet_VUnionDepth2_VArray1_String set[VUnionDepth2_VArray1_String]
	VMap_VArray1_VArray3_Int64_VArray1_VArray3_Int64 map[VArray1_VArray3_Int64]VArray1_VArray3_Int64
	VMap_VStructDepth2_VArray1_Uint32_VStructDepth2_VArray1_Uint32 map[VStructDepth2_VArray1_Uint32]VStructDepth2_VArray1_Uint32
	VMap_VUnionDepth2_VArray2_VByte_VUnionDepth2_VArray2_VByte map[VUnionDepth2_VArray2_VByte]VUnionDepth2_VArray2_VByte
	VStructDepth3_All struct {
		F0 VArray1_Set_VEnumBcd
		F1 []VUnionDepth1_All
		F2 VSet_VArray1_VStructEmpty
		F3 map[VUnionDepth1_Float64]VUnionDepth1_Float64
		F4 VStructDepth2_All
		F5 VUnionDepth2_All
		F6 ?VStructDepth2_Set_Float64
	}
	VStructDepth3_VArray1_Set_VEnumBcd struct {
		F0 VArray1_Set_VEnumBcd
	}
	VStructDepth3_List_VUnionDepth1_All struct {
		F1 []VUnionDepth1_All
	}
	VStructDepth3_VSet_VArray1_VStructEmpty struct {
		F2 VSet_VArray1_VStructEmpty
	}
	VStructDepth3_Map_VUnionDepth1_Float64_VUnionDepth1_Float64 struct {
		F3 map[VUnionDepth1_Float64]VUnionDepth1_Float64
	}
	VStructDepth3_VStructDepth2_All struct {
		F4 VStructDepth2_All
	}
	VStructDepth3_VUnionDepth2_All struct {
		F5 VUnionDepth2_All
	}
	VStructDepth3_OptVStructDepth2_Set_Float64 struct {
		F6 ?VStructDepth2_Set_Float64
	}
	VUnionDepth3_All union {
		F0 VArray3_OptVStructDepth1_VFloat32
		F1 []VList_Error
		F2 set[VStructDepth1_String]
		F3 VMap_VStructDepth1_VBool_VStructDepth1_VBool
		F4 VStructDepth2_All
		F5 VUnionDepth2_All
		F6 ?VStructDepth2_Set_Float64
	}
	VUnionDepth3_VArray3_OptVStructDepth1_VFloat32 union {
		F0 VArray3_OptVStructDepth1_VFloat32
	}
	VUnionDepth3_List_VList_Error union {
		F1 []VList_Error
	}
	VUnionDepth3_Set_VStructDepth1_String union {
		F2 set[VStructDepth1_String]
	}
	VUnionDepth3_VMap_VStructDepth1_VBool_VStructDepth1_VBool union {
		F3 VMap_VStructDepth1_VBool_VStructDepth1_VBool
	}
	VUnionDepth3_VStructDepth2_All union {
		F4 VStructDepth2_All
	}
	VUnionDepth3_VUnionDepth2_All union {
		F5 VUnionDepth2_All
	}
	VUnionDepth3_OptVStructDepth2_Set_Float64 union {
		F6 ?VStructDepth2_Set_Float64
	}
)
