Update vdltest to include cyclic and native types.

The strategy for both of these is to include them in
vtype_manual.vdl and xtype_manual.vdl, which hold manually
defined types.  These are manually-defined because they are hard
to generate automatically, and easier to debug when defined
manually.  The test entries are still automatically-generated
based on the manual type definitions.

Also fixed some bugs wrt native types, exposed by the new tests.

MultiPart: 1/3
Change-Id: I81c7e7e5c969debf60ff4f4515d45b4d43ec727d
diff --git a/services/application/application.vdl.go b/services/application/application.vdl.go
index cee9d52..7067748 100644
--- a/services/application/application.vdl.go
+++ b/services/application/application.vdl.go
@@ -829,7 +829,7 @@
 	if x.Restarts != 0 {
 		return false
 	}
-	if x.RestartTimeWindow != time.Duration(0) {
+	if x.RestartTimeWindow != 0 {
 		return false
 	}
 	return true
@@ -911,7 +911,7 @@
 			return err
 		}
 	}
-	if x.RestartTimeWindow != time.Duration(0) {
+	if x.RestartTimeWindow != 0 {
 		if err := enc.NextField("RestartTimeWindow"); err != nil {
 			return err
 		}
diff --git a/services/syncbase/syncbase.vdl.go b/services/syncbase/syncbase.vdl.go
index 2b48cb6..c3ec1bf 100644
--- a/services/syncbase/syncbase.vdl.go
+++ b/services/syncbase/syncbase.vdl.go
@@ -462,7 +462,7 @@
 	if !x.Now.IsZero() {
 		return false
 	}
-	if x.ElapsedTime != time.Duration(0) {
+	if x.ElapsedTime != 0 {
 		return false
 	}
 	if x.DoNtpUpdate {
@@ -504,7 +504,7 @@
 			return err
 		}
 	}
-	if x.ElapsedTime != time.Duration(0) {
+	if x.ElapsedTime != 0 {
 		if err := enc.NextField("ElapsedTime"); err != nil {
 			return err
 		}
diff --git a/vdl/vdltest/.api b/vdl/vdltest/.api
index 36e31f1..5bfc25c 100644
--- a/vdl/vdltest/.api
+++ b/vdl/vdltest/.api
@@ -85,8 +85,54 @@
 pkg vdltest, func VDLReadVUnionDepth3_VMap_VStructDepth1_VBool_VStructDepth1_VBool(vdl.Decoder, *VUnionDepth3_VMap_VStructDepth1_VBool_VStructDepth1_VBool) error
 pkg vdltest, func VDLReadVUnionDepth3_VStructDepth2_All(vdl.Decoder, *VUnionDepth3_VStructDepth2_All) error
 pkg vdltest, func VDLReadVUnionDepth3_VUnionDepth2_All(vdl.Decoder, *VUnionDepth3_VUnionDepth2_All) error
+pkg vdltest, func VDLReadVWireUnionNArray(vdl.Decoder, *VWireUnionNArray) error
+pkg vdltest, func VDLReadVWireUnionNIface(vdl.Decoder, *VWireUnionNIface) error
+pkg vdltest, func VDLReadVWireUnionNPointer(vdl.Decoder, *VWireUnionNPointer) error
+pkg vdltest, func VDLReadVWireUnionNSlice(vdl.Decoder, *VWireUnionNSlice) error
+pkg vdltest, func VDLReadVWireUnionNString(vdl.Decoder, *VWireUnionNString) error
+pkg vdltest, func VDLReadVWireUnionNStruct(vdl.Decoder, *VWireUnionNStruct) error
 pkg vdltest, func VEnumAbcFromString(string) (VEnumAbc, error)
 pkg vdltest, func VEnumBcdFromString(string) (VEnumBcd, error)
+pkg vdltest, func VWireArrayNStringFromNative(*VWireArrayNString, VNativeWireArrayNString) error
+pkg vdltest, func VWireArrayNStringToNative(VWireArrayNString, *VNativeWireArrayNString) error
+pkg vdltest, func VWireArrayNStructFromNative(*VWireArrayNStruct, VNativeWireArrayNStruct) error
+pkg vdltest, func VWireArrayNStructToNative(VWireArrayNStruct, *VNativeWireArrayNStruct) error
+pkg vdltest, func VWireBoolNBoolFromNative(*VWireBoolNBool, VNativeWireBoolNBool) error
+pkg vdltest, func VWireBoolNBoolToNative(VWireBoolNBool, *VNativeWireBoolNBool) error
+pkg vdltest, func VWireBoolNStringFromNative(*VWireBoolNString, VNativeWireBoolNString) error
+pkg vdltest, func VWireBoolNStringToNative(VWireBoolNString, *VNativeWireBoolNString) error
+pkg vdltest, func VWireBoolNStructFromNative(*VWireBoolNStruct, VNativeWireBoolNStruct) error
+pkg vdltest, func VWireBoolNStructToNative(VWireBoolNStruct, *VNativeWireBoolNStruct) error
+pkg vdltest, func VWireIntNIntFromNative(*VWireIntNInt, VNativeWireIntNInt) error
+pkg vdltest, func VWireIntNIntToNative(VWireIntNInt, *VNativeWireIntNInt) error
+pkg vdltest, func VWireIntNStringFromNative(*VWireIntNString, VNativeWireIntNString) error
+pkg vdltest, func VWireIntNStringToNative(VWireIntNString, *VNativeWireIntNString) error
+pkg vdltest, func VWireIntNStructFromNative(*VWireIntNStruct, VNativeWireIntNStruct) error
+pkg vdltest, func VWireIntNStructToNative(VWireIntNStruct, *VNativeWireIntNStruct) error
+pkg vdltest, func VWireListNStringFromNative(*VWireListNString, VNativeWireListNString) error
+pkg vdltest, func VWireListNStringToNative(VWireListNString, *VNativeWireListNString) error
+pkg vdltest, func VWireListNStructFromNative(*VWireListNStruct, VNativeWireListNStruct) error
+pkg vdltest, func VWireListNStructToNative(VWireListNStruct, *VNativeWireListNStruct) error
+pkg vdltest, func VWireStringNStringFromNative(*VWireStringNString, VNativeWireStringNString) error
+pkg vdltest, func VWireStringNStringToNative(VWireStringNString, *VNativeWireStringNString) error
+pkg vdltest, func VWireStringNStructFromNative(*VWireStringNStruct, VNativeWireStringNStruct) error
+pkg vdltest, func VWireStringNStructToNative(VWireStringNStruct, *VNativeWireStringNStruct) error
+pkg vdltest, func VWireStructNArrayFromNative(*VWireStructNArray, VNativeWireStructNArray) error
+pkg vdltest, func VWireStructNArrayToNative(VWireStructNArray, *VNativeWireStructNArray) error
+pkg vdltest, func VWireStructNSliceFromNative(*VWireStructNSlice, VNativeWireStructNSlice) error
+pkg vdltest, func VWireStructNSliceToNative(VWireStructNSlice, *VNativeWireStructNSlice) error
+pkg vdltest, func VWireStructNStringFromNative(*VWireStructNString, VNativeWireStructNString) error
+pkg vdltest, func VWireStructNStringToNative(VWireStructNString, *VNativeWireStructNString) error
+pkg vdltest, func VWireStructNStructFromNative(*VWireStructNStruct, VNativeWireStructNStruct) error
+pkg vdltest, func VWireStructNStructToNative(VWireStructNStruct, *VNativeWireStructNStruct) error
+pkg vdltest, func VWireUnionNArrayFromNative(*VWireUnionNArray, VNativeWireUnionNArray) error
+pkg vdltest, func VWireUnionNArrayToNative(VWireUnionNArray, *VNativeWireUnionNArray) error
+pkg vdltest, func VWireUnionNSliceFromNative(*VWireUnionNSlice, VNativeWireUnionNSlice) error
+pkg vdltest, func VWireUnionNSliceToNative(VWireUnionNSlice, *VNativeWireUnionNSlice) error
+pkg vdltest, func VWireUnionNStringFromNative(*VWireUnionNString, VNativeWireUnionNString) error
+pkg vdltest, func VWireUnionNStringToNative(VWireUnionNString, *VNativeWireUnionNString) error
+pkg vdltest, func VWireUnionNStructFromNative(*VWireUnionNStruct, VNativeWireUnionNStruct) error
+pkg vdltest, func VWireUnionNStructToNative(VWireUnionNStruct, *VNativeWireUnionNStruct) error
 pkg vdltest, func XEnumAbcFromString(string) (XEnumAbc, error)
 pkg vdltest, func XEnumBcdFromString(string) (XEnumBcd, error)
 pkg vdltest, method (*EntryGenerator) GenAllFail([]*vdl.Type) []EntryValue
@@ -191,7 +237,10 @@
 pkg vdltest, method (*VMap_VUint32_VUint32) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VMap_VUnionDepth1_VUint64_VUnionDepth1_VUint64) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VMap_VUnionDepth2_VArray2_VByte_VUnionDepth2_VArray2_VByte) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VMutualCycleA) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VMutualCycleB) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VNamedError) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VSelfCycle) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VSet_Bool) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VSet_Byte) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VSet_Float32) VDLRead(vdl.Decoder) error
@@ -273,6 +322,25 @@
 pkg vdltest, method (*VUint16) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VUint32) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*VUint64) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireAll) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireArrayNString) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireArrayNStruct) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireBoolNBool) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireBoolNString) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireBoolNStruct) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireIntNInt) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireIntNString) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireIntNStruct) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireListNString) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireListNStruct) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStringNString) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStringNStruct) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStructNArray) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStructNIface) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStructNPointer) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStructNSlice) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStructNString) VDLRead(vdl.Decoder) error
+pkg vdltest, method (*VWireStructNStruct) VDLRead(vdl.Decoder) error
 pkg vdltest, method (*ValueGenerator) Gen(*vdl.Type, GenMode) *vdl.Value
 pkg vdltest, method (*ValueGenerator) RandSeed(int64)
 pkg vdltest, method (*XEnumAbc) Set(string) error
@@ -469,8 +537,16 @@
 pkg vdltest, method (VMap_VUnionDepth1_VUint64_VUnionDepth1_VUint64) VDLWrite(vdl.Encoder) error
 pkg vdltest, method (VMap_VUnionDepth2_VArray2_VByte_VUnionDepth2_VArray2_VByte) VDLIsZero() bool
 pkg vdltest, method (VMap_VUnionDepth2_VArray2_VByte_VUnionDepth2_VArray2_VByte) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VMutualCycleA) VDLIsZero() bool
+pkg vdltest, method (VMutualCycleA) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VMutualCycleB) VDLIsZero() bool
+pkg vdltest, method (VMutualCycleB) VDLWrite(vdl.Encoder) error
 pkg vdltest, method (VNamedError) VDLIsZero() bool
 pkg vdltest, method (VNamedError) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VNativeWireStructNSlice) IsZero() bool
+pkg vdltest, method (VNativeWireUnionNSlice) IsZero() bool
+pkg vdltest, method (VSelfCycle) VDLIsZero() bool
+pkg vdltest, method (VSelfCycle) VDLWrite(vdl.Encoder) error
 pkg vdltest, method (VSet_Bool) VDLIsZero() bool
 pkg vdltest, method (VSet_Bool) VDLWrite(vdl.Encoder) error
 pkg vdltest, method (VSet_Byte) VDLIsZero() bool
@@ -1173,6 +1249,74 @@
 pkg vdltest, method (VUnionDepth3_VUnionDepth2_AllF5) Name() string
 pkg vdltest, method (VUnionDepth3_VUnionDepth2_AllF5) VDLIsZero() bool
 pkg vdltest, method (VUnionDepth3_VUnionDepth2_AllF5) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireAll) VDLIsZero() bool
+pkg vdltest, method (VWireAll) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireArrayNString) VDLIsZero() bool
+pkg vdltest, method (VWireArrayNString) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireArrayNStruct) VDLIsZero() bool
+pkg vdltest, method (VWireArrayNStruct) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireBoolNBool) VDLIsZero() bool
+pkg vdltest, method (VWireBoolNBool) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireBoolNString) VDLIsZero() bool
+pkg vdltest, method (VWireBoolNString) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireBoolNStruct) VDLIsZero() bool
+pkg vdltest, method (VWireBoolNStruct) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireIntNInt) VDLIsZero() bool
+pkg vdltest, method (VWireIntNInt) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireIntNString) VDLIsZero() bool
+pkg vdltest, method (VWireIntNString) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireIntNStruct) VDLIsZero() bool
+pkg vdltest, method (VWireIntNStruct) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireListNString) VDLIsZero() bool
+pkg vdltest, method (VWireListNString) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireListNStruct) VDLIsZero() bool
+pkg vdltest, method (VWireListNStruct) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStringNString) VDLIsZero() bool
+pkg vdltest, method (VWireStringNString) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStringNStruct) VDLIsZero() bool
+pkg vdltest, method (VWireStringNStruct) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStructNArray) VDLIsZero() bool
+pkg vdltest, method (VWireStructNArray) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStructNIface) VDLIsZero() bool
+pkg vdltest, method (VWireStructNIface) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStructNPointer) VDLIsZero() bool
+pkg vdltest, method (VWireStructNPointer) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStructNSlice) VDLIsZero() bool
+pkg vdltest, method (VWireStructNSlice) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStructNString) VDLIsZero() bool
+pkg vdltest, method (VWireStructNString) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireStructNStruct) VDLIsZero() bool
+pkg vdltest, method (VWireStructNStruct) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireUnionNArrayX) Index() int
+pkg vdltest, method (VWireUnionNArrayX) Interface() interface{}
+pkg vdltest, method (VWireUnionNArrayX) Name() string
+pkg vdltest, method (VWireUnionNArrayX) VDLIsZero() bool
+pkg vdltest, method (VWireUnionNArrayX) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireUnionNIfaceX) Index() int
+pkg vdltest, method (VWireUnionNIfaceX) Interface() interface{}
+pkg vdltest, method (VWireUnionNIfaceX) Name() string
+pkg vdltest, method (VWireUnionNIfaceX) VDLIsZero() bool
+pkg vdltest, method (VWireUnionNIfaceX) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireUnionNPointerX) Index() int
+pkg vdltest, method (VWireUnionNPointerX) Interface() interface{}
+pkg vdltest, method (VWireUnionNPointerX) Name() string
+pkg vdltest, method (VWireUnionNPointerX) VDLIsZero() bool
+pkg vdltest, method (VWireUnionNPointerX) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireUnionNSliceX) Index() int
+pkg vdltest, method (VWireUnionNSliceX) Interface() interface{}
+pkg vdltest, method (VWireUnionNSliceX) Name() string
+pkg vdltest, method (VWireUnionNSliceX) VDLIsZero() bool
+pkg vdltest, method (VWireUnionNSliceX) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireUnionNStringX) Index() int
+pkg vdltest, method (VWireUnionNStringX) Interface() interface{}
+pkg vdltest, method (VWireUnionNStringX) Name() string
+pkg vdltest, method (VWireUnionNStringX) VDLIsZero() bool
+pkg vdltest, method (VWireUnionNStringX) VDLWrite(vdl.Encoder) error
+pkg vdltest, method (VWireUnionNStructX) Index() int
+pkg vdltest, method (VWireUnionNStructX) Interface() interface{}
+pkg vdltest, method (VWireUnionNStructX) Name() string
+pkg vdltest, method (VWireUnionNStructX) VDLIsZero() bool
+pkg vdltest, method (VWireUnionNStructX) VDLWrite(vdl.Encoder) error
 pkg vdltest, method (XEnumAbc) String() string
 pkg vdltest, method (XEnumBcd) String() string
 pkg vdltest, method (XUnionDepth1_AllF0) Index() int
@@ -1616,9 +1760,45 @@
 pkg vdltest, type VMap_VUint32_VUint32 map[VUint32]VUint32
 pkg vdltest, type VMap_VUnionDepth1_VUint64_VUnionDepth1_VUint64 map[VUnionDepth1_VUint64]VUnionDepth1_VUint64
 pkg vdltest, type VMap_VUnionDepth2_VArray2_VByte_VUnionDepth2_VArray2_VByte map[VUnionDepth2_VArray2_VByte]VUnionDepth2_VArray2_VByte
+pkg vdltest, type VMutualCycleA struct
+pkg vdltest, type VMutualCycleA struct, B *VMutualCycleB
+pkg vdltest, type VMutualCycleA struct, Data int64
+pkg vdltest, type VMutualCycleB struct
+pkg vdltest, type VMutualCycleB struct, A *VMutualCycleA
+pkg vdltest, type VMutualCycleB struct, Data int64
 pkg vdltest, type VNamedError struct
 pkg vdltest, type VNamedError struct, Id string
 pkg vdltest, type VNamedError struct, Msg string
+pkg vdltest, type VNativeWireArrayNString string
+pkg vdltest, type VNativeWireArrayNStruct struct
+pkg vdltest, type VNativeWireArrayNStruct struct, X string
+pkg vdltest, type VNativeWireBoolNBool bool
+pkg vdltest, type VNativeWireBoolNString string
+pkg vdltest, type VNativeWireBoolNStruct struct
+pkg vdltest, type VNativeWireBoolNStruct struct, X string
+pkg vdltest, type VNativeWireIntNInt int
+pkg vdltest, type VNativeWireIntNString string
+pkg vdltest, type VNativeWireIntNStruct struct
+pkg vdltest, type VNativeWireIntNStruct struct, X string
+pkg vdltest, type VNativeWireListNString string
+pkg vdltest, type VNativeWireListNStruct struct
+pkg vdltest, type VNativeWireListNStruct struct, X string
+pkg vdltest, type VNativeWireStringNString string
+pkg vdltest, type VNativeWireStringNStruct struct
+pkg vdltest, type VNativeWireStringNStruct struct, X string
+pkg vdltest, type VNativeWireStructNArray [1]string
+pkg vdltest, type VNativeWireStructNSlice []string
+pkg vdltest, type VNativeWireStructNString string
+pkg vdltest, type VNativeWireStructNStruct struct
+pkg vdltest, type VNativeWireStructNStruct struct, X string
+pkg vdltest, type VNativeWireUnionNArray [1]string
+pkg vdltest, type VNativeWireUnionNSlice []string
+pkg vdltest, type VNativeWireUnionNString string
+pkg vdltest, type VNativeWireUnionNStruct struct
+pkg vdltest, type VNativeWireUnionNStruct struct, X string
+pkg vdltest, type VSelfCycle struct
+pkg vdltest, type VSelfCycle struct, Data int64
+pkg vdltest, type VSelfCycle struct, Next *VSelfCycle
 pkg vdltest, type VSet_Bool map[bool]struct{}
 pkg vdltest, type VSet_Byte map[byte]struct{}
 pkg vdltest, type VSet_Float32 map[float32]struct{}
@@ -2366,6 +2546,103 @@
 pkg vdltest, type VUnionDepth3_VUnionDepth2_All interface, unexported methods
 pkg vdltest, type VUnionDepth3_VUnionDepth2_AllF5 struct
 pkg vdltest, type VUnionDepth3_VUnionDepth2_AllF5 struct, Value VUnionDepth2_All
+pkg vdltest, type VWireAll struct
+pkg vdltest, type VWireAll struct, ArrayNString VNativeWireArrayNString
+pkg vdltest, type VWireAll struct, ArrayNStruct VNativeWireArrayNStruct
+pkg vdltest, type VWireAll struct, BoolNBool VNativeWireBoolNBool
+pkg vdltest, type VWireAll struct, BoolNString VNativeWireBoolNString
+pkg vdltest, type VWireAll struct, BoolNStruct VNativeWireBoolNStruct
+pkg vdltest, type VWireAll struct, IntNInt VNativeWireIntNInt
+pkg vdltest, type VWireAll struct, IntNString VNativeWireIntNString
+pkg vdltest, type VWireAll struct, IntNStruct VNativeWireIntNStruct
+pkg vdltest, type VWireAll struct, ListNString VNativeWireListNString
+pkg vdltest, type VWireAll struct, ListNStruct VNativeWireListNStruct
+pkg vdltest, type VWireAll struct, StringNString VNativeWireStringNString
+pkg vdltest, type VWireAll struct, StringNStruct VNativeWireStringNStruct
+pkg vdltest, type VWireAll struct, StructNArray VNativeWireStructNArray
+pkg vdltest, type VWireAll struct, StructNIface VWireStructNIface
+pkg vdltest, type VWireAll struct, StructNPointer VWireStructNPointer
+pkg vdltest, type VWireAll struct, StructNSlice VNativeWireStructNSlice
+pkg vdltest, type VWireAll struct, StructNString VNativeWireStructNString
+pkg vdltest, type VWireAll struct, StructNStruct VNativeWireStructNStruct
+pkg vdltest, type VWireAll struct, UnionNArray VNativeWireUnionNArray
+pkg vdltest, type VWireAll struct, UnionNIface VWireUnionNIface
+pkg vdltest, type VWireAll struct, UnionNPointer VWireUnionNPointer
+pkg vdltest, type VWireAll struct, UnionNSlice VNativeWireUnionNSlice
+pkg vdltest, type VWireAll struct, UnionNString VNativeWireUnionNString
+pkg vdltest, type VWireAll struct, UnionNStruct VNativeWireUnionNStruct
+pkg vdltest, type VWireArrayNString [1]string
+pkg vdltest, type VWireArrayNStruct [1]string
+pkg vdltest, type VWireBoolNBool bool
+pkg vdltest, type VWireBoolNString bool
+pkg vdltest, type VWireBoolNStruct bool
+pkg vdltest, type VWireIntNInt int32
+pkg vdltest, type VWireIntNString int32
+pkg vdltest, type VWireIntNStruct int32
+pkg vdltest, type VWireListNString []string
+pkg vdltest, type VWireListNStruct []string
+pkg vdltest, type VWireStringNString string
+pkg vdltest, type VWireStringNStruct string
+pkg vdltest, type VWireStructNArray struct
+pkg vdltest, type VWireStructNArray struct, X string
+pkg vdltest, type VWireStructNIface struct
+pkg vdltest, type VWireStructNIface struct, X string
+pkg vdltest, type VWireStructNPointer struct
+pkg vdltest, type VWireStructNPointer struct, X string
+pkg vdltest, type VWireStructNSlice struct
+pkg vdltest, type VWireStructNSlice struct, X string
+pkg vdltest, type VWireStructNString struct
+pkg vdltest, type VWireStructNString struct, X string
+pkg vdltest, type VWireStructNStruct struct
+pkg vdltest, type VWireStructNStruct struct, X string
+pkg vdltest, type VWireUnionNArray interface, Index() int
+pkg vdltest, type VWireUnionNArray interface, Interface() interface{}
+pkg vdltest, type VWireUnionNArray interface, Name() string
+pkg vdltest, type VWireUnionNArray interface, VDLIsZero() bool
+pkg vdltest, type VWireUnionNArray interface, VDLWrite(vdl.Encoder) error
+pkg vdltest, type VWireUnionNArray interface, unexported methods
+pkg vdltest, type VWireUnionNArrayX struct
+pkg vdltest, type VWireUnionNArrayX struct, Value string
+pkg vdltest, type VWireUnionNIface interface, Index() int
+pkg vdltest, type VWireUnionNIface interface, Interface() interface{}
+pkg vdltest, type VWireUnionNIface interface, Name() string
+pkg vdltest, type VWireUnionNIface interface, VDLIsZero() bool
+pkg vdltest, type VWireUnionNIface interface, VDLWrite(vdl.Encoder) error
+pkg vdltest, type VWireUnionNIface interface, unexported methods
+pkg vdltest, type VWireUnionNIfaceX struct
+pkg vdltest, type VWireUnionNIfaceX struct, Value string
+pkg vdltest, type VWireUnionNPointer interface, Index() int
+pkg vdltest, type VWireUnionNPointer interface, Interface() interface{}
+pkg vdltest, type VWireUnionNPointer interface, Name() string
+pkg vdltest, type VWireUnionNPointer interface, VDLIsZero() bool
+pkg vdltest, type VWireUnionNPointer interface, VDLWrite(vdl.Encoder) error
+pkg vdltest, type VWireUnionNPointer interface, unexported methods
+pkg vdltest, type VWireUnionNPointerX struct
+pkg vdltest, type VWireUnionNPointerX struct, Value string
+pkg vdltest, type VWireUnionNSlice interface, Index() int
+pkg vdltest, type VWireUnionNSlice interface, Interface() interface{}
+pkg vdltest, type VWireUnionNSlice interface, Name() string
+pkg vdltest, type VWireUnionNSlice interface, VDLIsZero() bool
+pkg vdltest, type VWireUnionNSlice interface, VDLWrite(vdl.Encoder) error
+pkg vdltest, type VWireUnionNSlice interface, unexported methods
+pkg vdltest, type VWireUnionNSliceX struct
+pkg vdltest, type VWireUnionNSliceX struct, Value string
+pkg vdltest, type VWireUnionNString interface, Index() int
+pkg vdltest, type VWireUnionNString interface, Interface() interface{}
+pkg vdltest, type VWireUnionNString interface, Name() string
+pkg vdltest, type VWireUnionNString interface, VDLIsZero() bool
+pkg vdltest, type VWireUnionNString interface, VDLWrite(vdl.Encoder) error
+pkg vdltest, type VWireUnionNString interface, unexported methods
+pkg vdltest, type VWireUnionNStringX struct
+pkg vdltest, type VWireUnionNStringX struct, Value string
+pkg vdltest, type VWireUnionNStruct interface, Index() int
+pkg vdltest, type VWireUnionNStruct interface, Interface() interface{}
+pkg vdltest, type VWireUnionNStruct interface, Name() string
+pkg vdltest, type VWireUnionNStruct interface, VDLIsZero() bool
+pkg vdltest, type VWireUnionNStruct interface, VDLWrite(vdl.Encoder) error
+pkg vdltest, type VWireUnionNStruct interface, unexported methods
+pkg vdltest, type VWireUnionNStructX struct
+pkg vdltest, type VWireUnionNStructX struct, Value string
 pkg vdltest, type ValueGenerator struct
 pkg vdltest, type ValueGenerator struct, MaxCycleDepth int
 pkg vdltest, type ValueGenerator struct, MaxLen int
@@ -2464,9 +2741,18 @@
 pkg vdltest, type XMap_XUint32_XUint32 map[XUint32]XUint32
 pkg vdltest, type XMap_XUnionDepth1_XUint64_XUnionDepth1_XUint64 map[XUnionDepth1_XUint64]XUnionDepth1_XUint64
 pkg vdltest, type XMap_XUnionDepth2_XArray2_XByte_XUnionDepth2_XArray2_XByte map[XUnionDepth2_XArray2_XByte]XUnionDepth2_XArray2_XByte
+pkg vdltest, type XMutualCycleA struct
+pkg vdltest, type XMutualCycleA struct, B *XMutualCycleB
+pkg vdltest, type XMutualCycleA struct, Data int64
+pkg vdltest, type XMutualCycleB struct
+pkg vdltest, type XMutualCycleB struct, A *XMutualCycleA
+pkg vdltest, type XMutualCycleB struct, Data int64
 pkg vdltest, type XNamedError struct
 pkg vdltest, type XNamedError struct, Id string
 pkg vdltest, type XNamedError struct, Msg string
+pkg vdltest, type XSelfCycle struct
+pkg vdltest, type XSelfCycle struct, Data int64
+pkg vdltest, type XSelfCycle struct, Next *XSelfCycle
 pkg vdltest, type XSet_Bool map[bool]struct{}
 pkg vdltest, type XSet_Byte map[byte]struct{}
 pkg vdltest, type XSet_Float32 map[float32]struct{}
diff --git a/vdl/vdltest/internal/vdltestgen/doc.go b/vdl/vdltest/internal/vdltestgen/doc.go
index 01b4db4..b8b38eb 100644
--- a/vdl/vdltest/internal/vdltestgen/doc.go
+++ b/vdl/vdltest/internal/vdltestgen/doc.go
@@ -17,30 +17,12 @@
    xentry_pass_gen.vdl - Entries that pass conversion from source to target.
    xentry_fail_gen.vdl - Entries that fail conversion from source to target.
 
-This tool does not run the vdl tool on the generated *.vdl files; you must do
-that yourself, typically via "jiri go install".
-
-Instead of running this tool manually, it is typically invoked via:
-
+Do not run this tool manually.  Instead invoke it via:
    $ jiri run go generate v.io/v23/vdl/vdltest
 
 Usage:
    vdltestgen [flags]
 
-The vdltestgen flags are:
- -ventry-fail=ventry_fail_gen.vdl
-   Name of the generated ventry fail file, containing failing test entries.
- -ventry-pass=ventry_pass_gen.vdl
-   Name of the generated ventry pass file, containing passing test entries.
- -vtype=vtype_gen.vdl
-   Name of the generated vtype file.
- -xentry-fail=xentry_fail_gen.vdl
-   Name of the generated xentry fail file, containing failing test entries.
- -xentry-pass=xentry_pass_gen.vdl
-   Name of the generated xentry pass file, containing passing test entries.
- -xtype=xtype_gen.vdl
-   Name of the generated xtype file.
-
 The global flags are:
  -metadata=<just specify -metadata to activate>
    Displays metadata for the program and exits.
diff --git a/vdl/vdltest/internal/vdltestgen/main.go b/vdl/vdltest/internal/vdltestgen/main.go
index 0b8a349..84579ca 100644
--- a/vdl/vdltest/internal/vdltestgen/main.go
+++ b/vdl/vdltest/internal/vdltestgen/main.go
@@ -17,7 +17,9 @@
 	"v.io/v23/vdl/vdltest"
 	"v.io/x/lib/cmdline"
 	"v.io/x/lib/textutil"
+	"v.io/x/ref/lib/vdl/build"
 	"v.io/x/ref/lib/vdl/codegen/vdlgen"
+	"v.io/x/ref/lib/vdl/compile"
 )
 
 var cmdGen = &cmdline.Command{
@@ -36,63 +38,82 @@
    xentry_pass_gen.vdl - Entries that pass conversion from source to target.
    xentry_fail_gen.vdl - Entries that fail conversion from source to target.
 
-This tool does not run the vdl tool on the generated *.vdl files; you must do
-that yourself, typically via "jiri go install".
-
-Instead of running this tool manually, it is typically invoked via:
-
+Do not run this tool manually.  Instead invoke it via:
    $ jiri run go generate v.io/v23/vdl/vdltest
 `,
 }
 
 func main() {
-	cmdGen.Flags.StringVar(&flagVType, "vtype", "vtype_gen.vdl", "Name of the generated vtype file.")
-	cmdGen.Flags.StringVar(&flagVEntryPass, "ventry-pass", "ventry_pass_gen.vdl", "Name of the generated ventry pass file, containing passing test entries.")
-	cmdGen.Flags.StringVar(&flagVEntryFail, "ventry-fail", "ventry_fail_gen.vdl", "Name of the generated ventry fail file, containing failing test entries.")
-
-	cmdGen.Flags.StringVar(&flagXType, "xtype", "xtype_gen.vdl", "Name of the generated xtype file.")
-	cmdGen.Flags.StringVar(&flagXEntryPass, "xentry-pass", "xentry_pass_gen.vdl", "Name of the generated xentry pass file, containing passing test entries.")
-	cmdGen.Flags.StringVar(&flagXEntryFail, "xentry-fail", "xentry_fail_gen.vdl", "Name of the generated xentry fail file, containing failing test entries.")
-
 	cmdline.Main(cmdGen)
 }
 
-var (
-	flagVType      string
-	flagVEntryPass string
-	flagVEntryFail string
-	flagXType      string
-	flagXEntryPass string
-	flagXEntryFail string
+const (
+	vdltestPkgName     = "v.io/v23/vdl/vdltest"
+	typeGenFileName    = "type_gen.vdl"
+	typeManualFileName = "type_manual.vdl"
+	passGenFileName    = "entry_pass_gen.vdl"
+	failGenFileName    = "entry_fail_gen.vdl"
 )
 
 func runGen(_ *cmdline.Env, _ []string) error {
-	const maxTypeDepth, seed = 3, 1
-	// Generate "V" types and entries.
-	vTypeGen := vdltest.NewTypeGenerator()
-	vTypeGen.RandSeed(seed)
-	vTypeGen.NamePrefix = "V"
-	vTypes := vTypeGen.Gen(maxTypeDepth)
-	vEntryGen := vdltest.NewEntryGenerator(vTypes)
-	vEntryGen.RandSeed(seed)
-	writeTypeFile(flagVType, vTypes)
-	writeEntryFile(flagVEntryPass, "vAllPass", vEntryGen.GenAllPass(vTypes))
-	writeEntryFile(flagVEntryFail, "vAllFail", vEntryGen.GenAllFail(vTypes))
-	// Generate "X" types and entries.
-	xTypeGen := vdltest.NewTypeGenerator()
-	xTypeGen.RandSeed(seed)
-	xTypeGen.NamePrefix = "X"
-	xTypes := xTypeGen.Gen(maxTypeDepth)
-	xEntryGen := vdltest.NewEntryGenerator(xTypes)
-	xEntryGen.RandSeed(seed)
-	// Don't generate "X" entries for types already covered by "V" entries.
-	xTargetTypes := subtractTypes(xTypes, vTypes)
-	writeTypeFile(flagXType, xTypes)
-	writeEntryFile(flagXEntryPass, "xAllPass", xEntryGen.GenAllPass(xTargetTypes))
-	writeEntryFile(flagXEntryFail, "xAllFail", xEntryGen.GenAllFail(xTargetTypes))
+	// Build the vdltest package, to pick up manually-generated types and entries.
+	vdltestPkg, err := buildVDLTestPackage()
+	if err != nil {
+		return err
+	}
+	// Generate "v" types and entries.
+	vGenTypes := genAndWriteTypes("v")
+	vManTypes := collectManualTypes("v", vdltestPkg)
+	vPass, vFail := genEntries(vGenTypes, vGenTypes)
+	pass, fail := genEntries(vManTypes, append(vManTypes, vGenTypes...))
+	writeEntries("v", append(vPass, pass...), append(vFail, fail...))
+	// Generate "x" types and entries, skipping entries already covered by "v".
+	xGenTypes := genAndWriteTypes("x")
+	xManTypes := collectManualTypes("x", vdltestPkg)
+	xTargetTypes := subtractTypes(xGenTypes, vGenTypes)
+	xPass, xFail := genEntries(xTargetTypes, xGenTypes)
+	pass, fail = genEntries(xManTypes, append(xManTypes, xGenTypes...))
+	writeEntries("x", append(xPass, pass...), append(xFail, fail...))
 	return nil
 }
 
+func buildVDLTestPackage() (*compile.Package, error) {
+	env := compile.NewEnv(-1)
+	pkgs := build.TransitivePackages([]string{vdltestPkgName}, build.UnknownPathIsError, build.Opts{}, env.Errors)
+	if !env.Errors.IsEmpty() {
+		return nil, env.Errors.ToError()
+	}
+	for _, pkg := range pkgs {
+		build.BuildPackage(pkg, env)
+	}
+	return env.ResolvePackage(vdltestPkgName), env.Errors.ToError()
+}
+
+// genAndWriteTypes generates types and writes the type file.
+func genAndWriteTypes(prefix string) []*vdl.Type {
+	const maxTypeDepth = 3
+	gen := vdltest.NewTypeGenerator()
+	gen.RandSeed(1)
+	gen.NamePrefix = strings.ToUpper(prefix)
+	genTypes := gen.Gen(maxTypeDepth)
+	writeTypeFile(prefix+typeGenFileName, genTypes)
+	return genTypes
+}
+
+// collectManualTypes collects manually-defined types from pkg.
+func collectManualTypes(prefix string, pkg *compile.Package) []*vdl.Type {
+	var manTypes []*vdl.Type
+	for _, file := range pkg.Files {
+		if file.BaseName != prefix+typeManualFileName {
+			continue
+		}
+		for _, def := range file.TypeDefs {
+			manTypes = append(manTypes, def.Type)
+		}
+	}
+	return manTypes
+}
+
 // subtractTypes returns all types that don't appear in sub.
 func subtractTypes(types, sub []*vdl.Type) []*vdl.Type {
 	subMap := make(map[*vdl.Type]bool)
@@ -108,6 +129,22 @@
 	return result
 }
 
+// genEntries generates entries for all target types, using source types as the
+// candidates to mimic conversion values.
+func genEntries(target, source []*vdl.Type) (pass, fail []vdltest.EntryValue) {
+	gen := vdltest.NewEntryGenerator(source)
+	gen.RandSeed(1)
+	pass = gen.GenAllPass(target)
+	gen.RandSeed(1)
+	fail = gen.GenAllFail(target)
+	return
+}
+
+func writeEntries(prefix string, pass, fail []vdltest.EntryValue) {
+	writeEntryFile(prefix+passGenFileName, prefix+"AllPass", pass)
+	writeEntryFile(prefix+failGenFileName, prefix+"AllFail", fail)
+}
+
 // This tool is only used to generate test cases for the vdltest package, so the
 // strategy is to panic on any error, to make the code simpler.
 func panicOnError(err error) {
@@ -153,7 +190,7 @@
 	writef(file, "\ntype (\n")
 	for _, tt := range types {
 		if tt.Name() != "" {
-			base := vdlgen.BaseType(tt, "", nil)
+			base := vdlgen.BaseType(tt, vdltestPkgName, nil)
 			base = strings.Replace(base, "\n", "\n\t", -1)
 			writef(file, "\t%[1]s %[2]s\n", tt.Name(), base)
 		}
@@ -174,8 +211,8 @@
 		if e.IsCanonical() {
 			writef(file, "\t// Canonical\n")
 		}
-		target := vdlgen.TypedConst(e.Target, "", nil)
-		source := vdlgen.TypedConst(e.Source, "", nil)
+		target := vdlgen.TypedConst(e.Target, vdltestPkgName, nil)
+		source := vdlgen.TypedConst(e.Source, vdltestPkgName, nil)
 		if len(target)*2+len(source)*2 < 100 {
 			// Write a pretty one-liner, if it's short enough.
 			writef(file, "\t{ %[1]v, %#[2]q, %#[3]q, %[3]s, %#[4]q, %[4]s },\n", e.IsCanonical(), e.Label, target, source)
diff --git a/vdl/vdltest/stats.go b/vdl/vdltest/stats.go
index f81b70b..e7ae615 100644
--- a/vdl/vdltest/stats.go
+++ b/vdl/vdltest/stats.go
@@ -490,6 +490,9 @@
 	stats.Collect("IsBytes", func(e EntryValue) bool {
 		return e.Source.Type().IsBytes()
 	})
+	stats.Collect("IsPartOfCycle", func(e EntryValue) bool {
+		return e.Source.Type().IsPartOfCycle()
+	})
 	// Print stats table.
 	if err := fp(w, "Entries: %d\n", len(entries)); err != nil {
 		return err
diff --git a/vdl/vdltest/vdl.config b/vdl/vdltest/vdl.config
index 486caa2..46ce6cc 100644
--- a/vdl/vdltest/vdl.config
+++ b/vdl/vdltest/vdl.config
@@ -3,4 +3,136 @@
 	// Restrict codegen to Go for the moment, since the vdltest package uncovers
 	// corner cases that break Java.
 	GenLanguages: {Go},
+	// Configure native types.
+	Go: {
+		WireToNativeTypes: {
+			// VWireBoolN{Bool,String,Struct}
+			"VWireBoolNBool": {
+				Kind:    Bool,
+				Type:    "vdltest.VNativeWireBoolNBool",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireBoolNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireBoolNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireBoolNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireBoolNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			// VWireIntN{Int,String,Struct}
+			"VWireIntNInt": {
+				Kind:    Number,
+				Type:    "vdltest.VNativeWireIntNInt",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireIntNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireIntNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireIntNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireIntNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			// VWireStringN{String,Struct}
+			"VWireStringNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireStringNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireStringNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireStringNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			// VWireArrayN{String,Struct}
+			"VWireArrayNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireArrayNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireArrayNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireArrayNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			// VWireListN{String,Struct}
+			"VWireListNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireListNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireListNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireListNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			// VWireStructN{String,Struct,Array,Slice,Pointer,Iface}
+			"VWireStructNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireStructNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireStructNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireStructNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireStructNArray": {
+				Kind:    Array,
+				Type:    "vdltest.VNativeWireStructNArray",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireStructNSlice": {
+				Kind:    Slice,
+				Type:    "vdltest.VNativeWireStructNSlice",
+				Zero:    {Mode: Canonical, IsZero: ".IsZero()"},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			// VWireUnionN{String,Struct,Array,Slice,Pointer,Iface}
+			"VWireUnionNString": {
+				Kind:    String,
+				Type:    "vdltest.VNativeWireUnionNString",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireUnionNStruct": {
+				Kind:    Struct,
+				Type:    "vdltest.VNativeWireUnionNStruct",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireUnionNArray": {
+				Kind:    Array,
+				Type:    "vdltest.VNativeWireUnionNArray",
+				Zero:    {Mode: Unique},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+			"VWireUnionNSlice": {
+				Kind:    Slice,
+				Type:    "vdltest.VNativeWireUnionNSlice",
+				Zero:    {Mode: Canonical, IsZero: ".IsZero()"},
+				Imports: {{Path: "v.io/v23/vdl/vdltest", Name: "vdltest"}},
+			},
+		},
+	},
 }
diff --git a/vdl/vdltest/vdltest.vdl.go b/vdl/vdltest/vdltest.vdl.go
index 83da035..df9c33c 100644
--- a/vdl/vdltest/vdltest.vdl.go
+++ b/vdl/vdltest/vdltest.vdl.go
@@ -20502,6 +20502,2463 @@
 	return dec.FinishValue()
 }
 
+// VSelfCycle tests self-cyclic types.
+type VSelfCycle struct {
+	Data int64
+	Next *VSelfCycle
+}
+
+func (VSelfCycle) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VSelfCycle"`
+}) {
+}
+
+func (x VSelfCycle) VDLIsZero() bool {
+	return x == VSelfCycle{}
+}
+
+func (x VSelfCycle) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VSelfCycle)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.Data != 0 {
+		if err := enc.NextField("Data"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.Int64Type); err != nil {
+			return err
+		}
+		if err := enc.EncodeInt(x.Data); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if x.Next != nil {
+		if err := enc.NextField("Next"); err != nil {
+			return err
+		}
+		enc.SetNextStartValueIsOptional()
+
+		if err := x.Next.VDLWrite(enc); err != nil {
+			return err
+		}
+
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VSelfCycle) VDLRead(dec vdl.Decoder) error {
+	*x = VSelfCycle{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "Data":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.Data, err = dec.DecodeInt(64); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		case "Next":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			if dec.IsNil() {
+				if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x.Next), dec.Type()) {
+					return fmt.Errorf("incompatible optional %T, from %v", x.Next, dec.Type())
+				}
+				x.Next = nil
+				if err := dec.FinishValue(); err != nil {
+					return err
+				}
+			} else {
+				x.Next = new(VSelfCycle)
+				dec.IgnoreNextStartValue()
+				if err := x.Next.VDLRead(dec); err != nil {
+					return err
+				}
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+// VMutualCycleB tests mutually cyclic types A and B.
+type VMutualCycleB struct {
+	Data int64
+	A    *VMutualCycleA
+}
+
+func (VMutualCycleB) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VMutualCycleB"`
+}) {
+}
+
+func (x VMutualCycleB) VDLIsZero() bool {
+	return x == VMutualCycleB{}
+}
+
+func (x VMutualCycleB) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VMutualCycleB)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.Data != 0 {
+		if err := enc.NextField("Data"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.Int64Type); err != nil {
+			return err
+		}
+		if err := enc.EncodeInt(x.Data); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if x.A != nil {
+		if err := enc.NextField("A"); err != nil {
+			return err
+		}
+		enc.SetNextStartValueIsOptional()
+
+		if err := x.A.VDLWrite(enc); err != nil {
+			return err
+		}
+
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VMutualCycleB) VDLRead(dec vdl.Decoder) error {
+	*x = VMutualCycleB{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "Data":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.Data, err = dec.DecodeInt(64); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		case "A":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			if dec.IsNil() {
+				if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x.A), dec.Type()) {
+					return fmt.Errorf("incompatible optional %T, from %v", x.A, dec.Type())
+				}
+				x.A = nil
+				if err := dec.FinishValue(); err != nil {
+					return err
+				}
+			} else {
+				x.A = new(VMutualCycleA)
+				dec.IgnoreNextStartValue()
+				if err := x.A.VDLRead(dec); err != nil {
+					return err
+				}
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+// VMutualCycleA tests mutually cyclic types A and B.
+type VMutualCycleA struct {
+	Data int64
+	B    *VMutualCycleB
+}
+
+func (VMutualCycleA) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VMutualCycleA"`
+}) {
+}
+
+func (x VMutualCycleA) VDLIsZero() bool {
+	return x == VMutualCycleA{}
+}
+
+func (x VMutualCycleA) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VMutualCycleA)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.Data != 0 {
+		if err := enc.NextField("Data"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.Int64Type); err != nil {
+			return err
+		}
+		if err := enc.EncodeInt(x.Data); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if x.B != nil {
+		if err := enc.NextField("B"); err != nil {
+			return err
+		}
+		enc.SetNextStartValueIsOptional()
+
+		if err := x.B.VDLWrite(enc); err != nil {
+			return err
+		}
+
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VMutualCycleA) VDLRead(dec vdl.Decoder) error {
+	*x = VMutualCycleA{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "Data":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.Data, err = dec.DecodeInt(64); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		case "B":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			if dec.IsNil() {
+				if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x.B), dec.Type()) {
+					return fmt.Errorf("incompatible optional %T, from %v", x.B, dec.Type())
+				}
+				x.B = nil
+				if err := dec.FinishValue(); err != nil {
+					return err
+				}
+			} else {
+				x.B = new(VMutualCycleB)
+				dec.IgnoreNextStartValue()
+				if err := x.B.VDLRead(dec); err != nil {
+					return err
+				}
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type VWireBoolNBool bool
+
+func (VWireBoolNBool) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireBoolNBool"`
+}) {
+}
+
+func (x VWireBoolNBool) VDLIsZero() bool {
+	return bool(!x)
+}
+
+func (x VWireBoolNBool) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireBoolNBool)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeBool(bool(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireBoolNBool) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeBool()
+	if err != nil {
+		return err
+	}
+	*x = VWireBoolNBool(tmp)
+	return dec.FinishValue()
+}
+
+type VWireBoolNString bool
+
+func (VWireBoolNString) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireBoolNString"`
+}) {
+}
+
+func (x VWireBoolNString) VDLIsZero() bool {
+	return bool(!x)
+}
+
+func (x VWireBoolNString) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireBoolNString)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeBool(bool(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireBoolNString) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeBool()
+	if err != nil {
+		return err
+	}
+	*x = VWireBoolNString(tmp)
+	return dec.FinishValue()
+}
+
+type VWireBoolNStruct bool
+
+func (VWireBoolNStruct) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireBoolNStruct"`
+}) {
+}
+
+func (x VWireBoolNStruct) VDLIsZero() bool {
+	return bool(!x)
+}
+
+func (x VWireBoolNStruct) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireBoolNStruct)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeBool(bool(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireBoolNStruct) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeBool()
+	if err != nil {
+		return err
+	}
+	*x = VWireBoolNStruct(tmp)
+	return dec.FinishValue()
+}
+
+type VWireIntNInt int32
+
+func (VWireIntNInt) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireIntNInt"`
+}) {
+}
+
+func (x VWireIntNInt) VDLIsZero() bool {
+	return x == 0
+}
+
+func (x VWireIntNInt) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireIntNInt)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeInt(int64(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireIntNInt) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeInt(32)
+	if err != nil {
+		return err
+	}
+	*x = VWireIntNInt(tmp)
+	return dec.FinishValue()
+}
+
+type VWireIntNString int32
+
+func (VWireIntNString) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireIntNString"`
+}) {
+}
+
+func (x VWireIntNString) VDLIsZero() bool {
+	return x == 0
+}
+
+func (x VWireIntNString) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireIntNString)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeInt(int64(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireIntNString) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeInt(32)
+	if err != nil {
+		return err
+	}
+	*x = VWireIntNString(tmp)
+	return dec.FinishValue()
+}
+
+type VWireIntNStruct int32
+
+func (VWireIntNStruct) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireIntNStruct"`
+}) {
+}
+
+func (x VWireIntNStruct) VDLIsZero() bool {
+	return x == 0
+}
+
+func (x VWireIntNStruct) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireIntNStruct)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeInt(int64(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireIntNStruct) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeInt(32)
+	if err != nil {
+		return err
+	}
+	*x = VWireIntNStruct(tmp)
+	return dec.FinishValue()
+}
+
+type VWireStringNString string
+
+func (VWireStringNString) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStringNString"`
+}) {
+}
+
+func (x VWireStringNString) VDLIsZero() bool {
+	return x == ""
+}
+
+func (x VWireStringNString) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStringNString)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(string(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStringNString) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeString()
+	if err != nil {
+		return err
+	}
+	*x = VWireStringNString(tmp)
+	return dec.FinishValue()
+}
+
+type VWireStringNStruct string
+
+func (VWireStringNStruct) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStringNStruct"`
+}) {
+}
+
+func (x VWireStringNStruct) VDLIsZero() bool {
+	return x == ""
+}
+
+func (x VWireStringNStruct) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStringNStruct)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(string(x)); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStringNStruct) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	tmp, err := dec.DecodeString()
+	if err != nil {
+		return err
+	}
+	*x = VWireStringNStruct(tmp)
+	return dec.FinishValue()
+}
+
+type VWireArrayNString [1]string
+
+func (VWireArrayNString) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireArrayNString"`
+}) {
+}
+
+func (x VWireArrayNString) VDLIsZero() bool {
+	return x == VWireArrayNString{}
+}
+
+func (x VWireArrayNString) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireArrayNString)(nil))); err != nil {
+		return err
+	}
+	for i := 0; i < 1; i++ {
+		if err := enc.NextEntry(false); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x[i]); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextEntry(true); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireArrayNString) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible array %T, from %v", *x, dec.Type())
+	}
+	index := 0
+	for {
+		switch done, err := dec.NextEntry(); {
+		case err != nil:
+			return err
+		case done != (index >= len(*x)):
+			return fmt.Errorf("array len mismatch, done:%v index:%d len:%d %T)", done, index, len(*x), *x)
+		case done:
+			return dec.FinishValue()
+		}
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if x[index], err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		index++
+	}
+}
+
+type VWireArrayNStruct [1]string
+
+func (VWireArrayNStruct) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireArrayNStruct"`
+}) {
+}
+
+func (x VWireArrayNStruct) VDLIsZero() bool {
+	return x == VWireArrayNStruct{}
+}
+
+func (x VWireArrayNStruct) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireArrayNStruct)(nil))); err != nil {
+		return err
+	}
+	for i := 0; i < 1; i++ {
+		if err := enc.NextEntry(false); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x[i]); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextEntry(true); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireArrayNStruct) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible array %T, from %v", *x, dec.Type())
+	}
+	index := 0
+	for {
+		switch done, err := dec.NextEntry(); {
+		case err != nil:
+			return err
+		case done != (index >= len(*x)):
+			return fmt.Errorf("array len mismatch, done:%v index:%d len:%d %T)", done, index, len(*x), *x)
+		case done:
+			return dec.FinishValue()
+		}
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if x[index], err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		index++
+	}
+}
+
+type VWireListNString []string
+
+func (VWireListNString) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireListNString"`
+}) {
+}
+
+func (x VWireListNString) VDLIsZero() bool {
+	return len(x) == 0
+}
+
+func (x VWireListNString) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireListNString)(nil))); err != nil {
+		return err
+	}
+	if err := enc.SetLenHint(len(x)); err != nil {
+		return err
+	}
+	for i := 0; i < len(x); i++ {
+		if err := enc.NextEntry(false); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x[i]); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextEntry(true); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireListNString) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible list %T, from %v", *x, dec.Type())
+	}
+	switch len := dec.LenHint(); {
+	case len > 0:
+		*x = make(VWireListNString, 0, len)
+	default:
+		*x = nil
+	}
+	for {
+		switch done, err := dec.NextEntry(); {
+		case err != nil:
+			return err
+		case done:
+			return dec.FinishValue()
+		}
+		var elem string
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if elem, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = append(*x, elem)
+	}
+}
+
+type VWireListNStruct []string
+
+func (VWireListNStruct) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireListNStruct"`
+}) {
+}
+
+func (x VWireListNStruct) VDLIsZero() bool {
+	return len(x) == 0
+}
+
+func (x VWireListNStruct) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireListNStruct)(nil))); err != nil {
+		return err
+	}
+	if err := enc.SetLenHint(len(x)); err != nil {
+		return err
+	}
+	for i := 0; i < len(x); i++ {
+		if err := enc.NextEntry(false); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x[i]); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextEntry(true); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireListNStruct) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible list %T, from %v", *x, dec.Type())
+	}
+	switch len := dec.LenHint(); {
+	case len > 0:
+		*x = make(VWireListNStruct, 0, len)
+	default:
+		*x = nil
+	}
+	for {
+		switch done, err := dec.NextEntry(); {
+		case err != nil:
+			return err
+		case done:
+			return dec.FinishValue()
+		}
+		var elem string
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if elem, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = append(*x, elem)
+	}
+}
+
+type VWireStructNString struct {
+	X string
+}
+
+func (VWireStructNString) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStructNString"`
+}) {
+}
+
+func (x VWireStructNString) VDLIsZero() bool {
+	return x == VWireStructNString{}
+}
+
+func (x VWireStructNString) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStructNString)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.X != "" {
+		if err := enc.NextField("X"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.X); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStructNString) VDLRead(dec vdl.Decoder) error {
+	*x = VWireStructNString{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "X":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.X, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type VWireStructNStruct struct {
+	X string
+}
+
+func (VWireStructNStruct) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStructNStruct"`
+}) {
+}
+
+func (x VWireStructNStruct) VDLIsZero() bool {
+	return x == VWireStructNStruct{}
+}
+
+func (x VWireStructNStruct) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStructNStruct)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.X != "" {
+		if err := enc.NextField("X"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.X); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStructNStruct) VDLRead(dec vdl.Decoder) error {
+	*x = VWireStructNStruct{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "X":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.X, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type VWireStructNArray struct {
+	X string
+}
+
+func (VWireStructNArray) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStructNArray"`
+}) {
+}
+
+func (x VWireStructNArray) VDLIsZero() bool {
+	return x == VWireStructNArray{}
+}
+
+func (x VWireStructNArray) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStructNArray)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.X != "" {
+		if err := enc.NextField("X"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.X); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStructNArray) VDLRead(dec vdl.Decoder) error {
+	*x = VWireStructNArray{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "X":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.X, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type VWireStructNSlice struct {
+	X string
+}
+
+func (VWireStructNSlice) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStructNSlice"`
+}) {
+}
+
+func (x VWireStructNSlice) VDLIsZero() bool {
+	return x == VWireStructNSlice{}
+}
+
+func (x VWireStructNSlice) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStructNSlice)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.X != "" {
+		if err := enc.NextField("X"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.X); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStructNSlice) VDLRead(dec vdl.Decoder) error {
+	*x = VWireStructNSlice{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "X":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.X, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type VWireStructNPointer struct {
+	X string
+}
+
+func (VWireStructNPointer) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStructNPointer"`
+}) {
+}
+
+func (x VWireStructNPointer) VDLIsZero() bool {
+	return x == VWireStructNPointer{}
+}
+
+func (x VWireStructNPointer) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStructNPointer)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.X != "" {
+		if err := enc.NextField("X"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.X); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStructNPointer) VDLRead(dec vdl.Decoder) error {
+	*x = VWireStructNPointer{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "X":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.X, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type VWireStructNIface struct {
+	X string
+}
+
+func (VWireStructNIface) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireStructNIface"`
+}) {
+}
+
+func (x VWireStructNIface) VDLIsZero() bool {
+	return x == VWireStructNIface{}
+}
+
+func (x VWireStructNIface) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireStructNIface)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.X != "" {
+		if err := enc.NextField("X"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.X); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireStructNIface) VDLRead(dec vdl.Decoder) error {
+	*x = VWireStructNIface{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "X":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.X, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+type (
+	// VWireUnionNString represents any single field of the VWireUnionNString union type.
+	VWireUnionNString interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the VWireUnionNString union type.
+		__VDLReflect(__VWireUnionNStringReflect)
+		VDLIsZero() bool
+		VDLWrite(vdl.Encoder) error
+	}
+	// VWireUnionNStringX represents field X of the VWireUnionNString union type.
+	VWireUnionNStringX struct{ Value string }
+	// __VWireUnionNStringReflect describes the VWireUnionNString union type.
+	__VWireUnionNStringReflect struct {
+		Name  string `vdl:"v.io/v23/vdl/vdltest.VWireUnionNString"`
+		Type  VWireUnionNString
+		Union struct {
+			X VWireUnionNStringX
+		}
+	}
+)
+
+func (x VWireUnionNStringX) Index() int                              { return 0 }
+func (x VWireUnionNStringX) Interface() interface{}                  { return x.Value }
+func (x VWireUnionNStringX) Name() string                            { return "X" }
+func (x VWireUnionNStringX) __VDLReflect(__VWireUnionNStringReflect) {}
+
+func (x VWireUnionNStringX) VDLIsZero() bool {
+	return x.Value == ""
+}
+
+func (x VWireUnionNStringX) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireUnionNString)(nil))); err != nil {
+		return err
+	}
+	if err := enc.NextField("X"); err != nil {
+		return err
+	}
+	if err := enc.StartValue(vdl.StringType); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.Value); err != nil {
+		return err
+	}
+	if err := enc.FinishValue(); err != nil {
+		return err
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func VDLReadVWireUnionNString(dec vdl.Decoder, x *VWireUnionNString) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x), dec.Type()) {
+		return fmt.Errorf("incompatible union %T, from %v", x, dec.Type())
+	}
+	f, err := dec.NextField()
+	if err != nil {
+		return err
+	}
+	switch f {
+	case "X":
+		var field VWireUnionNStringX
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if field.Value, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = field
+	case "":
+		return fmt.Errorf("missing field in union %T, from %v", x, dec.Type())
+	default:
+		return fmt.Errorf("field %q not in union %T, from %v", f, x, dec.Type())
+	}
+	switch f, err := dec.NextField(); {
+	case err != nil:
+		return err
+	case f != "":
+		return fmt.Errorf("extra field %q in union %T, from %v", f, x, dec.Type())
+	}
+	return dec.FinishValue()
+}
+
+type (
+	// VWireUnionNStruct represents any single field of the VWireUnionNStruct union type.
+	VWireUnionNStruct interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the VWireUnionNStruct union type.
+		__VDLReflect(__VWireUnionNStructReflect)
+		VDLIsZero() bool
+		VDLWrite(vdl.Encoder) error
+	}
+	// VWireUnionNStructX represents field X of the VWireUnionNStruct union type.
+	VWireUnionNStructX struct{ Value string }
+	// __VWireUnionNStructReflect describes the VWireUnionNStruct union type.
+	__VWireUnionNStructReflect struct {
+		Name  string `vdl:"v.io/v23/vdl/vdltest.VWireUnionNStruct"`
+		Type  VWireUnionNStruct
+		Union struct {
+			X VWireUnionNStructX
+		}
+	}
+)
+
+func (x VWireUnionNStructX) Index() int                              { return 0 }
+func (x VWireUnionNStructX) Interface() interface{}                  { return x.Value }
+func (x VWireUnionNStructX) Name() string                            { return "X" }
+func (x VWireUnionNStructX) __VDLReflect(__VWireUnionNStructReflect) {}
+
+func (x VWireUnionNStructX) VDLIsZero() bool {
+	return x.Value == ""
+}
+
+func (x VWireUnionNStructX) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireUnionNStruct)(nil))); err != nil {
+		return err
+	}
+	if err := enc.NextField("X"); err != nil {
+		return err
+	}
+	if err := enc.StartValue(vdl.StringType); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.Value); err != nil {
+		return err
+	}
+	if err := enc.FinishValue(); err != nil {
+		return err
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func VDLReadVWireUnionNStruct(dec vdl.Decoder, x *VWireUnionNStruct) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x), dec.Type()) {
+		return fmt.Errorf("incompatible union %T, from %v", x, dec.Type())
+	}
+	f, err := dec.NextField()
+	if err != nil {
+		return err
+	}
+	switch f {
+	case "X":
+		var field VWireUnionNStructX
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if field.Value, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = field
+	case "":
+		return fmt.Errorf("missing field in union %T, from %v", x, dec.Type())
+	default:
+		return fmt.Errorf("field %q not in union %T, from %v", f, x, dec.Type())
+	}
+	switch f, err := dec.NextField(); {
+	case err != nil:
+		return err
+	case f != "":
+		return fmt.Errorf("extra field %q in union %T, from %v", f, x, dec.Type())
+	}
+	return dec.FinishValue()
+}
+
+type (
+	// VWireUnionNArray represents any single field of the VWireUnionNArray union type.
+	VWireUnionNArray interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the VWireUnionNArray union type.
+		__VDLReflect(__VWireUnionNArrayReflect)
+		VDLIsZero() bool
+		VDLWrite(vdl.Encoder) error
+	}
+	// VWireUnionNArrayX represents field X of the VWireUnionNArray union type.
+	VWireUnionNArrayX struct{ Value string }
+	// __VWireUnionNArrayReflect describes the VWireUnionNArray union type.
+	__VWireUnionNArrayReflect struct {
+		Name  string `vdl:"v.io/v23/vdl/vdltest.VWireUnionNArray"`
+		Type  VWireUnionNArray
+		Union struct {
+			X VWireUnionNArrayX
+		}
+	}
+)
+
+func (x VWireUnionNArrayX) Index() int                             { return 0 }
+func (x VWireUnionNArrayX) Interface() interface{}                 { return x.Value }
+func (x VWireUnionNArrayX) Name() string                           { return "X" }
+func (x VWireUnionNArrayX) __VDLReflect(__VWireUnionNArrayReflect) {}
+
+func (x VWireUnionNArrayX) VDLIsZero() bool {
+	return x.Value == ""
+}
+
+func (x VWireUnionNArrayX) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireUnionNArray)(nil))); err != nil {
+		return err
+	}
+	if err := enc.NextField("X"); err != nil {
+		return err
+	}
+	if err := enc.StartValue(vdl.StringType); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.Value); err != nil {
+		return err
+	}
+	if err := enc.FinishValue(); err != nil {
+		return err
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func VDLReadVWireUnionNArray(dec vdl.Decoder, x *VWireUnionNArray) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x), dec.Type()) {
+		return fmt.Errorf("incompatible union %T, from %v", x, dec.Type())
+	}
+	f, err := dec.NextField()
+	if err != nil {
+		return err
+	}
+	switch f {
+	case "X":
+		var field VWireUnionNArrayX
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if field.Value, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = field
+	case "":
+		return fmt.Errorf("missing field in union %T, from %v", x, dec.Type())
+	default:
+		return fmt.Errorf("field %q not in union %T, from %v", f, x, dec.Type())
+	}
+	switch f, err := dec.NextField(); {
+	case err != nil:
+		return err
+	case f != "":
+		return fmt.Errorf("extra field %q in union %T, from %v", f, x, dec.Type())
+	}
+	return dec.FinishValue()
+}
+
+type (
+	// VWireUnionNSlice represents any single field of the VWireUnionNSlice union type.
+	VWireUnionNSlice interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the VWireUnionNSlice union type.
+		__VDLReflect(__VWireUnionNSliceReflect)
+		VDLIsZero() bool
+		VDLWrite(vdl.Encoder) error
+	}
+	// VWireUnionNSliceX represents field X of the VWireUnionNSlice union type.
+	VWireUnionNSliceX struct{ Value string }
+	// __VWireUnionNSliceReflect describes the VWireUnionNSlice union type.
+	__VWireUnionNSliceReflect struct {
+		Name  string `vdl:"v.io/v23/vdl/vdltest.VWireUnionNSlice"`
+		Type  VWireUnionNSlice
+		Union struct {
+			X VWireUnionNSliceX
+		}
+	}
+)
+
+func (x VWireUnionNSliceX) Index() int                             { return 0 }
+func (x VWireUnionNSliceX) Interface() interface{}                 { return x.Value }
+func (x VWireUnionNSliceX) Name() string                           { return "X" }
+func (x VWireUnionNSliceX) __VDLReflect(__VWireUnionNSliceReflect) {}
+
+func (x VWireUnionNSliceX) VDLIsZero() bool {
+	return x.Value == ""
+}
+
+func (x VWireUnionNSliceX) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireUnionNSlice)(nil))); err != nil {
+		return err
+	}
+	if err := enc.NextField("X"); err != nil {
+		return err
+	}
+	if err := enc.StartValue(vdl.StringType); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.Value); err != nil {
+		return err
+	}
+	if err := enc.FinishValue(); err != nil {
+		return err
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func VDLReadVWireUnionNSlice(dec vdl.Decoder, x *VWireUnionNSlice) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x), dec.Type()) {
+		return fmt.Errorf("incompatible union %T, from %v", x, dec.Type())
+	}
+	f, err := dec.NextField()
+	if err != nil {
+		return err
+	}
+	switch f {
+	case "X":
+		var field VWireUnionNSliceX
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if field.Value, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = field
+	case "":
+		return fmt.Errorf("missing field in union %T, from %v", x, dec.Type())
+	default:
+		return fmt.Errorf("field %q not in union %T, from %v", f, x, dec.Type())
+	}
+	switch f, err := dec.NextField(); {
+	case err != nil:
+		return err
+	case f != "":
+		return fmt.Errorf("extra field %q in union %T, from %v", f, x, dec.Type())
+	}
+	return dec.FinishValue()
+}
+
+type (
+	// VWireUnionNPointer represents any single field of the VWireUnionNPointer union type.
+	VWireUnionNPointer interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the VWireUnionNPointer union type.
+		__VDLReflect(__VWireUnionNPointerReflect)
+		VDLIsZero() bool
+		VDLWrite(vdl.Encoder) error
+	}
+	// VWireUnionNPointerX represents field X of the VWireUnionNPointer union type.
+	VWireUnionNPointerX struct{ Value string }
+	// __VWireUnionNPointerReflect describes the VWireUnionNPointer union type.
+	__VWireUnionNPointerReflect struct {
+		Name  string `vdl:"v.io/v23/vdl/vdltest.VWireUnionNPointer"`
+		Type  VWireUnionNPointer
+		Union struct {
+			X VWireUnionNPointerX
+		}
+	}
+)
+
+func (x VWireUnionNPointerX) Index() int                               { return 0 }
+func (x VWireUnionNPointerX) Interface() interface{}                   { return x.Value }
+func (x VWireUnionNPointerX) Name() string                             { return "X" }
+func (x VWireUnionNPointerX) __VDLReflect(__VWireUnionNPointerReflect) {}
+
+func (x VWireUnionNPointerX) VDLIsZero() bool {
+	return x.Value == ""
+}
+
+func (x VWireUnionNPointerX) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireUnionNPointer)(nil))); err != nil {
+		return err
+	}
+	if err := enc.NextField("X"); err != nil {
+		return err
+	}
+	if err := enc.StartValue(vdl.StringType); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.Value); err != nil {
+		return err
+	}
+	if err := enc.FinishValue(); err != nil {
+		return err
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func VDLReadVWireUnionNPointer(dec vdl.Decoder, x *VWireUnionNPointer) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x), dec.Type()) {
+		return fmt.Errorf("incompatible union %T, from %v", x, dec.Type())
+	}
+	f, err := dec.NextField()
+	if err != nil {
+		return err
+	}
+	switch f {
+	case "X":
+		var field VWireUnionNPointerX
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if field.Value, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = field
+	case "":
+		return fmt.Errorf("missing field in union %T, from %v", x, dec.Type())
+	default:
+		return fmt.Errorf("field %q not in union %T, from %v", f, x, dec.Type())
+	}
+	switch f, err := dec.NextField(); {
+	case err != nil:
+		return err
+	case f != "":
+		return fmt.Errorf("extra field %q in union %T, from %v", f, x, dec.Type())
+	}
+	return dec.FinishValue()
+}
+
+type (
+	// VWireUnionNIface represents any single field of the VWireUnionNIface union type.
+	VWireUnionNIface interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the VWireUnionNIface union type.
+		__VDLReflect(__VWireUnionNIfaceReflect)
+		VDLIsZero() bool
+		VDLWrite(vdl.Encoder) error
+	}
+	// VWireUnionNIfaceX represents field X of the VWireUnionNIface union type.
+	VWireUnionNIfaceX struct{ Value string }
+	// __VWireUnionNIfaceReflect describes the VWireUnionNIface union type.
+	__VWireUnionNIfaceReflect struct {
+		Name  string `vdl:"v.io/v23/vdl/vdltest.VWireUnionNIface"`
+		Type  VWireUnionNIface
+		Union struct {
+			X VWireUnionNIfaceX
+		}
+	}
+)
+
+func (x VWireUnionNIfaceX) Index() int                             { return 0 }
+func (x VWireUnionNIfaceX) Interface() interface{}                 { return x.Value }
+func (x VWireUnionNIfaceX) Name() string                           { return "X" }
+func (x VWireUnionNIfaceX) __VDLReflect(__VWireUnionNIfaceReflect) {}
+
+func (x VWireUnionNIfaceX) VDLIsZero() bool {
+	return x.Value == ""
+}
+
+func (x VWireUnionNIfaceX) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireUnionNIface)(nil))); err != nil {
+		return err
+	}
+	if err := enc.NextField("X"); err != nil {
+		return err
+	}
+	if err := enc.StartValue(vdl.StringType); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.Value); err != nil {
+		return err
+	}
+	if err := enc.FinishValue(); err != nil {
+		return err
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func VDLReadVWireUnionNIface(dec vdl.Decoder, x *VWireUnionNIface) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(x), dec.Type()) {
+		return fmt.Errorf("incompatible union %T, from %v", x, dec.Type())
+	}
+	f, err := dec.NextField()
+	if err != nil {
+		return err
+	}
+	switch f {
+	case "X":
+		var field VWireUnionNIfaceX
+		if err := dec.StartValue(); err != nil {
+			return err
+		}
+		var err error
+		if field.Value, err = dec.DecodeString(); err != nil {
+			return err
+		}
+		if err := dec.FinishValue(); err != nil {
+			return err
+		}
+		*x = field
+	case "":
+		return fmt.Errorf("missing field in union %T, from %v", x, dec.Type())
+	default:
+		return fmt.Errorf("field %q not in union %T, from %v", f, x, dec.Type())
+	}
+	switch f, err := dec.NextField(); {
+	case err != nil:
+		return err
+	case f != "":
+		return fmt.Errorf("extra field %q in union %T, from %v", f, x, dec.Type())
+	}
+	return dec.FinishValue()
+}
+
+// VWireAll contains all wire types, which will be represented as native types
+// in the generated code.
+type VWireAll struct {
+	BoolNBool      VNativeWireBoolNBool
+	BoolNString    VNativeWireBoolNString
+	BoolNStruct    VNativeWireBoolNStruct
+	IntNInt        VNativeWireIntNInt
+	IntNString     VNativeWireIntNString
+	IntNStruct     VNativeWireIntNStruct
+	StringNString  VNativeWireStringNString
+	StringNStruct  VNativeWireStringNStruct
+	ArrayNString   VNativeWireArrayNString
+	ArrayNStruct   VNativeWireArrayNStruct
+	ListNString    VNativeWireListNString
+	ListNStruct    VNativeWireListNStruct
+	StructNString  VNativeWireStructNString
+	StructNStruct  VNativeWireStructNStruct
+	StructNArray   VNativeWireStructNArray
+	StructNSlice   VNativeWireStructNSlice
+	StructNPointer VWireStructNPointer
+	StructNIface   VWireStructNIface
+	UnionNString   VNativeWireUnionNString
+	UnionNStruct   VNativeWireUnionNStruct
+	UnionNArray    VNativeWireUnionNArray
+	UnionNSlice    VNativeWireUnionNSlice
+	UnionNPointer  VWireUnionNPointer
+	UnionNIface    VWireUnionNIface
+}
+
+func (VWireAll) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.VWireAll"`
+}) {
+}
+
+func (x VWireAll) VDLIsZero() bool {
+	if x.BoolNBool != false {
+		return false
+	}
+	if x.BoolNString != "" {
+		return false
+	}
+	if x.BoolNStruct != (VNativeWireBoolNStruct{}) {
+		return false
+	}
+	if x.IntNInt != 0 {
+		return false
+	}
+	if x.IntNString != "" {
+		return false
+	}
+	if x.IntNStruct != (VNativeWireIntNStruct{}) {
+		return false
+	}
+	if x.StringNString != "" {
+		return false
+	}
+	if x.StringNStruct != (VNativeWireStringNStruct{}) {
+		return false
+	}
+	if x.ArrayNString != "" {
+		return false
+	}
+	if x.ArrayNStruct != (VNativeWireArrayNStruct{}) {
+		return false
+	}
+	if x.ListNString != "" {
+		return false
+	}
+	if x.ListNStruct != (VNativeWireListNStruct{}) {
+		return false
+	}
+	if x.StructNString != "" {
+		return false
+	}
+	if x.StructNStruct != (VNativeWireStructNStruct{}) {
+		return false
+	}
+	if x.StructNArray != (VNativeWireStructNArray{}) {
+		return false
+	}
+	if !x.StructNSlice.IsZero() {
+		return false
+	}
+	if x.StructNPointer != (VWireStructNPointer{}) {
+		return false
+	}
+	if x.StructNIface != (VWireStructNIface{}) {
+		return false
+	}
+	if x.UnionNString != "" {
+		return false
+	}
+	if x.UnionNStruct != (VNativeWireUnionNStruct{}) {
+		return false
+	}
+	if x.UnionNArray != (VNativeWireUnionNArray{}) {
+		return false
+	}
+	if !x.UnionNSlice.IsZero() {
+		return false
+	}
+	if x.UnionNPointer != nil && !x.UnionNPointer.VDLIsZero() {
+		return false
+	}
+	if x.UnionNIface != nil && !x.UnionNIface.VDLIsZero() {
+		return false
+	}
+	return true
+}
+
+func (x VWireAll) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*VWireAll)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.BoolNBool != false {
+		if err := enc.NextField("BoolNBool"); err != nil {
+			return err
+		}
+		var wire VWireBoolNBool
+		if err := VWireBoolNBoolFromNative(&wire, x.BoolNBool); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.BoolNString != "" {
+		if err := enc.NextField("BoolNString"); err != nil {
+			return err
+		}
+		var wire VWireBoolNString
+		if err := VWireBoolNStringFromNative(&wire, x.BoolNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.BoolNStruct != (VNativeWireBoolNStruct{}) {
+		if err := enc.NextField("BoolNStruct"); err != nil {
+			return err
+		}
+		var wire VWireBoolNStruct
+		if err := VWireBoolNStructFromNative(&wire, x.BoolNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.IntNInt != 0 {
+		if err := enc.NextField("IntNInt"); err != nil {
+			return err
+		}
+		var wire VWireIntNInt
+		if err := VWireIntNIntFromNative(&wire, x.IntNInt); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.IntNString != "" {
+		if err := enc.NextField("IntNString"); err != nil {
+			return err
+		}
+		var wire VWireIntNString
+		if err := VWireIntNStringFromNative(&wire, x.IntNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.IntNStruct != (VNativeWireIntNStruct{}) {
+		if err := enc.NextField("IntNStruct"); err != nil {
+			return err
+		}
+		var wire VWireIntNStruct
+		if err := VWireIntNStructFromNative(&wire, x.IntNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StringNString != "" {
+		if err := enc.NextField("StringNString"); err != nil {
+			return err
+		}
+		var wire VWireStringNString
+		if err := VWireStringNStringFromNative(&wire, x.StringNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StringNStruct != (VNativeWireStringNStruct{}) {
+		if err := enc.NextField("StringNStruct"); err != nil {
+			return err
+		}
+		var wire VWireStringNStruct
+		if err := VWireStringNStructFromNative(&wire, x.StringNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.ArrayNString != "" {
+		if err := enc.NextField("ArrayNString"); err != nil {
+			return err
+		}
+		var wire VWireArrayNString
+		if err := VWireArrayNStringFromNative(&wire, x.ArrayNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.ArrayNStruct != (VNativeWireArrayNStruct{}) {
+		if err := enc.NextField("ArrayNStruct"); err != nil {
+			return err
+		}
+		var wire VWireArrayNStruct
+		if err := VWireArrayNStructFromNative(&wire, x.ArrayNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.ListNString != "" {
+		if err := enc.NextField("ListNString"); err != nil {
+			return err
+		}
+		var wire VWireListNString
+		if err := VWireListNStringFromNative(&wire, x.ListNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.ListNStruct != (VNativeWireListNStruct{}) {
+		if err := enc.NextField("ListNStruct"); err != nil {
+			return err
+		}
+		var wire VWireListNStruct
+		if err := VWireListNStructFromNative(&wire, x.ListNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StructNString != "" {
+		if err := enc.NextField("StructNString"); err != nil {
+			return err
+		}
+		var wire VWireStructNString
+		if err := VWireStructNStringFromNative(&wire, x.StructNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StructNStruct != (VNativeWireStructNStruct{}) {
+		if err := enc.NextField("StructNStruct"); err != nil {
+			return err
+		}
+		var wire VWireStructNStruct
+		if err := VWireStructNStructFromNative(&wire, x.StructNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StructNArray != (VNativeWireStructNArray{}) {
+		if err := enc.NextField("StructNArray"); err != nil {
+			return err
+		}
+		var wire VWireStructNArray
+		if err := VWireStructNArrayFromNative(&wire, x.StructNArray); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if !x.StructNSlice.IsZero() {
+		if err := enc.NextField("StructNSlice"); err != nil {
+			return err
+		}
+		var wire VWireStructNSlice
+		if err := VWireStructNSliceFromNative(&wire, x.StructNSlice); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StructNPointer != (VWireStructNPointer{}) {
+		if err := enc.NextField("StructNPointer"); err != nil {
+			return err
+		}
+		if err := x.StructNPointer.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.StructNIface != (VWireStructNIface{}) {
+		if err := enc.NextField("StructNIface"); err != nil {
+			return err
+		}
+		if err := x.StructNIface.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.UnionNString != "" {
+		if err := enc.NextField("UnionNString"); err != nil {
+			return err
+		}
+		var wire VWireUnionNString
+		if err := VWireUnionNStringFromNative(&wire, x.UnionNString); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.UnionNStruct != (VNativeWireUnionNStruct{}) {
+		if err := enc.NextField("UnionNStruct"); err != nil {
+			return err
+		}
+		var wire VWireUnionNStruct
+		if err := VWireUnionNStructFromNative(&wire, x.UnionNStruct); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.UnionNArray != (VNativeWireUnionNArray{}) {
+		if err := enc.NextField("UnionNArray"); err != nil {
+			return err
+		}
+		var wire VWireUnionNArray
+		if err := VWireUnionNArrayFromNative(&wire, x.UnionNArray); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if !x.UnionNSlice.IsZero() {
+		if err := enc.NextField("UnionNSlice"); err != nil {
+			return err
+		}
+		var wire VWireUnionNSlice
+		if err := VWireUnionNSliceFromNative(&wire, x.UnionNSlice); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.UnionNPointer != nil && !x.UnionNPointer.VDLIsZero() {
+		if err := enc.NextField("UnionNPointer"); err != nil {
+			return err
+		}
+		if err := x.UnionNPointer.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.UnionNIface != nil && !x.UnionNIface.VDLIsZero() {
+		if err := enc.NextField("UnionNIface"); err != nil {
+			return err
+		}
+		if err := x.UnionNIface.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *VWireAll) VDLRead(dec vdl.Decoder) error {
+	*x = VWireAll{
+		UnionNPointer: VWireUnionNPointerX{},
+		UnionNIface:   VWireUnionNIfaceX{},
+	}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "BoolNBool":
+			var wire VWireBoolNBool
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireBoolNBoolToNative(wire, &x.BoolNBool); err != nil {
+				return err
+			}
+		case "BoolNString":
+			var wire VWireBoolNString
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireBoolNStringToNative(wire, &x.BoolNString); err != nil {
+				return err
+			}
+		case "BoolNStruct":
+			var wire VWireBoolNStruct
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireBoolNStructToNative(wire, &x.BoolNStruct); err != nil {
+				return err
+			}
+		case "IntNInt":
+			var wire VWireIntNInt
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireIntNIntToNative(wire, &x.IntNInt); err != nil {
+				return err
+			}
+		case "IntNString":
+			var wire VWireIntNString
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireIntNStringToNative(wire, &x.IntNString); err != nil {
+				return err
+			}
+		case "IntNStruct":
+			var wire VWireIntNStruct
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireIntNStructToNative(wire, &x.IntNStruct); err != nil {
+				return err
+			}
+		case "StringNString":
+			var wire VWireStringNString
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireStringNStringToNative(wire, &x.StringNString); err != nil {
+				return err
+			}
+		case "StringNStruct":
+			var wire VWireStringNStruct
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireStringNStructToNative(wire, &x.StringNStruct); err != nil {
+				return err
+			}
+		case "ArrayNString":
+			var wire VWireArrayNString
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireArrayNStringToNative(wire, &x.ArrayNString); err != nil {
+				return err
+			}
+		case "ArrayNStruct":
+			var wire VWireArrayNStruct
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireArrayNStructToNative(wire, &x.ArrayNStruct); err != nil {
+				return err
+			}
+		case "ListNString":
+			var wire VWireListNString
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireListNStringToNative(wire, &x.ListNString); err != nil {
+				return err
+			}
+		case "ListNStruct":
+			var wire VWireListNStruct
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireListNStructToNative(wire, &x.ListNStruct); err != nil {
+				return err
+			}
+		case "StructNString":
+			var wire VWireStructNString
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireStructNStringToNative(wire, &x.StructNString); err != nil {
+				return err
+			}
+		case "StructNStruct":
+			var wire VWireStructNStruct
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireStructNStructToNative(wire, &x.StructNStruct); err != nil {
+				return err
+			}
+		case "StructNArray":
+			var wire VWireStructNArray
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireStructNArrayToNative(wire, &x.StructNArray); err != nil {
+				return err
+			}
+		case "StructNSlice":
+			var wire VWireStructNSlice
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := VWireStructNSliceToNative(wire, &x.StructNSlice); err != nil {
+				return err
+			}
+		case "StructNPointer":
+			if err := x.StructNPointer.VDLRead(dec); err != nil {
+				return err
+			}
+		case "StructNIface":
+			if err := x.StructNIface.VDLRead(dec); err != nil {
+				return err
+			}
+		case "UnionNString":
+			var wire VWireUnionNString
+			if err := VDLReadVWireUnionNString(dec, &wire); err != nil {
+				return err
+			}
+			if err := VWireUnionNStringToNative(wire, &x.UnionNString); err != nil {
+				return err
+			}
+		case "UnionNStruct":
+			var wire VWireUnionNStruct
+			if err := VDLReadVWireUnionNStruct(dec, &wire); err != nil {
+				return err
+			}
+			if err := VWireUnionNStructToNative(wire, &x.UnionNStruct); err != nil {
+				return err
+			}
+		case "UnionNArray":
+			var wire VWireUnionNArray
+			if err := VDLReadVWireUnionNArray(dec, &wire); err != nil {
+				return err
+			}
+			if err := VWireUnionNArrayToNative(wire, &x.UnionNArray); err != nil {
+				return err
+			}
+		case "UnionNSlice":
+			var wire VWireUnionNSlice
+			if err := VDLReadVWireUnionNSlice(dec, &wire); err != nil {
+				return err
+			}
+			if err := VWireUnionNSliceToNative(wire, &x.UnionNSlice); err != nil {
+				return err
+			}
+		case "UnionNPointer":
+			if err := VDLReadVWireUnionNPointer(dec, &x.UnionNPointer); err != nil {
+				return err
+			}
+		case "UnionNIface":
+			if err := VDLReadVWireUnionNIface(dec, &x.UnionNIface); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
 type XBool bool
 
 func (XBool) __VDLReflect(struct {
@@ -24071,6 +26528,83 @@
 func (x XUnionDepth3_OptXStructDepth2_Set_Float64F6) __VDLReflect(__XUnionDepth3_OptXStructDepth2_Set_Float64Reflect) {
 }
 
+// XSelfCycle tests self-cyclic types.
+type XSelfCycle struct {
+	Data int64
+	Next *XSelfCycle
+}
+
+func (XSelfCycle) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.XSelfCycle"`
+}) {
+}
+
+// XMutualCycleB tests mutually cyclic types A and B.
+type XMutualCycleB struct {
+	Data int64
+	A    *XMutualCycleA
+}
+
+func (XMutualCycleB) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.XMutualCycleB"`
+}) {
+}
+
+// XMutualCycleA tests mutually cyclic types A and B.
+type XMutualCycleA struct {
+	Data int64
+	B    *XMutualCycleB
+}
+
+func (XMutualCycleA) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/vdl/vdltest.XMutualCycleA"`
+}) {
+}
+
+// Type-check native conversion functions.
+var (
+	_ func(VWireArrayNString, *VNativeWireArrayNString) error   = VWireArrayNStringToNative
+	_ func(*VWireArrayNString, VNativeWireArrayNString) error   = VWireArrayNStringFromNative
+	_ func(VWireArrayNStruct, *VNativeWireArrayNStruct) error   = VWireArrayNStructToNative
+	_ func(*VWireArrayNStruct, VNativeWireArrayNStruct) error   = VWireArrayNStructFromNative
+	_ func(VWireBoolNBool, *VNativeWireBoolNBool) error         = VWireBoolNBoolToNative
+	_ func(*VWireBoolNBool, VNativeWireBoolNBool) error         = VWireBoolNBoolFromNative
+	_ func(VWireBoolNString, *VNativeWireBoolNString) error     = VWireBoolNStringToNative
+	_ func(*VWireBoolNString, VNativeWireBoolNString) error     = VWireBoolNStringFromNative
+	_ func(VWireBoolNStruct, *VNativeWireBoolNStruct) error     = VWireBoolNStructToNative
+	_ func(*VWireBoolNStruct, VNativeWireBoolNStruct) error     = VWireBoolNStructFromNative
+	_ func(VWireIntNInt, *VNativeWireIntNInt) error             = VWireIntNIntToNative
+	_ func(*VWireIntNInt, VNativeWireIntNInt) error             = VWireIntNIntFromNative
+	_ func(VWireIntNString, *VNativeWireIntNString) error       = VWireIntNStringToNative
+	_ func(*VWireIntNString, VNativeWireIntNString) error       = VWireIntNStringFromNative
+	_ func(VWireIntNStruct, *VNativeWireIntNStruct) error       = VWireIntNStructToNative
+	_ func(*VWireIntNStruct, VNativeWireIntNStruct) error       = VWireIntNStructFromNative
+	_ func(VWireListNString, *VNativeWireListNString) error     = VWireListNStringToNative
+	_ func(*VWireListNString, VNativeWireListNString) error     = VWireListNStringFromNative
+	_ func(VWireListNStruct, *VNativeWireListNStruct) error     = VWireListNStructToNative
+	_ func(*VWireListNStruct, VNativeWireListNStruct) error     = VWireListNStructFromNative
+	_ func(VWireStringNString, *VNativeWireStringNString) error = VWireStringNStringToNative
+	_ func(*VWireStringNString, VNativeWireStringNString) error = VWireStringNStringFromNative
+	_ func(VWireStringNStruct, *VNativeWireStringNStruct) error = VWireStringNStructToNative
+	_ func(*VWireStringNStruct, VNativeWireStringNStruct) error = VWireStringNStructFromNative
+	_ func(VWireStructNArray, *VNativeWireStructNArray) error   = VWireStructNArrayToNative
+	_ func(*VWireStructNArray, VNativeWireStructNArray) error   = VWireStructNArrayFromNative
+	_ func(VWireStructNSlice, *VNativeWireStructNSlice) error   = VWireStructNSliceToNative
+	_ func(*VWireStructNSlice, VNativeWireStructNSlice) error   = VWireStructNSliceFromNative
+	_ func(VWireStructNString, *VNativeWireStructNString) error = VWireStructNStringToNative
+	_ func(*VWireStructNString, VNativeWireStructNString) error = VWireStructNStringFromNative
+	_ func(VWireStructNStruct, *VNativeWireStructNStruct) error = VWireStructNStructToNative
+	_ func(*VWireStructNStruct, VNativeWireStructNStruct) error = VWireStructNStructFromNative
+	_ func(VWireUnionNArray, *VNativeWireUnionNArray) error     = VWireUnionNArrayToNative
+	_ func(*VWireUnionNArray, VNativeWireUnionNArray) error     = VWireUnionNArrayFromNative
+	_ func(VWireUnionNSlice, *VNativeWireUnionNSlice) error     = VWireUnionNSliceToNative
+	_ func(*VWireUnionNSlice, VNativeWireUnionNSlice) error     = VWireUnionNSliceFromNative
+	_ func(VWireUnionNString, *VNativeWireUnionNString) error   = VWireUnionNStringToNative
+	_ func(*VWireUnionNString, VNativeWireUnionNString) error   = VWireUnionNStringFromNative
+	_ func(VWireUnionNStruct, *VNativeWireUnionNStruct) error   = VWireUnionNStructToNative
+	_ func(*VWireUnionNStruct, VNativeWireUnionNStruct) error   = VWireUnionNStructFromNative
+)
+
 //////////////////////////////////////////////////
 // Const definitions
 
@@ -57700,6 +60234,5306 @@
 			},
 		},
 	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VSelfCycle{}",
+		Target:      VSelfCycle{},
+		SourceLabel: "VSelfCycle{}",
+		Source:      VSelfCycle{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VSelfCycle{}",
+		Target:      VSelfCycle{},
+		SourceLabel: "VMutualCycleA{}",
+		Source:      VMutualCycleA{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VSelfCycle{}",
+		Target:      VSelfCycle{},
+		SourceLabel: "VMutualCycleB{}",
+		Source:      VMutualCycleB{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}",
+		Target: VSelfCycle{
+			Data: -123,
+			Next: &VSelfCycle{
+				Data: -123,
+				Next: &VSelfCycle{
+					Data: -123,
+					Next: &VSelfCycle{
+						Data: -123,
+					},
+				},
+			},
+		},
+		SourceLabel: "VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}",
+		Source: VSelfCycle{
+			Data: -123,
+			Next: &VSelfCycle{
+				Data: -123,
+				Next: &VSelfCycle{
+					Data: -123,
+					Next: &VSelfCycle{
+						Data: -123,
+					},
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VSelfCycle{Data: -3933048656192887342, Next: {Data: -1666879701135447875, Next: {}}}",
+		Target: VSelfCycle{
+			Data: -3933048656192887342,
+			Next: &VSelfCycle{
+				Data: -1666879701135447875,
+				Next: &VSelfCycle{},
+			},
+		},
+		SourceLabel: "VSelfCycle{Data: -3933048656192887342, Next: {Data: -1666879701135447875, Next: {}}}",
+		Source: VSelfCycle{
+			Data: -3933048656192887342,
+			Next: &VSelfCycle{
+				Data: -1666879701135447875,
+				Next: &VSelfCycle{},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VMutualCycleB{}",
+		Target:      VMutualCycleB{},
+		SourceLabel: "VMutualCycleB{}",
+		Source:      VMutualCycleB{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VMutualCycleB{}",
+		Target:      VMutualCycleB{},
+		SourceLabel: "VSelfCycle{}",
+		Source:      VSelfCycle{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VMutualCycleB{}",
+		Target:      VMutualCycleB{},
+		SourceLabel: "?VStructEmpty{}",
+		Source:      &VStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}",
+		Target: VMutualCycleB{
+			Data: -123,
+			A: &VMutualCycleA{
+				Data: -123,
+				B: &VMutualCycleB{
+					Data: -123,
+					A: &VMutualCycleA{
+						Data: -123,
+					},
+				},
+			},
+		},
+		SourceLabel: "VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}",
+		Source: VMutualCycleB{
+			Data: -123,
+			A: &VMutualCycleA{
+				Data: -123,
+				B: &VMutualCycleB{
+					Data: -123,
+					A: &VMutualCycleA{
+						Data: -123,
+					},
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VMutualCycleB{Data: 3315306687289648358, A: {B: {Data: -830867813984030735}}}",
+		Target: VMutualCycleB{
+			Data: 3315306687289648358,
+			A: &VMutualCycleA{
+				B: &VMutualCycleB{
+					Data: -830867813984030735,
+				},
+			},
+		},
+		SourceLabel: "VMutualCycleB{Data: 3315306687289648358, A: {B: {Data: -830867813984030735}}}",
+		Source: VMutualCycleB{
+			Data: 3315306687289648358,
+			A: &VMutualCycleA{
+				B: &VMutualCycleB{
+					Data: -830867813984030735,
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VMutualCycleA{}",
+		Target:      VMutualCycleA{},
+		SourceLabel: "VMutualCycleA{}",
+		Source:      VMutualCycleA{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VMutualCycleA{}",
+		Target:      VMutualCycleA{},
+		SourceLabel: "VSelfCycle{}",
+		Source:      VSelfCycle{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VMutualCycleA{}",
+		Target:      VMutualCycleA{},
+		SourceLabel: "?VStructEmpty{}",
+		Source:      &VStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}",
+		Target: VMutualCycleA{
+			Data: -123,
+			B: &VMutualCycleB{
+				Data: -123,
+				A: &VMutualCycleA{
+					Data: -123,
+					B: &VMutualCycleB{
+						Data: -123,
+					},
+				},
+			},
+		},
+		SourceLabel: "VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}",
+		Source: VMutualCycleA{
+			Data: -123,
+			B: &VMutualCycleB{
+				Data: -123,
+				A: &VMutualCycleA{
+					Data: -123,
+					B: &VMutualCycleB{
+						Data: -123,
+					},
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VMutualCycleA{Data: -1454793165023012937, B: {}}",
+		Target: VMutualCycleA{
+			Data: -1454793165023012937,
+			B:    &VMutualCycleB{},
+		},
+		SourceLabel: "VMutualCycleA{Data: -1454793165023012937, B: {}}",
+		Source: VMutualCycleA{
+			Data: -1454793165023012937,
+			B:    &VMutualCycleB{},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNBool(false)",
+		Target:      VNativeWireBoolNBool(false),
+		SourceLabel: "VWireBoolNBool(false)",
+		Source:      VNativeWireBoolNBool(false),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNBool(false)",
+		Target:      VNativeWireBoolNBool(false),
+		SourceLabel: "VWireBoolNString(false)",
+		Source:      VNativeWireBoolNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNBool(false)",
+		Target:      VNativeWireBoolNBool(false),
+		SourceLabel: "VWireBoolNStruct(false)",
+		Source:      VNativeWireBoolNStruct{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireBoolNBool(true)",
+		Target: func() VNativeWireBoolNBool {
+			var native VNativeWireBoolNBool
+			wire := VWireBoolNBool(true)
+			if err := VWireBoolNBoolToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireBoolNBool(true)",
+		Source: func() VNativeWireBoolNBool {
+			var native VNativeWireBoolNBool
+			wire := VWireBoolNBool(true)
+			if err := VWireBoolNBoolToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireBoolNBool(true)",
+		Target: func() VNativeWireBoolNBool {
+			var native VNativeWireBoolNBool
+			wire := VWireBoolNBool(true)
+			if err := VWireBoolNBoolToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireBoolNStruct(true)",
+		Source: func() VNativeWireBoolNStruct {
+			var native VNativeWireBoolNStruct
+			wire := VWireBoolNStruct(true)
+			if err := VWireBoolNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNString(false)",
+		Target:      VNativeWireBoolNString(""),
+		SourceLabel: "VWireBoolNString(false)",
+		Source:      VNativeWireBoolNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNString(false)",
+		Target:      VNativeWireBoolNString(""),
+		SourceLabel: "VWireBoolNStruct(false)",
+		Source:      VNativeWireBoolNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNString(false)",
+		Target:      VNativeWireBoolNString(""),
+		SourceLabel: "false",
+		Source:      false,
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireBoolNString(true)",
+		Target: func() VNativeWireBoolNString {
+			var native VNativeWireBoolNString
+			wire := VWireBoolNString(true)
+			if err := VWireBoolNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireBoolNString(true)",
+		Source: func() VNativeWireBoolNString {
+			var native VNativeWireBoolNString
+			wire := VWireBoolNString(true)
+			if err := VWireBoolNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireBoolNString(true)",
+		Target: func() VNativeWireBoolNString {
+			var native VNativeWireBoolNString
+			wire := VWireBoolNString(true)
+			if err := VWireBoolNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireBoolNBool(true)",
+		Source: func() VNativeWireBoolNBool {
+			var native VNativeWireBoolNBool
+			wire := VWireBoolNBool(true)
+			if err := VWireBoolNBoolToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNStruct(false)",
+		Target:      VNativeWireBoolNStruct{},
+		SourceLabel: "VWireBoolNStruct(false)",
+		Source:      VNativeWireBoolNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNStruct(false)",
+		Target:      VNativeWireBoolNStruct{},
+		SourceLabel: "VWireBoolNString(false)",
+		Source:      VNativeWireBoolNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireBoolNStruct(false)",
+		Target:      VNativeWireBoolNStruct{},
+		SourceLabel: "false",
+		Source:      false,
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireBoolNStruct(true)",
+		Target: func() VNativeWireBoolNStruct {
+			var native VNativeWireBoolNStruct
+			wire := VWireBoolNStruct(true)
+			if err := VWireBoolNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireBoolNStruct(true)",
+		Source: func() VNativeWireBoolNStruct {
+			var native VNativeWireBoolNStruct
+			wire := VWireBoolNStruct(true)
+			if err := VWireBoolNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireBoolNStruct(true)",
+		Target: func() VNativeWireBoolNStruct {
+			var native VNativeWireBoolNStruct
+			wire := VWireBoolNStruct(true)
+			if err := VWireBoolNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "true",
+		Source:      true,
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireIntNInt(0)",
+		Target:      VNativeWireIntNInt(0),
+		SourceLabel: "VWireIntNInt(0)",
+		Source:      VNativeWireIntNInt(0),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireIntNInt(0)",
+		Target:      VNativeWireIntNInt(0),
+		SourceLabel: "int64(0)",
+		Source:      int64(0),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireIntNInt(0)",
+		Target:      VNativeWireIntNInt(0),
+		SourceLabel: "uint16(0)",
+		Source:      uint16(0),
+	},
+	{
+		IsCanonical: true,
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(2147483647)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(2147483647)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(2147483647)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint32(2147483647)",
+		Source:      VUint32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint64(2147483647)",
+		Source:      VUint64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(2147483647)",
+		Source:      VInt32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(2147483647)",
+		Source:      VInt64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(2.147483647e+09)",
+		Source:      VFloat64(2.147483647e+09),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "uint64(2147483647)",
+		Source:      uint64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNInt(2147483647)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "float64(2.147483647e+09)",
+		Source:      float64(2.147483647e+09),
+	},
+	{
+		IsCanonical: true,
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(1)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(1)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(1)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VByte(1)",
+		Source:      VByte(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint16(1)",
+		Source:      VUint16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint32(1)",
+		Source:      VUint32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint64(1)",
+		Source:      VUint64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt8(1)",
+		Source:      VInt8(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt16(1)",
+		Source:      VInt16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(1)",
+		Source:      VInt32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(1)",
+		Source:      VInt64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat32(1)",
+		Source:      VFloat32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(1)",
+		Source:      VFloat64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "uint64(1)",
+		Source:      uint64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNInt(1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "uint32(1)",
+		Source:      uint32(1),
+	},
+	{
+		IsCanonical: true,
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-2147483648)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-2147483648)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-2147483648)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(-2147483648)",
+		Source:      VInt32(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(-2147483648)",
+		Source:      VInt64(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-2.147483648e+09)",
+		Source:      VFloat64(-2.147483648e+09),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int64(-2147483648)",
+		Source:      int64(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNInt(-2147483648)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int32(-2147483648)",
+		Source:      int32(-2147483648),
+	},
+	{
+		IsCanonical: true,
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-1)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-1)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-1)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt8(-1)",
+		Source:      VInt8(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt16(-1)",
+		Source:      VInt16(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(-1)",
+		Source:      VInt32(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(-1)",
+		Source:      VInt64(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat32(-1)",
+		Source:      VFloat32(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-1)",
+		Source:      VFloat64(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int8(-1)",
+		Source:      int8(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNInt(-1)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int16(-1)",
+		Source:      int16(-1),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireIntNInt(-123)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-123)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-123)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-123)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireIntNInt(-123)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-123)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int8(-123)",
+		Source:      int8(-123),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireIntNInt(-456364020)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-456364020)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-456364020)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-456364020)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireIntNInt(-456364020)",
+		Target: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-456364020)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-456364020)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-456364020)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireIntNString(0)",
+		Target:      VNativeWireIntNString(""),
+		SourceLabel: "VWireIntNString(0)",
+		Source:      VNativeWireIntNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireIntNString(0)",
+		Target:      VNativeWireIntNString(""),
+		SourceLabel: "int64(0)",
+		Source:      int64(0),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireIntNString(0)",
+		Target:      VNativeWireIntNString(""),
+		SourceLabel: "VUint32(0)",
+		Source:      VUint32(0),
+	},
+	{
+		IsCanonical: true,
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(2147483647)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(2147483647)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(2147483647)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint32(2147483647)",
+		Source:      VUint32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint64(2147483647)",
+		Source:      VUint64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(2147483647)",
+		Source:      VInt32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(2147483647)",
+		Source:      VInt64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(2.147483647e+09)",
+		Source:      VFloat64(2.147483647e+09),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int32(2147483647)",
+		Source:      int32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNString(2147483647)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "float64(2.147483647e+09)",
+		Source:      float64(2.147483647e+09),
+	},
+	{
+		IsCanonical: true,
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(1)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(1)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(1)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VByte(1)",
+		Source:      VByte(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint16(1)",
+		Source:      VUint16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint32(1)",
+		Source:      VUint32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint64(1)",
+		Source:      VUint64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt8(1)",
+		Source:      VInt8(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt16(1)",
+		Source:      VInt16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(1)",
+		Source:      VInt32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(1)",
+		Source:      VInt64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat32(1)",
+		Source:      VFloat32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(1)",
+		Source:      VFloat64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int64(1)",
+		Source:      int64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNString(1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int16(1)",
+		Source:      int16(1),
+	},
+	{
+		IsCanonical: true,
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-2147483648)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-2147483648)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-2147483648)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(-2147483648)",
+		Source:      VInt32(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(-2147483648)",
+		Source:      VInt64(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-2.147483648e+09)",
+		Source:      VFloat64(-2.147483648e+09),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int64(-2147483648)",
+		Source:      int64(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNString(-2147483648)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int32(-2147483648)",
+		Source:      int32(-2147483648),
+	},
+	{
+		IsCanonical: true,
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-1)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-1)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-1)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt8(-1)",
+		Source:      VInt8(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt16(-1)",
+		Source:      VInt16(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(-1)",
+		Source:      VInt32(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(-1)",
+		Source:      VInt64(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat32(-1)",
+		Source:      VFloat32(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-1)",
+		Source:      VFloat64(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int8(-1)",
+		Source:      int8(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNString(-1)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int64(-1)",
+		Source:      int64(-1),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireIntNString(-123)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-123)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-123)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-123)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireIntNString(-123)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-123)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-123)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-123)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireIntNString(891620478)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(891620478)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(891620478)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(891620478)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireIntNString(891620478)",
+		Target: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(891620478)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(891620478)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(891620478)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireIntNStruct(0)",
+		Target:      VNativeWireIntNStruct{},
+		SourceLabel: "VWireIntNStruct(0)",
+		Source:      VNativeWireIntNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireIntNStruct(0)",
+		Target:      VNativeWireIntNStruct{},
+		SourceLabel: "float32(0)",
+		Source:      float32(0),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireIntNStruct(0)",
+		Target:      VNativeWireIntNStruct{},
+		SourceLabel: "VUint64(0)",
+		Source:      VUint64(0),
+	},
+	{
+		IsCanonical: true,
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(2147483647)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(2147483647)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(2147483647)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(2147483647)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(2147483647)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint32(2147483647)",
+		Source:      VUint32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint64(2147483647)",
+		Source:      VUint64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(2147483647)",
+		Source:      VInt32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(2147483647)",
+		Source:      VInt64(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(2.147483647e+09)",
+		Source:      VFloat64(2.147483647e+09),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "uint32(2147483647)",
+		Source:      uint32(2147483647),
+	},
+	{
+		Label:       "+Max",
+		TargetLabel: "VWireIntNStruct(2147483647)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(2147483647)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int64(2147483647)",
+		Source:      int64(2147483647),
+	},
+	{
+		IsCanonical: true,
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(1)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(1)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(1)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VByte(1)",
+		Source:      VByte(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint16(1)",
+		Source:      VUint16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint32(1)",
+		Source:      VUint32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VUint64(1)",
+		Source:      VUint64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt8(1)",
+		Source:      VInt8(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt16(1)",
+		Source:      VInt16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(1)",
+		Source:      VInt32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(1)",
+		Source:      VInt64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat32(1)",
+		Source:      VFloat32(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(1)",
+		Source:      VFloat64(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "uint16(1)",
+		Source:      uint16(1),
+	},
+	{
+		Label:       "+Min",
+		TargetLabel: "VWireIntNStruct(1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int16(1)",
+		Source:      int16(1),
+	},
+	{
+		IsCanonical: true,
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-2147483648)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-2147483648)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-2147483648)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-2147483648)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-2147483648)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(-2147483648)",
+		Source:      VInt32(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(-2147483648)",
+		Source:      VInt64(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-2.147483648e+09)",
+		Source:      VFloat64(-2.147483648e+09),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int32(-2147483648)",
+		Source:      int32(-2147483648),
+	},
+	{
+		Label:       "-Max",
+		TargetLabel: "VWireIntNStruct(-2147483648)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-2147483648)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "float64(-2.147483648e+09)",
+		Source:      float64(-2.147483648e+09),
+	},
+	{
+		IsCanonical: true,
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-1)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNInt(-1)",
+		Source: func() VNativeWireIntNInt {
+			var native VNativeWireIntNInt
+			wire := VWireIntNInt(-1)
+			if err := VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNString(-1)",
+		Source: func() VNativeWireIntNString {
+			var native VNativeWireIntNString
+			wire := VWireIntNString(-1)
+			if err := VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt8(-1)",
+		Source:      VInt8(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt16(-1)",
+		Source:      VInt16(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt32(-1)",
+		Source:      VInt32(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VInt64(-1)",
+		Source:      VInt64(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat32(-1)",
+		Source:      VFloat32(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-1)",
+		Source:      VFloat64(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int16(-1)",
+		Source:      int16(-1),
+	},
+	{
+		Label:       "-Min",
+		TargetLabel: "VWireIntNStruct(-1)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-1)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "float32(-1)",
+		Source:      float32(-1),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireIntNStruct(-123)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-123)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-123)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-123)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireIntNStruct(-123)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-123)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VFloat64(-123)",
+		Source:      VFloat64(-123),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireIntNStruct(-472003459)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-472003459)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireIntNStruct(-472003459)",
+		Source: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-472003459)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireIntNStruct(-472003459)",
+		Target: func() VNativeWireIntNStruct {
+			var native VNativeWireIntNStruct
+			wire := VWireIntNStruct(-472003459)
+			if err := VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "int64(-472003459)",
+		Source:      int64(-472003459),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStringNString(\"\")",
+		Target:      VNativeWireStringNString(""),
+		SourceLabel: "VWireStringNString(\"\")",
+		Source:      VNativeWireStringNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStringNString(\"\")",
+		Target:      VNativeWireStringNString(""),
+		SourceLabel: "\"\"",
+		Source:      "",
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStringNString(\"\")",
+		Target:      VNativeWireStringNString(""),
+		SourceLabel: "VWireStringNStruct(\"\")",
+		Source:      VNativeWireStringNStruct{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStringNString(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Target: func() VNativeWireStringNString {
+			var native VNativeWireStringNString
+			wire := VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+			if err := VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStringNString(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Source: func() VNativeWireStringNString {
+			var native VNativeWireStringNString
+			wire := VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+			if err := VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStringNString(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Target: func() VNativeWireStringNString {
+			var native VNativeWireStringNString
+			wire := VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+			if err := VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VString(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Source:      VString("abcdeΔΘΠΣΦ王普澤世界"),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStringNString(\"cde\")",
+		Target: func() VNativeWireStringNString {
+			var native VNativeWireStringNString
+			wire := VWireStringNString("cde")
+			if err := VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStringNString(\"cde\")",
+		Source: func() VNativeWireStringNString {
+			var native VNativeWireStringNString
+			wire := VWireStringNString("cde")
+			if err := VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStringNString(\"cde\")",
+		Target: func() VNativeWireStringNString {
+			var native VNativeWireStringNString
+			wire := VWireStringNString("cde")
+			if err := VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "\"cde\"",
+		Source:      "cde",
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStringNStruct(\"\")",
+		Target:      VNativeWireStringNStruct{},
+		SourceLabel: "VWireStringNStruct(\"\")",
+		Source:      VNativeWireStringNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStringNStruct(\"\")",
+		Target:      VNativeWireStringNStruct{},
+		SourceLabel: "VString(\"\")",
+		Source:      VString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStringNStruct(\"\")",
+		Target:      VNativeWireStringNStruct{},
+		SourceLabel: "VWireStringNString(\"\")",
+		Source:      VNativeWireStringNString(""),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Target: func() VNativeWireStringNStruct {
+			var native VNativeWireStringNStruct
+			wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+			if err := VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Source: func() VNativeWireStringNStruct {
+			var native VNativeWireStringNStruct
+			wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+			if err := VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Target: func() VNativeWireStringNStruct {
+			var native VNativeWireStringNStruct
+			wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+			if err := VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "\"abcdeΔΘΠΣΦ王普澤世界\"",
+		Source:      "abcdeΔΘΠΣΦ王普澤世界",
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤\")",
+		Target: func() VNativeWireStringNStruct {
+			var native VNativeWireStringNStruct
+			wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤")
+			if err := VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤\")",
+		Source: func() VNativeWireStringNStruct {
+			var native VNativeWireStringNStruct
+			wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤")
+			if err := VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤\")",
+		Target: func() VNativeWireStringNStruct {
+			var native VNativeWireStringNStruct
+			wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤")
+			if err := VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "\"abcdeΔΘΠΣΦ王普澤\"",
+		Source:      "abcdeΔΘΠΣΦ王普澤",
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireArrayNString{}",
+		Target:      VNativeWireArrayNString(""),
+		SourceLabel: "VWireArrayNString{}",
+		Source:      VNativeWireArrayNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireArrayNString{}",
+		Target:      VNativeWireArrayNString(""),
+		SourceLabel: "[]string{\"\"}",
+		Source: []string{
+			"",
+		},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireArrayNString{}",
+		Target:      VNativeWireArrayNString(""),
+		SourceLabel: "VWireListNString{\"\"}",
+		Source: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireArrayNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireArrayNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireArrayNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VList_String{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VList_String{
+			"abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireArrayNString{\"a\"}",
+		Target: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"a",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireArrayNString{\"a\"}",
+		Source: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"a",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireArrayNString{\"a\"}",
+		Target: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"a",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VList_String{\"a\"}",
+		Source: VList_String{
+			"a",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireArrayNStruct{}",
+		Target:      VNativeWireArrayNStruct{},
+		SourceLabel: "VWireArrayNStruct{}",
+		Source:      VNativeWireArrayNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireArrayNStruct{}",
+		Target:      VNativeWireArrayNStruct{},
+		SourceLabel: "[]string{\"\"}",
+		Source: []string{
+			"",
+		},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireArrayNStruct{}",
+		Target:      VNativeWireArrayNStruct{},
+		SourceLabel: "[]VString{\"\"}",
+		Source: []VString{
+			"",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireArrayNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireArrayNStruct {
+			var native VNativeWireArrayNStruct
+			wire := VWireArrayNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireArrayNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireArrayNStruct {
+			var native VNativeWireArrayNStruct
+			wire := VWireArrayNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireArrayNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireArrayNStruct {
+			var native VNativeWireArrayNStruct
+			wire := VWireArrayNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VList_Any{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VList_Any{
+			"abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireArrayNStruct{\"cdeΔΘΠΣ\"}",
+		Target: func() VNativeWireArrayNStruct {
+			var native VNativeWireArrayNStruct
+			wire := VWireArrayNStruct{
+				"cdeΔΘΠΣ",
+			}
+			if err := VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireArrayNStruct{\"cdeΔΘΠΣ\"}",
+		Source: func() VNativeWireArrayNStruct {
+			var native VNativeWireArrayNStruct
+			wire := VWireArrayNStruct{
+				"cdeΔΘΠΣ",
+			}
+			if err := VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireArrayNStruct{\"cdeΔΘΠΣ\"}",
+		Target: func() VNativeWireArrayNStruct {
+			var native VNativeWireArrayNStruct
+			wire := VWireArrayNStruct{
+				"cdeΔΘΠΣ",
+			}
+			if err := VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireListNStruct{\"cdeΔΘΠΣ\"}",
+		Source: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"cdeΔΘΠΣ",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireListNString{}",
+		Target:      VNativeWireListNString(""),
+		SourceLabel: "VWireListNString{}",
+		Source:      VNativeWireListNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireListNString{}",
+		Target:      VNativeWireListNString(""),
+		SourceLabel: "[]VString{}",
+		Source:      []VString(nil),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireListNString{}",
+		Target:      VNativeWireListNString(""),
+		SourceLabel: "[]VEnumAbc{}",
+		Source:      []VEnumAbc(nil),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireListNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireListNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireListNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VArray1_String{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VArray1_String{
+			"abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireListNString{\"de\"}",
+		Target: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"de",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireListNString{\"de\"}",
+		Source: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"de",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireListNString{\"de\"}",
+		Target: func() VNativeWireListNString {
+			var native VNativeWireListNString
+			wire := VWireListNString{
+				"de",
+			}
+			if err := VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireListNStruct{\"de\"}",
+		Source: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"de",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireListNStruct{}",
+		Target:      VNativeWireListNStruct{},
+		SourceLabel: "VWireListNStruct{}",
+		Source:      VNativeWireListNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireListNStruct{}",
+		Target:      VNativeWireListNStruct{},
+		SourceLabel: "VList_VString{}",
+		Source:      VList_VString(nil),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireListNStruct{}",
+		Target:      VNativeWireListNStruct{},
+		SourceLabel: "[]VEnumAbc{}",
+		Source:      []VEnumAbc(nil),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireListNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireListNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireListNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireArrayNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireArrayNString {
+			var native VNativeWireArrayNString
+			wire := VWireArrayNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireListNStruct{\"deΔΘΠΣΦ王普\", \"澤世\", \"bcdeΔΘΠΣΦ王\"}",
+		Target: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"deΔΘΠΣΦ王普",
+				"澤世",
+				"bcdeΔΘΠΣΦ王",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireListNStruct{\"deΔΘΠΣΦ王普\", \"澤世\", \"bcdeΔΘΠΣΦ王\"}",
+		Source: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"deΔΘΠΣΦ王普",
+				"澤世",
+				"bcdeΔΘΠΣΦ王",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireListNStruct{\"deΔΘΠΣΦ王普\", \"澤世\", \"bcdeΔΘΠΣΦ王\"}",
+		Target: func() VNativeWireListNStruct {
+			var native VNativeWireListNStruct
+			wire := VWireListNStruct{
+				"deΔΘΠΣΦ王普",
+				"澤世",
+				"bcdeΔΘΠΣΦ王",
+			}
+			if err := VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "[]any{\"deΔΘΠΣΦ王普\", \"澤世\", \"bcdeΔΘΠΣΦ王\"}",
+		Source: []interface{}{
+			"deΔΘΠΣΦ王普",
+			"澤世",
+			"bcdeΔΘΠΣΦ王",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStructNString{}",
+		Target:      VNativeWireStructNString(""),
+		SourceLabel: "VWireStructNString{}",
+		Source:      VNativeWireStructNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNString{}",
+		Target:      VNativeWireStructNString(""),
+		SourceLabel: "VWireStructNArray{}",
+		Source:      VNativeWireStructNArray{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNString{}",
+		Target:      VNativeWireStructNString(""),
+		SourceLabel: "VWireStructNPointer{}",
+		Source:      VWireStructNPointer{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStructNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNString {
+			var native VNativeWireStructNString
+			wire := VWireStructNString{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireStructNString {
+			var native VNativeWireStructNString
+			wire := VWireStructNString{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStructNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNString {
+			var native VNativeWireStructNString
+			wire := VWireStructNString{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStructNString{X: \"ΘΠΣΦ\"}",
+		Target: func() VNativeWireStructNString {
+			var native VNativeWireStructNString
+			wire := VWireStructNString{
+				X: "ΘΠΣΦ",
+			}
+			if err := VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNString{X: \"ΘΠΣΦ\"}",
+		Source: func() VNativeWireStructNString {
+			var native VNativeWireStructNString
+			wire := VWireStructNString{
+				X: "ΘΠΣΦ",
+			}
+			if err := VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStructNString{X: \"ΘΠΣΦ\"}",
+		Target: func() VNativeWireStructNString {
+			var native VNativeWireStructNString
+			wire := VWireStructNString{
+				X: "ΘΠΣΦ",
+			}
+			if err := VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNIface{X: \"ΘΠΣΦ\"}",
+		Source: VWireStructNIface{
+			X: "ΘΠΣΦ",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStructNStruct{}",
+		Target:      VNativeWireStructNStruct{},
+		SourceLabel: "VWireStructNStruct{}",
+		Source:      VNativeWireStructNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNStruct{}",
+		Target:      VNativeWireStructNStruct{},
+		SourceLabel: "VWireStructNIface{}",
+		Source:      VWireStructNIface{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNStruct{}",
+		Target:      VNativeWireStructNStruct{},
+		SourceLabel: "VWireStructNString{}",
+		Source:      VNativeWireStructNString(""),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStructNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStructNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStructNStruct{X: \"Φ王普澤\"}",
+		Target: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "Φ王普澤",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNStruct{X: \"Φ王普澤\"}",
+		Source: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "Φ王普澤",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStructNStruct{X: \"Φ王普澤\"}",
+		Target: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "Φ王普澤",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNPointer{X: \"Φ王普澤\"}",
+		Source: VWireStructNPointer{
+			X: "Φ王普澤",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStructNArray{}",
+		Target:      VNativeWireStructNArray{},
+		SourceLabel: "VWireStructNArray{}",
+		Source:      VNativeWireStructNArray{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNArray{}",
+		Target:      VNativeWireStructNArray{},
+		SourceLabel: "VWireStructNIface{}",
+		Source:      VWireStructNIface{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNArray{}",
+		Target:      VNativeWireStructNArray{},
+		SourceLabel: "VWireStructNPointer{}",
+		Source:      VWireStructNPointer{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStructNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStructNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStructNArray{X: \"abcdeΔ\"}",
+		Target: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "abcdeΔ",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNArray{X: \"abcdeΔ\"}",
+		Source: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "abcdeΔ",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStructNArray{X: \"abcdeΔ\"}",
+		Target: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "abcdeΔ",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNStruct{X: \"abcdeΔ\"}",
+		Source: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "abcdeΔ",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStructNSlice{}",
+		Target:      VNativeWireStructNSlice(nil),
+		SourceLabel: "VWireStructNSlice{}",
+		Source:      VNativeWireStructNSlice(nil),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNSlice{}",
+		Target:      VNativeWireStructNSlice(nil),
+		SourceLabel: "VWireStructNString{}",
+		Source:      VNativeWireStructNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNSlice{}",
+		Target:      VNativeWireStructNSlice(nil),
+		SourceLabel: "VWireStructNArray{}",
+		Source:      VNativeWireStructNArray{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStructNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStructNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VWireStructNPointer{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStructNSlice{X: \"ΣΦ王普\"}",
+		Target: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "ΣΦ王普",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNSlice{X: \"ΣΦ王普\"}",
+		Source: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "ΣΦ王普",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStructNSlice{X: \"ΣΦ王普\"}",
+		Target: func() VNativeWireStructNSlice {
+			var native VNativeWireStructNSlice
+			wire := VWireStructNSlice{
+				X: "ΣΦ王普",
+			}
+			if err := VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireStructNStruct{X: \"ΣΦ王普\"}",
+		Source: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "ΣΦ王普",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStructNPointer{}",
+		Target:      VWireStructNPointer{},
+		SourceLabel: "VWireStructNPointer{}",
+		Source:      VWireStructNPointer{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNPointer{}",
+		Target:      VWireStructNPointer{},
+		SourceLabel: "VWireStructNStruct{}",
+		Source:      VNativeWireStructNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNPointer{}",
+		Target:      VWireStructNPointer{},
+		SourceLabel: "VWireStructNIface{}",
+		Source:      VWireStructNIface{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStructNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: VWireStructNPointer{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+		SourceLabel: "VWireStructNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VWireStructNPointer{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStructNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: VWireStructNPointer{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+		SourceLabel: "VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStructNPointer{X: \"世\"}",
+		Target: VWireStructNPointer{
+			X: "世",
+		},
+		SourceLabel: "VWireStructNPointer{X: \"世\"}",
+		Source: VWireStructNPointer{
+			X: "世",
+		},
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStructNPointer{X: \"世\"}",
+		Target: VWireStructNPointer{
+			X: "世",
+		},
+		SourceLabel: "VWireStructNArray{X: \"世\"}",
+		Source: func() VNativeWireStructNArray {
+			var native VNativeWireStructNArray
+			wire := VWireStructNArray{
+				X: "世",
+			}
+			if err := VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireStructNIface{}",
+		Target:      VWireStructNIface{},
+		SourceLabel: "VWireStructNIface{}",
+		Source:      VWireStructNIface{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNIface{}",
+		Target:      VWireStructNIface{},
+		SourceLabel: "VWireStructNPointer{}",
+		Source:      VWireStructNPointer{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireStructNIface{}",
+		Target:      VWireStructNIface{},
+		SourceLabel: "?VStructEmpty{}",
+		Source:      &VStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+		SourceLabel: "VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+		SourceLabel: "VWireStructNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireStructNIface{X: \"cde\"}",
+		Target: VWireStructNIface{
+			X: "cde",
+		},
+		SourceLabel: "VWireStructNIface{X: \"cde\"}",
+		Source: VWireStructNIface{
+			X: "cde",
+		},
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireStructNIface{X: \"cde\"}",
+		Target: VWireStructNIface{
+			X: "cde",
+		},
+		SourceLabel: "VWireStructNStruct{X: \"cde\"}",
+		Source: func() VNativeWireStructNStruct {
+			var native VNativeWireStructNStruct
+			wire := VWireStructNStruct{
+				X: "cde",
+			}
+			if err := VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNString{X: \"\"}",
+		Target:      VNativeWireUnionNString(""),
+		SourceLabel: "VWireUnionNString{X: \"\"}",
+		Source:      VNativeWireUnionNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNString{X: \"\"}",
+		Target:      VNativeWireUnionNString(""),
+		SourceLabel: "VWireUnionNArray{X: \"\"}",
+		Source:      VNativeWireUnionNArray{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNString{X: \"\"}",
+		Target:      VNativeWireUnionNString(""),
+		SourceLabel: "VWireUnionNSlice{X: \"\"}",
+		Source:      VNativeWireUnionNSlice(nil),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireUnionNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireUnionNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNString{X: \"abcdeΔ\"}",
+		Target: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔ"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNString{X: \"abcdeΔ\"}",
+		Source: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔ"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNString{X: \"abcdeΔ\"}",
+		Target: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔ"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNIface{X: \"abcdeΔ\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{"abcdeΔ"}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNStruct{X: \"\"}",
+		Target:      VNativeWireUnionNStruct{},
+		SourceLabel: "VWireUnionNStruct{X: \"\"}",
+		Source:      VNativeWireUnionNStruct{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNStruct{X: \"\"}",
+		Target:      VNativeWireUnionNStruct{},
+		SourceLabel: "VWireUnionNString{X: \"\"}",
+		Source:      VNativeWireUnionNString(""),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNStruct{X: \"\"}",
+		Target:      VNativeWireUnionNStruct{},
+		SourceLabel: "VWireUnionNSlice{X: \"\"}",
+		Source:      VNativeWireUnionNSlice(nil),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireUnionNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireUnionNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNStruct{X: \"ΘΠΣ\"}",
+		Target: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"ΘΠΣ"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNStruct{X: \"ΘΠΣ\"}",
+		Source: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"ΘΠΣ"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNStruct{X: \"ΘΠΣ\"}",
+		Target: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"ΘΠΣ"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNIface{X: \"ΘΠΣ\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{"ΘΠΣ"}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNArray{X: \"\"}",
+		Target:      VNativeWireUnionNArray{},
+		SourceLabel: "VWireUnionNArray{X: \"\"}",
+		Source:      VNativeWireUnionNArray{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNArray{X: \"\"}",
+		Target:      VNativeWireUnionNArray{},
+		SourceLabel: "VWireUnionNPointer{X: \"\"}",
+		Source:      VWireUnionNPointer(VWireUnionNPointerX{}),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNArray{X: \"\"}",
+		Target:      VNativeWireUnionNArray{},
+		SourceLabel: "VWireUnionNIface{X: \"\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireUnionNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNArray {
+			var native VNativeWireUnionNArray
+			wire := VWireUnionNArray(VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNArray {
+			var native VNativeWireUnionNArray
+			wire := VWireUnionNArray(VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireUnionNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNArray {
+			var native VNativeWireUnionNArray
+			wire := VWireUnionNArray(VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNArray{X: \"cdeΔ\"}",
+		Target: func() VNativeWireUnionNArray {
+			var native VNativeWireUnionNArray
+			wire := VWireUnionNArray(VWireUnionNArrayX{"cdeΔ"})
+			if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNArray{X: \"cdeΔ\"}",
+		Source: func() VNativeWireUnionNArray {
+			var native VNativeWireUnionNArray
+			wire := VWireUnionNArray(VWireUnionNArrayX{"cdeΔ"})
+			if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNArray{X: \"cdeΔ\"}",
+		Target: func() VNativeWireUnionNArray {
+			var native VNativeWireUnionNArray
+			wire := VWireUnionNArray(VWireUnionNArrayX{"cdeΔ"})
+			if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNPointer{X: \"cdeΔ\"}",
+		Source:      VWireUnionNPointer(VWireUnionNPointerX{"cdeΔ"}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNSlice{X: \"\"}",
+		Target:      VNativeWireUnionNSlice(nil),
+		SourceLabel: "VWireUnionNSlice{X: \"\"}",
+		Source:      VNativeWireUnionNSlice(nil),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNSlice{X: \"\"}",
+		Target:      VNativeWireUnionNSlice(nil),
+		SourceLabel: "VWireUnionNIface{X: \"\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{}),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNSlice{X: \"\"}",
+		Target:      VNativeWireUnionNSlice(nil),
+		SourceLabel: "VWireUnionNPointer{X: \"\"}",
+		Source:      VWireUnionNPointer(VWireUnionNPointerX{}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireUnionNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireUnionNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNString {
+			var native VNativeWireUnionNString
+			wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNSlice{X: \"c\"}",
+		Target: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"c"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNSlice{X: \"c\"}",
+		Source: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"c"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNSlice{X: \"c\"}",
+		Target: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"c"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		SourceLabel: "VWireUnionNIface{X: \"c\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{"c"}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNPointer{X: \"\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{}),
+		SourceLabel: "VWireUnionNPointer{X: \"\"}",
+		Source:      VWireUnionNPointer(VWireUnionNPointerX{}),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNPointer{X: \"\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{}),
+		SourceLabel: "VWireUnionNIface{X: \"\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{}),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNPointer{X: \"\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{}),
+		SourceLabel: "VWireUnionNSlice{X: \"\"}",
+		Source:      VNativeWireUnionNSlice(nil),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireUnionNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"}),
+		SourceLabel: "VWireUnionNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source:      VWireUnionNPointer(VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"}),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireUnionNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"}),
+		SourceLabel: "VWireUnionNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNSlice {
+			var native VNativeWireUnionNSlice
+			wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNPointer{X: \"ΣΦ王\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{"ΣΦ王"}),
+		SourceLabel: "VWireUnionNPointer{X: \"ΣΦ王\"}",
+		Source:      VWireUnionNPointer(VWireUnionNPointerX{"ΣΦ王"}),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNPointer{X: \"ΣΦ王\"}",
+		Target:      VWireUnionNPointer(VWireUnionNPointerX{"ΣΦ王"}),
+		SourceLabel: "VWireUnionNIface{X: \"ΣΦ王\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{"ΣΦ王"}),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNIface{X: \"\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{}),
+		SourceLabel: "VWireUnionNIface{X: \"\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{}),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNIface{X: \"\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{}),
+		SourceLabel: "VWireUnionNSlice{X: \"\"}",
+		Source:      VNativeWireUnionNSlice(nil),
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireUnionNIface{X: \"\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{}),
+		SourceLabel: "VWireUnionNStruct{X: \"\"}",
+		Source:      VNativeWireUnionNStruct{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireUnionNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"}),
+		SourceLabel: "VWireUnionNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"}),
+	},
+	{
+		Label:       "Full",
+		TargetLabel: "VWireUnionNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"}),
+		SourceLabel: "VWireUnionNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Source: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNIface{X: \"deΔΘΠΣ\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{"deΔΘΠΣ"}),
+		SourceLabel: "VWireUnionNIface{X: \"deΔΘΠΣ\"}",
+		Source:      VWireUnionNIface(VWireUnionNIfaceX{"deΔΘΠΣ"}),
+	},
+	{
+		Label:       "Random0",
+		TargetLabel: "VWireUnionNIface{X: \"deΔΘΠΣ\"}",
+		Target:      VWireUnionNIface(VWireUnionNIfaceX{"deΔΘΠΣ"}),
+		SourceLabel: "VWireUnionNStruct{X: \"deΔΘΠΣ\"}",
+		Source: func() VNativeWireUnionNStruct {
+			var native VNativeWireUnionNStruct
+			wire := VWireUnionNStruct(VWireUnionNStructX{"deΔΘΠΣ"})
+			if err := VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "VWireAll{}",
+		Target: VWireAll{
+			UnionNPointer: VWireUnionNPointerX{},
+			UnionNIface:   VWireUnionNIfaceX{},
+		},
+		SourceLabel: "VWireAll{}",
+		Source: VWireAll{
+			UnionNPointer: VWireUnionNPointerX{},
+			UnionNIface:   VWireUnionNIfaceX{},
+		},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireAll{}",
+		Target: VWireAll{
+			UnionNPointer: VWireUnionNPointerX{},
+			UnionNIface:   VWireUnionNIfaceX{},
+		},
+		SourceLabel: "?VStructEmpty{}",
+		Source:      &VStructEmpty{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "VWireAll{}",
+		Target: VWireAll{
+			UnionNPointer: VWireUnionNPointerX{},
+			UnionNIface:   VWireUnionNIfaceX{},
+		},
+		SourceLabel: "VStructEmpty{}",
+		Source:      VStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: \"abcdeΔΘΠΣΦ王普澤世界\", StringNStruct: \"abcdeΔΘΠΣΦ王普澤世界\", ArrayNString: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ArrayNStruct: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ListNString: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ListNStruct: {\"abcdeΔΘΠΣΦ王普澤世界\"}, StructNString: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNStruct: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNArray: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNSlice: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNPointer: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNIface: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNString: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNStruct: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNArray: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNSlice: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNPointer: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNIface: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}}",
+		Target: VWireAll{
+			BoolNBool: func() VNativeWireBoolNBool {
+				var native VNativeWireBoolNBool
+				wire := VWireBoolNBool(true)
+				if err := VWireBoolNBoolToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			BoolNString: func() VNativeWireBoolNString {
+				var native VNativeWireBoolNString
+				wire := VWireBoolNString(true)
+				if err := VWireBoolNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			BoolNStruct: func() VNativeWireBoolNStruct {
+				var native VNativeWireBoolNStruct
+				wire := VWireBoolNStruct(true)
+				if err := VWireBoolNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNInt: func() VNativeWireIntNInt {
+				var native VNativeWireIntNInt
+				wire := VWireIntNInt(-123)
+				if err := VWireIntNIntToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNString: func() VNativeWireIntNString {
+				var native VNativeWireIntNString
+				wire := VWireIntNString(-123)
+				if err := VWireIntNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNStruct: func() VNativeWireIntNStruct {
+				var native VNativeWireIntNStruct
+				wire := VWireIntNStruct(-123)
+				if err := VWireIntNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNString: func() VNativeWireStringNString {
+				var native VNativeWireStringNString
+				wire := VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+				if err := VWireStringNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNStruct: func() VNativeWireStringNStruct {
+				var native VNativeWireStringNStruct
+				wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+				if err := VWireStringNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNString: func() VNativeWireArrayNString {
+				var native VNativeWireArrayNString
+				wire := VWireArrayNString{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireArrayNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNStruct: func() VNativeWireArrayNStruct {
+				var native VNativeWireArrayNStruct
+				wire := VWireArrayNStruct{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireArrayNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNString: func() VNativeWireListNString {
+				var native VNativeWireListNString
+				wire := VWireListNString{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireListNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNStruct: func() VNativeWireListNStruct {
+				var native VNativeWireListNStruct
+				wire := VWireListNStruct{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireListNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNString: func() VNativeWireStructNString {
+				var native VNativeWireStructNString
+				wire := VWireStructNString{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNStruct: func() VNativeWireStructNStruct {
+				var native VNativeWireStructNStruct
+				wire := VWireStructNStruct{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNArray: func() VNativeWireStructNArray {
+				var native VNativeWireStructNArray
+				wire := VWireStructNArray{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNSlice: func() VNativeWireStructNSlice {
+				var native VNativeWireStructNSlice
+				wire := VWireStructNSlice{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNSliceToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNPointer: VWireStructNPointer{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			},
+			StructNIface: VWireStructNIface{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			},
+			UnionNString: func() VNativeWireUnionNString {
+				var native VNativeWireUnionNString
+				wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNStruct: func() VNativeWireUnionNStruct {
+				var native VNativeWireUnionNStruct
+				wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNArray: func() VNativeWireUnionNArray {
+				var native VNativeWireUnionNArray
+				wire := VWireUnionNArray(VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNSlice: func() VNativeWireUnionNSlice {
+				var native VNativeWireUnionNSlice
+				wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNPointer: VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"},
+			UnionNIface:   VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"},
+		},
+		SourceLabel: "VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: \"abcdeΔΘΠΣΦ王普澤世界\", StringNStruct: \"abcdeΔΘΠΣΦ王普澤世界\", ArrayNString: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ArrayNStruct: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ListNString: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ListNStruct: {\"abcdeΔΘΠΣΦ王普澤世界\"}, StructNString: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNStruct: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNArray: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNSlice: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNPointer: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNIface: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNString: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNStruct: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNArray: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNSlice: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNPointer: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNIface: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}}",
+		Source: VWireAll{
+			BoolNBool: func() VNativeWireBoolNBool {
+				var native VNativeWireBoolNBool
+				wire := VWireBoolNBool(true)
+				if err := VWireBoolNBoolToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			BoolNString: func() VNativeWireBoolNString {
+				var native VNativeWireBoolNString
+				wire := VWireBoolNString(true)
+				if err := VWireBoolNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			BoolNStruct: func() VNativeWireBoolNStruct {
+				var native VNativeWireBoolNStruct
+				wire := VWireBoolNStruct(true)
+				if err := VWireBoolNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNInt: func() VNativeWireIntNInt {
+				var native VNativeWireIntNInt
+				wire := VWireIntNInt(-123)
+				if err := VWireIntNIntToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNString: func() VNativeWireIntNString {
+				var native VNativeWireIntNString
+				wire := VWireIntNString(-123)
+				if err := VWireIntNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNStruct: func() VNativeWireIntNStruct {
+				var native VNativeWireIntNStruct
+				wire := VWireIntNStruct(-123)
+				if err := VWireIntNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNString: func() VNativeWireStringNString {
+				var native VNativeWireStringNString
+				wire := VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+				if err := VWireStringNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNStruct: func() VNativeWireStringNStruct {
+				var native VNativeWireStringNStruct
+				wire := VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+				if err := VWireStringNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNString: func() VNativeWireArrayNString {
+				var native VNativeWireArrayNString
+				wire := VWireArrayNString{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireArrayNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNStruct: func() VNativeWireArrayNStruct {
+				var native VNativeWireArrayNStruct
+				wire := VWireArrayNStruct{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireArrayNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNString: func() VNativeWireListNString {
+				var native VNativeWireListNString
+				wire := VWireListNString{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireListNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNStruct: func() VNativeWireListNStruct {
+				var native VNativeWireListNStruct
+				wire := VWireListNStruct{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireListNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNString: func() VNativeWireStructNString {
+				var native VNativeWireStructNString
+				wire := VWireStructNString{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNStruct: func() VNativeWireStructNStruct {
+				var native VNativeWireStructNStruct
+				wire := VWireStructNStruct{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNArray: func() VNativeWireStructNArray {
+				var native VNativeWireStructNArray
+				wire := VWireStructNArray{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNSlice: func() VNativeWireStructNSlice {
+				var native VNativeWireStructNSlice
+				wire := VWireStructNSlice{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := VWireStructNSliceToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNPointer: VWireStructNPointer{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			},
+			StructNIface: VWireStructNIface{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			},
+			UnionNString: func() VNativeWireUnionNString {
+				var native VNativeWireUnionNString
+				wire := VWireUnionNString(VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNStruct: func() VNativeWireUnionNStruct {
+				var native VNativeWireUnionNStruct
+				wire := VWireUnionNStruct(VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNArray: func() VNativeWireUnionNArray {
+				var native VNativeWireUnionNArray
+				wire := VWireUnionNArray(VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNSlice: func() VNativeWireUnionNSlice {
+				var native VNativeWireUnionNSlice
+				wire := VWireUnionNSlice(VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := VWireUnionNSliceToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNPointer: VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"},
+			UnionNIface:   VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "VWireAll{BoolNString: true, IntNInt: -255070853, IntNString: 535047732, IntNStruct: 492803907, StringNString: \"abcdeΔ\", StringNStruct: \"ΔΘΠΣΦ王\", ArrayNString: {\"abcdeΔΘΠ\"}, ArrayNStruct: {\"普澤世\"}, ListNStruct: {\"deΔΘ\", \"\"}, StructNString: {X: \"ΔΘΠΣΦ王普澤\"}, StructNStruct: {X: \"cdeΔΘ\"}, StructNArray: {X: \"bcde\"}, StructNIface: {X: \"澤世界\"}, UnionNString: {X: \"cdeΔΘΠΣΦ\"}, UnionNPointer: {X: \"bc\"}}",
+		Target: VWireAll{
+			BoolNString: func() VNativeWireBoolNString {
+				var native VNativeWireBoolNString
+				wire := VWireBoolNString(true)
+				if err := VWireBoolNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNInt: func() VNativeWireIntNInt {
+				var native VNativeWireIntNInt
+				wire := VWireIntNInt(-255070853)
+				if err := VWireIntNIntToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNString: func() VNativeWireIntNString {
+				var native VNativeWireIntNString
+				wire := VWireIntNString(535047732)
+				if err := VWireIntNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNStruct: func() VNativeWireIntNStruct {
+				var native VNativeWireIntNStruct
+				wire := VWireIntNStruct(492803907)
+				if err := VWireIntNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNString: func() VNativeWireStringNString {
+				var native VNativeWireStringNString
+				wire := VWireStringNString("abcdeΔ")
+				if err := VWireStringNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNStruct: func() VNativeWireStringNStruct {
+				var native VNativeWireStringNStruct
+				wire := VWireStringNStruct("ΔΘΠΣΦ王")
+				if err := VWireStringNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNString: func() VNativeWireArrayNString {
+				var native VNativeWireArrayNString
+				wire := VWireArrayNString{
+					"abcdeΔΘΠ",
+				}
+				if err := VWireArrayNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNStruct: func() VNativeWireArrayNStruct {
+				var native VNativeWireArrayNStruct
+				wire := VWireArrayNStruct{
+					"普澤世",
+				}
+				if err := VWireArrayNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNStruct: func() VNativeWireListNStruct {
+				var native VNativeWireListNStruct
+				wire := VWireListNStruct{
+					"deΔΘ",
+					"",
+				}
+				if err := VWireListNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNString: func() VNativeWireStructNString {
+				var native VNativeWireStructNString
+				wire := VWireStructNString{
+					X: "ΔΘΠΣΦ王普澤",
+				}
+				if err := VWireStructNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNStruct: func() VNativeWireStructNStruct {
+				var native VNativeWireStructNStruct
+				wire := VWireStructNStruct{
+					X: "cdeΔΘ",
+				}
+				if err := VWireStructNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNArray: func() VNativeWireStructNArray {
+				var native VNativeWireStructNArray
+				wire := VWireStructNArray{
+					X: "bcde",
+				}
+				if err := VWireStructNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNIface: VWireStructNIface{
+				X: "澤世界",
+			},
+			UnionNString: func() VNativeWireUnionNString {
+				var native VNativeWireUnionNString
+				wire := VWireUnionNString(VWireUnionNStringX{"cdeΔΘΠΣΦ"})
+				if err := VWireUnionNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNPointer: VWireUnionNPointerX{"bc"},
+			UnionNIface:   VWireUnionNIfaceX{},
+		},
+		SourceLabel: "VWireAll{BoolNString: true, IntNInt: -255070853, IntNString: 535047732, IntNStruct: 492803907, StringNString: \"abcdeΔ\", StringNStruct: \"ΔΘΠΣΦ王\", ArrayNString: {\"abcdeΔΘΠ\"}, ArrayNStruct: {\"普澤世\"}, ListNStruct: {\"deΔΘ\", \"\"}, StructNString: {X: \"ΔΘΠΣΦ王普澤\"}, StructNStruct: {X: \"cdeΔΘ\"}, StructNArray: {X: \"bcde\"}, StructNIface: {X: \"澤世界\"}, UnionNString: {X: \"cdeΔΘΠΣΦ\"}, UnionNPointer: {X: \"bc\"}}",
+		Source: VWireAll{
+			BoolNString: func() VNativeWireBoolNString {
+				var native VNativeWireBoolNString
+				wire := VWireBoolNString(true)
+				if err := VWireBoolNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNInt: func() VNativeWireIntNInt {
+				var native VNativeWireIntNInt
+				wire := VWireIntNInt(-255070853)
+				if err := VWireIntNIntToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNString: func() VNativeWireIntNString {
+				var native VNativeWireIntNString
+				wire := VWireIntNString(535047732)
+				if err := VWireIntNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNStruct: func() VNativeWireIntNStruct {
+				var native VNativeWireIntNStruct
+				wire := VWireIntNStruct(492803907)
+				if err := VWireIntNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNString: func() VNativeWireStringNString {
+				var native VNativeWireStringNString
+				wire := VWireStringNString("abcdeΔ")
+				if err := VWireStringNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNStruct: func() VNativeWireStringNStruct {
+				var native VNativeWireStringNStruct
+				wire := VWireStringNStruct("ΔΘΠΣΦ王")
+				if err := VWireStringNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNString: func() VNativeWireArrayNString {
+				var native VNativeWireArrayNString
+				wire := VWireArrayNString{
+					"abcdeΔΘΠ",
+				}
+				if err := VWireArrayNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNStruct: func() VNativeWireArrayNStruct {
+				var native VNativeWireArrayNStruct
+				wire := VWireArrayNStruct{
+					"普澤世",
+				}
+				if err := VWireArrayNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNStruct: func() VNativeWireListNStruct {
+				var native VNativeWireListNStruct
+				wire := VWireListNStruct{
+					"deΔΘ",
+					"",
+				}
+				if err := VWireListNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNString: func() VNativeWireStructNString {
+				var native VNativeWireStructNString
+				wire := VWireStructNString{
+					X: "ΔΘΠΣΦ王普澤",
+				}
+				if err := VWireStructNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNStruct: func() VNativeWireStructNStruct {
+				var native VNativeWireStructNStruct
+				wire := VWireStructNStruct{
+					X: "cdeΔΘ",
+				}
+				if err := VWireStructNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNArray: func() VNativeWireStructNArray {
+				var native VNativeWireStructNArray
+				wire := VWireStructNArray{
+					X: "bcde",
+				}
+				if err := VWireStructNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNIface: VWireStructNIface{
+				X: "澤世界",
+			},
+			UnionNString: func() VNativeWireUnionNString {
+				var native VNativeWireUnionNString
+				wire := VWireUnionNString(VWireUnionNStringX{"cdeΔΘΠΣΦ"})
+				if err := VWireUnionNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNPointer: VWireUnionNPointerX{"bc"},
+			UnionNIface:   VWireUnionNIfaceX{},
+		},
+	},
 }
 var xAllFail = []vdlEntry(nil)
 var xAllPass = []vdlEntry{
@@ -87281,6 +95115,206 @@
 			},
 		},
 	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "XSelfCycle{}",
+		Target:      XSelfCycle{},
+		SourceLabel: "XSelfCycle{}",
+		Source:      XSelfCycle{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "XSelfCycle{}",
+		Target:      XSelfCycle{},
+		SourceLabel: "XMutualCycleB{}",
+		Source:      XMutualCycleB{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "XSelfCycle{}",
+		Target:      XSelfCycle{},
+		SourceLabel: "XStructEmpty{}",
+		Source:      XStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}",
+		Target: XSelfCycle{
+			Data: -123,
+			Next: &XSelfCycle{
+				Data: -123,
+				Next: &XSelfCycle{
+					Data: -123,
+					Next: &XSelfCycle{
+						Data: -123,
+					},
+				},
+			},
+		},
+		SourceLabel: "XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}",
+		Source: XSelfCycle{
+			Data: -123,
+			Next: &XSelfCycle{
+				Data: -123,
+				Next: &XSelfCycle{
+					Data: -123,
+					Next: &XSelfCycle{
+						Data: -123,
+					},
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "XSelfCycle{Next: {Data: 2253179390369614770, Next: {}}}",
+		Target: XSelfCycle{
+			Next: &XSelfCycle{
+				Data: 2253179390369614770,
+				Next: &XSelfCycle{},
+			},
+		},
+		SourceLabel: "XSelfCycle{Next: {Data: 2253179390369614770, Next: {}}}",
+		Source: XSelfCycle{
+			Next: &XSelfCycle{
+				Data: 2253179390369614770,
+				Next: &XSelfCycle{},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "XMutualCycleB{}",
+		Target:      XMutualCycleB{},
+		SourceLabel: "XMutualCycleB{}",
+		Source:      XMutualCycleB{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "XMutualCycleB{}",
+		Target:      XMutualCycleB{},
+		SourceLabel: "?XStructEmpty{}",
+		Source:      &XStructEmpty{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "XMutualCycleB{}",
+		Target:      XMutualCycleB{},
+		SourceLabel: "XStructEmpty{}",
+		Source:      XStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}",
+		Target: XMutualCycleB{
+			Data: -123,
+			A: &XMutualCycleA{
+				Data: -123,
+				B: &XMutualCycleB{
+					Data: -123,
+					A: &XMutualCycleA{
+						Data: -123,
+					},
+				},
+			},
+		},
+		SourceLabel: "XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}",
+		Source: XMutualCycleB{
+			Data: -123,
+			A: &XMutualCycleA{
+				Data: -123,
+				B: &XMutualCycleB{
+					Data: -123,
+					A: &XMutualCycleA{
+						Data: -123,
+					},
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "XMutualCycleB{A: {}}",
+		Target: XMutualCycleB{
+			A: &XMutualCycleA{},
+		},
+		SourceLabel: "XMutualCycleB{A: {}}",
+		Source: XMutualCycleB{
+			A: &XMutualCycleA{},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Zero",
+		TargetLabel: "XMutualCycleA{}",
+		Target:      XMutualCycleA{},
+		SourceLabel: "XMutualCycleA{}",
+		Source:      XMutualCycleA{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "XMutualCycleA{}",
+		Target:      XMutualCycleA{},
+		SourceLabel: "XSelfCycle{}",
+		Source:      XSelfCycle{},
+	},
+	{
+		Label:       "Zero",
+		TargetLabel: "XMutualCycleA{}",
+		Target:      XMutualCycleA{},
+		SourceLabel: "XStructEmpty{}",
+		Source:      XStructEmpty{},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Full",
+		TargetLabel: "XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}",
+		Target: XMutualCycleA{
+			Data: -123,
+			B: &XMutualCycleB{
+				Data: -123,
+				A: &XMutualCycleA{
+					Data: -123,
+					B: &XMutualCycleB{
+						Data: -123,
+					},
+				},
+			},
+		},
+		SourceLabel: "XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}",
+		Source: XMutualCycleA{
+			Data: -123,
+			B: &XMutualCycleB{
+				Data: -123,
+				A: &XMutualCycleA{
+					Data: -123,
+					B: &XMutualCycleB{
+						Data: -123,
+					},
+				},
+			},
+		},
+	},
+	{
+		IsCanonical: true,
+		Label:       "Random0",
+		TargetLabel: "XMutualCycleA{Data: -1006823554338124716, B: {}}",
+		Target: XMutualCycleA{
+			Data: -1006823554338124716,
+			B:    &XMutualCycleB{},
+		},
+		SourceLabel: "XMutualCycleA{Data: -1006823554338124716, B: {}}",
+		Source: XMutualCycleA{
+			Data: -1006823554338124716,
+			B:    &XMutualCycleB{},
+		},
+	},
 }
 
 var __VDLInitCalled bool
@@ -87304,6 +95338,28 @@
 	}
 	__VDLInitCalled = true
 
+	// Register native type conversions first, so that vdl.TypeOf works.
+	vdl.RegisterNative(VWireArrayNStringToNative, VWireArrayNStringFromNative)
+	vdl.RegisterNative(VWireArrayNStructToNative, VWireArrayNStructFromNative)
+	vdl.RegisterNative(VWireBoolNBoolToNative, VWireBoolNBoolFromNative)
+	vdl.RegisterNative(VWireBoolNStringToNative, VWireBoolNStringFromNative)
+	vdl.RegisterNative(VWireBoolNStructToNative, VWireBoolNStructFromNative)
+	vdl.RegisterNative(VWireIntNIntToNative, VWireIntNIntFromNative)
+	vdl.RegisterNative(VWireIntNStringToNative, VWireIntNStringFromNative)
+	vdl.RegisterNative(VWireIntNStructToNative, VWireIntNStructFromNative)
+	vdl.RegisterNative(VWireListNStringToNative, VWireListNStringFromNative)
+	vdl.RegisterNative(VWireListNStructToNative, VWireListNStructFromNative)
+	vdl.RegisterNative(VWireStringNStringToNative, VWireStringNStringFromNative)
+	vdl.RegisterNative(VWireStringNStructToNative, VWireStringNStructFromNative)
+	vdl.RegisterNative(VWireStructNArrayToNative, VWireStructNArrayFromNative)
+	vdl.RegisterNative(VWireStructNSliceToNative, VWireStructNSliceFromNative)
+	vdl.RegisterNative(VWireStructNStringToNative, VWireStructNStringFromNative)
+	vdl.RegisterNative(VWireStructNStructToNative, VWireStructNStructFromNative)
+	vdl.RegisterNative(VWireUnionNArrayToNative, VWireUnionNArrayFromNative)
+	vdl.RegisterNative(VWireUnionNSliceToNative, VWireUnionNSliceFromNative)
+	vdl.RegisterNative(VWireUnionNStringToNative, VWireUnionNStringFromNative)
+	vdl.RegisterNative(VWireUnionNStructToNative, VWireUnionNStructFromNative)
+
 	// Register types.
 	vdl.Register((*vdlEntry)(nil))
 	vdl.Register((*VBool)(nil))
@@ -87538,6 +95594,34 @@
 	vdl.Register((*VUnionDepth3_VStructDepth2_All)(nil))
 	vdl.Register((*VUnionDepth3_VUnionDepth2_All)(nil))
 	vdl.Register((*VUnionDepth3_OptVStructDepth2_Set_Float64)(nil))
+	vdl.Register((*VSelfCycle)(nil))
+	vdl.Register((*VMutualCycleB)(nil))
+	vdl.Register((*VMutualCycleA)(nil))
+	vdl.Register((*VWireBoolNBool)(nil))
+	vdl.Register((*VWireBoolNString)(nil))
+	vdl.Register((*VWireBoolNStruct)(nil))
+	vdl.Register((*VWireIntNInt)(nil))
+	vdl.Register((*VWireIntNString)(nil))
+	vdl.Register((*VWireIntNStruct)(nil))
+	vdl.Register((*VWireStringNString)(nil))
+	vdl.Register((*VWireStringNStruct)(nil))
+	vdl.Register((*VWireArrayNString)(nil))
+	vdl.Register((*VWireArrayNStruct)(nil))
+	vdl.Register((*VWireListNString)(nil))
+	vdl.Register((*VWireListNStruct)(nil))
+	vdl.Register((*VWireStructNString)(nil))
+	vdl.Register((*VWireStructNStruct)(nil))
+	vdl.Register((*VWireStructNArray)(nil))
+	vdl.Register((*VWireStructNSlice)(nil))
+	vdl.Register((*VWireStructNPointer)(nil))
+	vdl.Register((*VWireStructNIface)(nil))
+	vdl.Register((*VWireUnionNString)(nil))
+	vdl.Register((*VWireUnionNStruct)(nil))
+	vdl.Register((*VWireUnionNArray)(nil))
+	vdl.Register((*VWireUnionNSlice)(nil))
+	vdl.Register((*VWireUnionNPointer)(nil))
+	vdl.Register((*VWireUnionNIface)(nil))
+	vdl.Register((*VWireAll)(nil))
 	vdl.Register((*XBool)(nil))
 	vdl.Register((*XString)(nil))
 	vdl.Register((*XByte)(nil))
@@ -87770,6 +95854,9 @@
 	vdl.Register((*XUnionDepth3_XStructDepth2_All)(nil))
 	vdl.Register((*XUnionDepth3_XUnionDepth2_All)(nil))
 	vdl.Register((*XUnionDepth3_OptXStructDepth2_Set_Float64)(nil))
+	vdl.Register((*XSelfCycle)(nil))
+	vdl.Register((*XMutualCycleB)(nil))
+	vdl.Register((*XMutualCycleA)(nil))
 
 	return struct{}{}
 }
diff --git a/vdl/vdltest/ventry_fail_gen.vdl b/vdl/vdltest/ventry_fail_gen.vdl
index 0492990..6d1966c 100644
--- a/vdl/vdltest/ventry_fail_gen.vdl
+++ b/vdl/vdltest/ventry_fail_gen.vdl
@@ -9,39 +9,40 @@
 package vdltest
 
 // Entries: 0
-// ------------
-// |          |
-// ------------
-// |total     | [!can=0]
-// |isZero    | [!can=0]
-// ------------
-// |any       |
-// |optional  | [!can=0]
-// |bool      | [!can=0]
-// |byte      | [!can=0]
-// |uint16    | [!can=0]
-// |uint32    | [!can=0]
-// |uint64    | [!can=0]
-// |int8      | [!can=0]
-// |int16     | [!can=0]
-// |int32     | [!can=0]
-// |int64     | [!can=0]
-// |float32   | [!can=0]
-// |float64   | [!can=0]
-// |string    | [!can=0]
-// |enum      | [!can=0]
-// |typeobject|
-// |array     | [!can=0]
-// |list      | [!can=0]
-// |set       | [!can=0]
-// |map       | [!can=0]
-// |struct    | [!can=0]
-// |union     | [!can=0]
-// ------------
-// |IsNamed   | [!can=0]
-// |IsUnnamed | [!can=0]
-// |IsBytes   | [!can=0]
-// ------------
+// ---------------
+// |             |
+// ---------------
+// |total        | [!can=0]
+// |isZero       | [!can=0]
+// ---------------
+// |any          |
+// |optional     | [!can=0]
+// |bool         | [!can=0]
+// |byte         | [!can=0]
+// |uint16       | [!can=0]
+// |uint32       | [!can=0]
+// |uint64       | [!can=0]
+// |int8         | [!can=0]
+// |int16        | [!can=0]
+// |int32        | [!can=0]
+// |int64        | [!can=0]
+// |float32      | [!can=0]
+// |float64      | [!can=0]
+// |string       | [!can=0]
+// |enum         | [!can=0]
+// |typeobject   |
+// |array        | [!can=0]
+// |list         | [!can=0]
+// |set          | [!can=0]
+// |map          | [!can=0]
+// |struct       | [!can=0]
+// |union        | [!can=0]
+// ---------------
+// |IsNamed      | [!can=0]
+// |IsUnnamed    | [!can=0]
+// |IsBytes      | [!can=0]
+// |IsPartOfCycle| [!can=0]
+// ---------------
 // 
 // Each column has a pair of entry counts (canonical,non-canonical), computed
 // from the Source value.  An entry is canonical if Target == Source.
diff --git a/vdl/vdltest/ventry_pass_gen.vdl b/vdl/vdltest/ventry_pass_gen.vdl
index 1553594..6ee1ac6 100644
--- a/vdl/vdltest/ventry_pass_gen.vdl
+++ b/vdl/vdltest/ventry_pass_gen.vdl
@@ -8,40 +8,41 @@
 
 package vdltest
 
-// Entries: 2443
-// --------------------------------------------------------------------------------------
-// |          | Total  | +Max | +Min |-Max |-Min | Full  |NilAny|Random | Zero  |isZero |
-// --------------------------------------------------------------------------------------
-// |total     |947,1496|20,114|20,184|12,44|12,64|321,307|  0, 8|238,219|324,556|324,404| [!can max=11]
-// |isZero    |324, 404| 0,  0| 0,  0| 0, 0| 0, 0|  0,  2|  0, 8|  0,  0|324,394|324,404| [!can max=3]
-// --------------------------------------------------------------------------------------
-// |any       |  1,   8| 0,  0| 0,  0| 0, 0| 0, 0|  0,  0|  0, 8|  0,  0|  1,  0|  1,  8| [nil=9]
-// |optional  | 21,  58| 0,  0| 0,  0| 0, 0| 0, 0|  8,  4|  0, 0|  5,  4|  8, 50|  8, 11| [!can max=3] [nil=19]
-// |bool      |  4,   4| 0,  0| 0,  0| 0, 0| 0, 0|  2,  2|  0, 0|  0,  0|  2,  2|  2,  2| [!can max=1]
-// |byte      | 10,  28| 2,  3| 2, 20| 0, 0| 0, 0|  2,  2|  0, 0|  2,  0|  2,  3|  2,  3| [!can max=11]
-// |uint16    | 10,  32| 2,  9| 2, 18| 0, 0| 0, 0|  2,  1|  0, 0|  2,  1|  2,  3|  2,  3| [!can max=11]
-// |uint32    | 10,  34| 2, 14| 2, 15| 0, 0| 0, 0|  2,  1|  0, 0|  2,  1|  2,  3|  2,  3| [!can max=11]
-// |uint64    | 10,  49| 2, 24| 2, 18| 0, 0| 0, 0|  2,  0|  0, 0|  2,  4|  2,  3|  2,  3| [!can max=11]
-// |int8      | 14,  35| 2,  0| 2, 16| 2, 1| 2, 9|  2,  5|  0, 0|  2,  0|  2,  4|  2,  4| [!can max=11]
-// |int16     | 14,  39| 2,  5| 2, 17| 2, 4| 2, 8|  2,  0|  0, 0|  2,  0|  2,  5|  2,  5| [!can max=11]
-// |int32     | 14,  48| 2,  9| 2, 16| 2, 6| 2, 9|  2,  3|  0, 0|  2,  0|  2,  5|  2,  5| [!can max=11]
-// |int64     | 14,  66| 2, 17| 2, 17| 2,11| 2, 9|  2,  1|  0, 0|  2,  4|  2,  7|  2,  7| [!can max=11]
-// |float32   | 14,  63| 2, 12| 2, 23| 2, 6| 2,14|  2,  4|  0, 0|  2,  2|  2,  2|  2,  2| [!can max=3]
-// |float64   | 14,  92| 2, 21| 2, 24| 2,16| 2,15|  2,  3|  0, 0|  2,  8|  2,  5|  2,  5| [!can max=2]
-// |string    |  6,  17| 0,  0| 0,  0| 0, 0| 0, 0|  2, 10|  0, 0|  2,  2|  2,  5|  2,  2| [!can max=1]
-// |enum      |  6,   4| 0,  0| 0,  0| 0, 0| 0, 0|  4,  3|  0, 0|  0,  0|  2,  1|  2,  1| [!can max=3]
-// |typeobject|  3,   0| 0,  0| 0,  0| 0, 0| 0, 0|  1,  0|  0, 0|  1,  0|  1,  0|  1,  0|
-// |array     | 88,  20| 0,  0| 0,  0| 0, 0| 0, 0| 31,  4|  0, 0| 25,  9| 32,  7| 32,  2| [!can max=2] [len min=1 max=3]
-// |list      |170, 334| 0,  0| 0,  0| 0, 0| 0, 0| 64, 91|  0, 0| 42, 58| 64,185| 64,128| [!can max=2] [len max=3]
-// |set       |100, 116| 0,  0| 0,  0| 0, 0| 0, 0| 38, 32|  0, 0| 24, 20| 38, 64| 38, 64| [!can max=2] [len max=3]
-// |map       |102, 106| 0,  0| 0,  0| 0, 0| 0, 0| 38, 28|  0, 0| 26, 16| 38, 62| 38, 62| [!can max=2] [len max=3]
-// |struct    |163, 180| 0,  0| 0,  0| 0, 0| 0, 0| 57, 57|  0, 0| 47, 44| 59, 79| 59, 80| [!can max=2]
-// |union     |159, 163| 0,  0| 0,  0| 0, 0| 0, 0| 56, 56|  0, 0| 46, 46| 57, 61| 57,  4| [!can max=2]
-// --------------------------------------------------------------------------------------
-// |IsNamed   |668, 902|10, 57|10, 92| 6,22| 6,32|230,205|  0, 0|174,163|232,331|232,239| [!can max=11]
-// |IsUnnamed |279, 594|10, 57|10, 92| 6,22| 6,32| 91,102|  0, 8| 64, 56| 92,225| 92,165| [!can max=11]
-// |IsBytes   | 18,  15| 0,  0| 0,  0| 0, 0| 0, 0|  6,  4|  0, 0|  6,  2|  6,  9|  6,  3| [!can max=2]
-// --------------------------------------------------------------------------------------
+// Entries: 2757
+// ------------------------------------------------------------------------------------------
+// |             |  Total  | +Max | +Min |-Max |-Min | Full  |NilAny|Random | Zero  |isZero |
+// ------------------------------------------------------------------------------------------
+// |total        |1040,1717|23,141|23,226|15,65|15,94|349,331|  0, 8|263,240|352,612|352,452| [!can max=14]
+// |isZero       | 352, 452| 0,  0| 0,  0| 0, 0| 0, 0|  0,  2|  0, 8|  0,  0|352,442|352,452| [!can max=3]
+// ------------------------------------------------------------------------------------------
+// |any          |   1,   8| 0,  0| 0,  0| 0, 0| 0, 0|  0,  0|  0, 8|  0,  0|  1,  0|  1,  8| [nil=9]
+// |optional     |  21,  62| 0,  0| 0,  0| 0, 0| 0, 0|  8,  4|  0, 0|  5,  4|  8, 54|  8, 11| [!can max=3] [nil=19]
+// |bool         |  10,  13| 0,  0| 0,  0| 0, 0| 0, 0|  5,  5|  0, 0|  0,  0|  5,  8|  5,  8| [!can max=2]
+// |byte         |  10,  31| 2,  3| 2, 23| 0, 0| 0, 0|  2,  2|  0, 0|  2,  0|  2,  3|  2,  3| [!can max=11]
+// |uint16       |  10,  37| 2,  9| 2, 22| 0, 0| 0, 0|  2,  1|  0, 0|  2,  1|  2,  4|  2,  4| [!can max=11]
+// |uint32       |  10,  43| 2, 18| 2, 19| 0, 0| 0, 0|  2,  1|  0, 0|  2,  1|  2,  4|  2,  4| [!can max=11]
+// |uint64       |  10,  58| 2, 28| 2, 22| 0, 0| 0, 0|  2,  0|  0, 0|  2,  4|  2,  4|  2,  4| [!can max=11]
+// |int8         |  14,  44| 2,  0| 2, 19| 2, 1| 2,14|  2,  6|  0, 0|  2,  0|  2,  4|  2,  4| [!can max=11]
+// |int16        |  14,  49| 2,  5| 2, 22| 2, 4| 2,13|  2,  0|  0, 0|  2,  0|  2,  5|  2,  5| [!can max=11]
+// |int32        |  35,  91| 5, 19| 5, 25| 5,18| 5,18|  5,  4|  0, 0|  5,  2|  5,  5|  5,  5| [!can max=14]
+// |int64        |  14,  86| 2, 21| 2, 21| 2,16| 2,13|  2,  1|  0, 0|  2,  5|  2,  9|  2,  9| [!can max=11]
+// |float32      |  14,  71| 2, 12| 2, 26| 2, 6| 2,18|  2,  4|  0, 0|  2,  2|  2,  3|  2,  3| [!can max=3]
+// |float64      |  14, 108| 2, 26| 2, 27| 2,20| 2,18|  2,  4|  0, 0|  2,  8|  2,  5|  2,  5| [!can max=2]
+// |string       |  12,  25| 0,  0| 0,  0| 0, 0| 0, 0|  4, 12|  0, 0|  4,  4|  4,  9|  4,  6| [!can max=2]
+// |enum         |   6,   4| 0,  0| 0,  0| 0, 0| 0, 0|  4,  3|  0, 0|  0,  0|  2,  1|  2,  1| [!can max=3]
+// |typeobject   |   3,   0| 0,  0| 0,  0| 0, 0| 0, 0|  1,  0|  0, 0|  1,  0|  1,  0|  1,  0|
+// |array        |  94,  22| 0,  0| 0,  0| 0, 0| 0, 0| 33,  6|  0, 0| 27,  9| 34,  7| 34,  2| [!can max=2] [len min=1 max=3]
+// |list         | 176, 348| 0,  0| 0,  0| 0, 0| 0, 0| 66, 93|  0, 0| 44, 62| 66,193| 66,132| [!can max=2] [len max=3]
+// |set          | 100, 116| 0,  0| 0,  0| 0, 0| 0, 0| 38, 32|  0, 0| 24, 20| 38, 64| 38, 64| [!can max=2] [len max=3]
+// |map          | 102, 106| 0,  0| 0,  0| 0, 0| 0, 0| 38, 28|  0, 0| 26, 16| 38, 62| 38, 62| [!can max=2] [len max=3]
+// |struct       | 193, 208| 0,  0| 0,  0| 0, 0| 0, 0| 67, 63|  0, 0| 57, 50| 69, 95| 69, 96| [!can max=2]
+// |union        | 177, 187| 0,  0| 0,  0| 0, 0| 0, 0| 62, 62|  0, 0| 52, 52| 63, 73| 63, 16| [!can max=2]
+// ------------------------------------------------------------------------------------------
+// |IsNamed      | 761,1075|13, 78|13,128| 9,37| 9,56|258,226|  0, 0|199,180|260,370|260,277| [!can max=14]
+// |IsUnnamed    | 279, 642|10, 63|10, 98| 6,28| 6,38| 91,105|  0, 8| 64, 60| 92,242| 92,175| [!can max=11]
+// |IsBytes      |  18,  15| 0,  0| 0,  0| 0, 0| 0, 0|  6,  4|  0, 0|  6,  2|  6,  9|  6,  3| [!can max=2]
+// |IsPartOfCycle|   9,   4| 0,  0| 0,  0| 0, 0| 0, 0|  3,  0|  0, 0|  3,  0|  3,  4|  3,  4| [!can max=2]
+// ------------------------------------------------------------------------------------------
 // 
 // Each column has a pair of entry counts (canonical,non-canonical), computed
 // from the Source value.  An entry is canonical if Target == Source.
@@ -9325,4 +9326,916 @@
 	  `VStructDepth1_Any{F0: VArray1_Set_VEnumBcd{{D}}}`,
 	  VStructDepth1_Any{F0: VArray1_Set_VEnumBcd{{D}}},
 	},
+	// Canonical
+	{ true, `Zero`, `VSelfCycle{}`, VSelfCycle{}, `VSelfCycle{}`, VSelfCycle{} },
+	{ false, `Zero`, `VSelfCycle{}`, VSelfCycle{}, `VMutualCycleA{}`, VMutualCycleA{} },
+	{ false, `Zero`, `VSelfCycle{}`, VSelfCycle{}, `VMutualCycleB{}`, VMutualCycleB{} },
+	// Canonical
+	{ true, `Full`,
+	  `VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}`,
+	  VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}},
+	  `VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}`,
+	  VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VSelfCycle{Data: -3933048656192887342, Next: {Data: -1666879701135447875, Next: {}}}`,
+	  VSelfCycle{Data: -3933048656192887342, Next: {Data: -1666879701135447875, Next: {}}},
+	  `VSelfCycle{Data: -3933048656192887342, Next: {Data: -1666879701135447875, Next: {}}}`,
+	  VSelfCycle{Data: -3933048656192887342, Next: {Data: -1666879701135447875, Next: {}}},
+	},
+	// Canonical
+	{ true, `Zero`, `VMutualCycleB{}`, VMutualCycleB{}, `VMutualCycleB{}`, VMutualCycleB{} },
+	{ false, `Zero`, `VMutualCycleB{}`, VMutualCycleB{}, `VSelfCycle{}`, VSelfCycle{} },
+	{ false, `Zero`, `VMutualCycleB{}`, VMutualCycleB{}, `?VStructEmpty{}`, ?VStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}`,
+	  VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}},
+	  `VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}`,
+	  VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VMutualCycleB{Data: 3315306687289648358, A: {B: {Data: -830867813984030735}}}`,
+	  VMutualCycleB{Data: 3315306687289648358, A: {B: {Data: -830867813984030735}}},
+	  `VMutualCycleB{Data: 3315306687289648358, A: {B: {Data: -830867813984030735}}}`,
+	  VMutualCycleB{Data: 3315306687289648358, A: {B: {Data: -830867813984030735}}},
+	},
+	// Canonical
+	{ true, `Zero`, `VMutualCycleA{}`, VMutualCycleA{}, `VMutualCycleA{}`, VMutualCycleA{} },
+	{ false, `Zero`, `VMutualCycleA{}`, VMutualCycleA{}, `VSelfCycle{}`, VSelfCycle{} },
+	{ false, `Zero`, `VMutualCycleA{}`, VMutualCycleA{}, `?VStructEmpty{}`, ?VStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}`,
+	  VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}},
+	  `VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}`,
+	  VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VMutualCycleA{Data: -1454793165023012937, B: {}}`,
+	  VMutualCycleA{Data: -1454793165023012937, B: {}},
+	  `VMutualCycleA{Data: -1454793165023012937, B: {}}`,
+	  VMutualCycleA{Data: -1454793165023012937, B: {}},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireBoolNBool(false)`, VWireBoolNBool(false), `VWireBoolNBool(false)`, VWireBoolNBool(false) },
+	{ false, `Zero`, `VWireBoolNBool(false)`, VWireBoolNBool(false), `VWireBoolNString(false)`, VWireBoolNString(false) },
+	{ false, `Zero`, `VWireBoolNBool(false)`, VWireBoolNBool(false), `VWireBoolNStruct(false)`, VWireBoolNStruct(false) },
+	// Canonical
+	{ true, `Full`, `VWireBoolNBool(true)`, VWireBoolNBool(true), `VWireBoolNBool(true)`, VWireBoolNBool(true) },
+	{ false, `Full`, `VWireBoolNBool(true)`, VWireBoolNBool(true), `VWireBoolNStruct(true)`, VWireBoolNStruct(true) },
+	// Canonical
+	{ true, `Zero`, `VWireBoolNString(false)`, VWireBoolNString(false), `VWireBoolNString(false)`, VWireBoolNString(false) },
+	{ false, `Zero`, `VWireBoolNString(false)`, VWireBoolNString(false), `VWireBoolNStruct(false)`, VWireBoolNStruct(false) },
+	{ false, `Zero`, `VWireBoolNString(false)`, VWireBoolNString(false), `false`, false },
+	// Canonical
+	{ true, `Full`, `VWireBoolNString(true)`, VWireBoolNString(true), `VWireBoolNString(true)`, VWireBoolNString(true) },
+	{ false, `Full`, `VWireBoolNString(true)`, VWireBoolNString(true), `VWireBoolNBool(true)`, VWireBoolNBool(true) },
+	// Canonical
+	{ true, `Zero`, `VWireBoolNStruct(false)`, VWireBoolNStruct(false), `VWireBoolNStruct(false)`, VWireBoolNStruct(false) },
+	{ false, `Zero`, `VWireBoolNStruct(false)`, VWireBoolNStruct(false), `VWireBoolNString(false)`, VWireBoolNString(false) },
+	{ false, `Zero`, `VWireBoolNStruct(false)`, VWireBoolNStruct(false), `false`, false },
+	// Canonical
+	{ true, `Full`, `VWireBoolNStruct(true)`, VWireBoolNStruct(true), `VWireBoolNStruct(true)`, VWireBoolNStruct(true) },
+	{ false, `Full`, `VWireBoolNStruct(true)`, VWireBoolNStruct(true), `true`, true },
+	// Canonical
+	{ true, `Zero`, `VWireIntNInt(0)`, VWireIntNInt(0), `VWireIntNInt(0)`, VWireIntNInt(0) },
+	{ false, `Zero`, `VWireIntNInt(0)`, VWireIntNInt(0), `int64(0)`, int64(0) },
+	{ false, `Zero`, `VWireIntNInt(0)`, VWireIntNInt(0), `uint16(0)`, uint16(0) },
+	// Canonical
+	{ true, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647) },
+	{ false, `+Max`,
+	  `VWireIntNInt(2147483647)`,
+	  VWireIntNInt(2147483647),
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	},
+	{ false, `+Max`,
+	  `VWireIntNInt(2147483647)`,
+	  VWireIntNInt(2147483647),
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	},
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `VUint32(2147483647)`, VUint32(2147483647) },
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `VUint64(2147483647)`, VUint64(2147483647) },
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `VInt32(2147483647)`, VInt32(2147483647) },
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `VInt64(2147483647)`, VInt64(2147483647) },
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `VFloat64(2.147483647e+09)`, VFloat64(2.147483647e+09) },
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `uint64(2147483647)`, uint64(2147483647) },
+	{ false, `+Max`, `VWireIntNInt(2147483647)`, VWireIntNInt(2147483647), `float64(2.147483647e+09)`, float64(2.147483647e+09) },
+	// Canonical
+	{ true, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VWireIntNInt(1)`, VWireIntNInt(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VWireIntNString(1)`, VWireIntNString(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VWireIntNStruct(1)`, VWireIntNStruct(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VByte(1)`, VByte(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VUint16(1)`, VUint16(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VUint32(1)`, VUint32(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VUint64(1)`, VUint64(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VInt8(1)`, VInt8(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VInt16(1)`, VInt16(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VInt32(1)`, VInt32(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VInt64(1)`, VInt64(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VFloat32(1)`, VFloat32(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `VFloat64(1)`, VFloat64(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `uint64(1)`, uint64(1) },
+	{ false, `+Min`, `VWireIntNInt(1)`, VWireIntNInt(1), `uint32(1)`, uint32(1) },
+	// Canonical
+	{ true, `-Max`,
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	},
+	{ false, `-Max`,
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	},
+	{ false, `-Max`,
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	},
+	{ false, `-Max`, `VWireIntNInt(-2147483648)`, VWireIntNInt(-2147483648), `VInt32(-2147483648)`, VInt32(-2147483648) },
+	{ false, `-Max`, `VWireIntNInt(-2147483648)`, VWireIntNInt(-2147483648), `VInt64(-2147483648)`, VInt64(-2147483648) },
+	{ false, `-Max`,
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	  `VFloat64(-2.147483648e+09)`,
+	  VFloat64(-2.147483648e+09),
+	},
+	{ false, `-Max`, `VWireIntNInt(-2147483648)`, VWireIntNInt(-2147483648), `int64(-2147483648)`, int64(-2147483648) },
+	{ false, `-Max`, `VWireIntNInt(-2147483648)`, VWireIntNInt(-2147483648), `int32(-2147483648)`, int32(-2147483648) },
+	// Canonical
+	{ true, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VWireIntNInt(-1)`, VWireIntNInt(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VWireIntNString(-1)`, VWireIntNString(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VWireIntNStruct(-1)`, VWireIntNStruct(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VInt8(-1)`, VInt8(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VInt16(-1)`, VInt16(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VInt32(-1)`, VInt32(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VInt64(-1)`, VInt64(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VFloat32(-1)`, VFloat32(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `VFloat64(-1)`, VFloat64(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `int8(-1)`, int8(-1) },
+	{ false, `-Min`, `VWireIntNInt(-1)`, VWireIntNInt(-1), `int16(-1)`, int16(-1) },
+	// Canonical
+	{ true, `Full`, `VWireIntNInt(-123)`, VWireIntNInt(-123), `VWireIntNInt(-123)`, VWireIntNInt(-123) },
+	{ false, `Full`, `VWireIntNInt(-123)`, VWireIntNInt(-123), `int8(-123)`, int8(-123) },
+	// Canonical
+	{ true, `Random0`, `VWireIntNInt(-456364020)`, VWireIntNInt(-456364020), `VWireIntNInt(-456364020)`, VWireIntNInt(-456364020) },
+	{ false, `Random0`,
+	  `VWireIntNInt(-456364020)`,
+	  VWireIntNInt(-456364020),
+	  `VWireIntNStruct(-456364020)`,
+	  VWireIntNStruct(-456364020),
+	},
+	// Canonical
+	{ true, `Zero`, `VWireIntNString(0)`, VWireIntNString(0), `VWireIntNString(0)`, VWireIntNString(0) },
+	{ false, `Zero`, `VWireIntNString(0)`, VWireIntNString(0), `int64(0)`, int64(0) },
+	{ false, `Zero`, `VWireIntNString(0)`, VWireIntNString(0), `VUint32(0)`, VUint32(0) },
+	// Canonical
+	{ true, `+Max`,
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	},
+	{ false, `+Max`,
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	  `VWireIntNInt(2147483647)`,
+	  VWireIntNInt(2147483647),
+	},
+	{ false, `+Max`,
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	},
+	{ false, `+Max`, `VWireIntNString(2147483647)`, VWireIntNString(2147483647), `VUint32(2147483647)`, VUint32(2147483647) },
+	{ false, `+Max`, `VWireIntNString(2147483647)`, VWireIntNString(2147483647), `VUint64(2147483647)`, VUint64(2147483647) },
+	{ false, `+Max`, `VWireIntNString(2147483647)`, VWireIntNString(2147483647), `VInt32(2147483647)`, VInt32(2147483647) },
+	{ false, `+Max`, `VWireIntNString(2147483647)`, VWireIntNString(2147483647), `VInt64(2147483647)`, VInt64(2147483647) },
+	{ false, `+Max`,
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	  `VFloat64(2.147483647e+09)`,
+	  VFloat64(2.147483647e+09),
+	},
+	{ false, `+Max`, `VWireIntNString(2147483647)`, VWireIntNString(2147483647), `int32(2147483647)`, int32(2147483647) },
+	{ false, `+Max`,
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	  `float64(2.147483647e+09)`,
+	  float64(2.147483647e+09),
+	},
+	// Canonical
+	{ true, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VWireIntNString(1)`, VWireIntNString(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VWireIntNInt(1)`, VWireIntNInt(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VWireIntNStruct(1)`, VWireIntNStruct(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VByte(1)`, VByte(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VUint16(1)`, VUint16(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VUint32(1)`, VUint32(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VUint64(1)`, VUint64(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VInt8(1)`, VInt8(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VInt16(1)`, VInt16(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VInt32(1)`, VInt32(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VInt64(1)`, VInt64(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VFloat32(1)`, VFloat32(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `VFloat64(1)`, VFloat64(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `int64(1)`, int64(1) },
+	{ false, `+Min`, `VWireIntNString(1)`, VWireIntNString(1), `int16(1)`, int16(1) },
+	// Canonical
+	{ true, `-Max`,
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	},
+	{ false, `-Max`,
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	},
+	{ false, `-Max`,
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	},
+	{ false, `-Max`, `VWireIntNString(-2147483648)`, VWireIntNString(-2147483648), `VInt32(-2147483648)`, VInt32(-2147483648) },
+	{ false, `-Max`, `VWireIntNString(-2147483648)`, VWireIntNString(-2147483648), `VInt64(-2147483648)`, VInt64(-2147483648) },
+	{ false, `-Max`,
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	  `VFloat64(-2.147483648e+09)`,
+	  VFloat64(-2.147483648e+09),
+	},
+	{ false, `-Max`, `VWireIntNString(-2147483648)`, VWireIntNString(-2147483648), `int64(-2147483648)`, int64(-2147483648) },
+	{ false, `-Max`, `VWireIntNString(-2147483648)`, VWireIntNString(-2147483648), `int32(-2147483648)`, int32(-2147483648) },
+	// Canonical
+	{ true, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VWireIntNString(-1)`, VWireIntNString(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VWireIntNInt(-1)`, VWireIntNInt(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VWireIntNStruct(-1)`, VWireIntNStruct(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VInt8(-1)`, VInt8(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VInt16(-1)`, VInt16(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VInt32(-1)`, VInt32(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VInt64(-1)`, VInt64(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VFloat32(-1)`, VFloat32(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `VFloat64(-1)`, VFloat64(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `int8(-1)`, int8(-1) },
+	{ false, `-Min`, `VWireIntNString(-1)`, VWireIntNString(-1), `int64(-1)`, int64(-1) },
+	// Canonical
+	{ true, `Full`, `VWireIntNString(-123)`, VWireIntNString(-123), `VWireIntNString(-123)`, VWireIntNString(-123) },
+	{ false, `Full`, `VWireIntNString(-123)`, VWireIntNString(-123), `VWireIntNStruct(-123)`, VWireIntNStruct(-123) },
+	// Canonical
+	{ true, `Random0`,
+	  `VWireIntNString(891620478)`,
+	  VWireIntNString(891620478),
+	  `VWireIntNString(891620478)`,
+	  VWireIntNString(891620478),
+	},
+	{ false, `Random0`, `VWireIntNString(891620478)`, VWireIntNString(891620478), `VWireIntNInt(891620478)`, VWireIntNInt(891620478) },
+	// Canonical
+	{ true, `Zero`, `VWireIntNStruct(0)`, VWireIntNStruct(0), `VWireIntNStruct(0)`, VWireIntNStruct(0) },
+	{ false, `Zero`, `VWireIntNStruct(0)`, VWireIntNStruct(0), `float32(0)`, float32(0) },
+	{ false, `Zero`, `VWireIntNStruct(0)`, VWireIntNStruct(0), `VUint64(0)`, VUint64(0) },
+	// Canonical
+	{ true, `+Max`,
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	},
+	{ false, `+Max`,
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	  `VWireIntNInt(2147483647)`,
+	  VWireIntNInt(2147483647),
+	},
+	{ false, `+Max`,
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	  `VWireIntNString(2147483647)`,
+	  VWireIntNString(2147483647),
+	},
+	{ false, `+Max`, `VWireIntNStruct(2147483647)`, VWireIntNStruct(2147483647), `VUint32(2147483647)`, VUint32(2147483647) },
+	{ false, `+Max`, `VWireIntNStruct(2147483647)`, VWireIntNStruct(2147483647), `VUint64(2147483647)`, VUint64(2147483647) },
+	{ false, `+Max`, `VWireIntNStruct(2147483647)`, VWireIntNStruct(2147483647), `VInt32(2147483647)`, VInt32(2147483647) },
+	{ false, `+Max`, `VWireIntNStruct(2147483647)`, VWireIntNStruct(2147483647), `VInt64(2147483647)`, VInt64(2147483647) },
+	{ false, `+Max`,
+	  `VWireIntNStruct(2147483647)`,
+	  VWireIntNStruct(2147483647),
+	  `VFloat64(2.147483647e+09)`,
+	  VFloat64(2.147483647e+09),
+	},
+	{ false, `+Max`, `VWireIntNStruct(2147483647)`, VWireIntNStruct(2147483647), `uint32(2147483647)`, uint32(2147483647) },
+	{ false, `+Max`, `VWireIntNStruct(2147483647)`, VWireIntNStruct(2147483647), `int64(2147483647)`, int64(2147483647) },
+	// Canonical
+	{ true, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VWireIntNStruct(1)`, VWireIntNStruct(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VWireIntNInt(1)`, VWireIntNInt(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VWireIntNString(1)`, VWireIntNString(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VByte(1)`, VByte(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VUint16(1)`, VUint16(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VUint32(1)`, VUint32(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VUint64(1)`, VUint64(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VInt8(1)`, VInt8(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VInt16(1)`, VInt16(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VInt32(1)`, VInt32(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VInt64(1)`, VInt64(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VFloat32(1)`, VFloat32(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `VFloat64(1)`, VFloat64(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `uint16(1)`, uint16(1) },
+	{ false, `+Min`, `VWireIntNStruct(1)`, VWireIntNStruct(1), `int16(1)`, int16(1) },
+	// Canonical
+	{ true, `-Max`,
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	},
+	{ false, `-Max`,
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	  `VWireIntNInt(-2147483648)`,
+	  VWireIntNInt(-2147483648),
+	},
+	{ false, `-Max`,
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	  `VWireIntNString(-2147483648)`,
+	  VWireIntNString(-2147483648),
+	},
+	{ false, `-Max`, `VWireIntNStruct(-2147483648)`, VWireIntNStruct(-2147483648), `VInt32(-2147483648)`, VInt32(-2147483648) },
+	{ false, `-Max`, `VWireIntNStruct(-2147483648)`, VWireIntNStruct(-2147483648), `VInt64(-2147483648)`, VInt64(-2147483648) },
+	{ false, `-Max`,
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	  `VFloat64(-2.147483648e+09)`,
+	  VFloat64(-2.147483648e+09),
+	},
+	{ false, `-Max`, `VWireIntNStruct(-2147483648)`, VWireIntNStruct(-2147483648), `int32(-2147483648)`, int32(-2147483648) },
+	{ false, `-Max`,
+	  `VWireIntNStruct(-2147483648)`,
+	  VWireIntNStruct(-2147483648),
+	  `float64(-2.147483648e+09)`,
+	  float64(-2.147483648e+09),
+	},
+	// Canonical
+	{ true, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VWireIntNStruct(-1)`, VWireIntNStruct(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VWireIntNInt(-1)`, VWireIntNInt(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VWireIntNString(-1)`, VWireIntNString(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VInt8(-1)`, VInt8(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VInt16(-1)`, VInt16(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VInt32(-1)`, VInt32(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VInt64(-1)`, VInt64(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VFloat32(-1)`, VFloat32(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `VFloat64(-1)`, VFloat64(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `int16(-1)`, int16(-1) },
+	{ false, `-Min`, `VWireIntNStruct(-1)`, VWireIntNStruct(-1), `float32(-1)`, float32(-1) },
+	// Canonical
+	{ true, `Full`, `VWireIntNStruct(-123)`, VWireIntNStruct(-123), `VWireIntNStruct(-123)`, VWireIntNStruct(-123) },
+	{ false, `Full`, `VWireIntNStruct(-123)`, VWireIntNStruct(-123), `VFloat64(-123)`, VFloat64(-123) },
+	// Canonical
+	{ true, `Random0`,
+	  `VWireIntNStruct(-472003459)`,
+	  VWireIntNStruct(-472003459),
+	  `VWireIntNStruct(-472003459)`,
+	  VWireIntNStruct(-472003459),
+	},
+	{ false, `Random0`, `VWireIntNStruct(-472003459)`, VWireIntNStruct(-472003459), `int64(-472003459)`, int64(-472003459) },
+	// Canonical
+	{ true, `Zero`, `VWireStringNString("")`, VWireStringNString(""), `VWireStringNString("")`, VWireStringNString("") },
+	{ false, `Zero`, `VWireStringNString("")`, VWireStringNString(""), `""`, "" },
+	{ false, `Zero`, `VWireStringNString("")`, VWireStringNString(""), `VWireStringNStruct("")`, VWireStringNStruct("") },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VWireStringNString("abcdeΔΘΠΣΦ王普澤世界"),
+	  `VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VWireStringNString("abcdeΔΘΠΣΦ王普澤世界"),
+	},
+	{ false, `Full`,
+	  `VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VWireStringNString("abcdeΔΘΠΣΦ王普澤世界"),
+	  `VString("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VString("abcdeΔΘΠΣΦ王普澤世界"),
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStringNString("cde")`,
+	  VWireStringNString("cde"),
+	  `VWireStringNString("cde")`,
+	  VWireStringNString("cde"),
+	},
+	{ false, `Random0`, `VWireStringNString("cde")`, VWireStringNString("cde"), `"cde"`, "cde" },
+	// Canonical
+	{ true, `Zero`, `VWireStringNStruct("")`, VWireStringNStruct(""), `VWireStringNStruct("")`, VWireStringNStruct("") },
+	{ false, `Zero`, `VWireStringNStruct("")`, VWireStringNStruct(""), `VString("")`, VString("") },
+	{ false, `Zero`, `VWireStringNStruct("")`, VWireStringNStruct(""), `VWireStringNString("")`, VWireStringNString("") },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界"),
+	  `VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界"),
+	},
+	{ false, `Full`,
+	  `VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")`,
+	  VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界"),
+	  `"abcdeΔΘΠΣΦ王普澤世界"`,
+	  "abcdeΔΘΠΣΦ王普澤世界",
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStringNStruct("abcdeΔΘΠΣΦ王普澤")`,
+	  VWireStringNStruct("abcdeΔΘΠΣΦ王普澤"),
+	  `VWireStringNStruct("abcdeΔΘΠΣΦ王普澤")`,
+	  VWireStringNStruct("abcdeΔΘΠΣΦ王普澤"),
+	},
+	{ false, `Random0`,
+	  `VWireStringNStruct("abcdeΔΘΠΣΦ王普澤")`,
+	  VWireStringNStruct("abcdeΔΘΠΣΦ王普澤"),
+	  `"abcdeΔΘΠΣΦ王普澤"`,
+	  "abcdeΔΘΠΣΦ王普澤",
+	},
+	// Canonical
+	{ true, `Zero`, `VWireArrayNString{}`, VWireArrayNString{}, `VWireArrayNString{}`, VWireArrayNString{} },
+	{ false, `Zero`, `VWireArrayNString{}`, VWireArrayNString{}, `[]string{""}`, []string{""} },
+	{ false, `Zero`, `VWireArrayNString{}`, VWireArrayNString{}, `VWireListNString{""}`, VWireListNString{""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VList_String{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VList_String{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`, `VWireArrayNString{"a"}`, VWireArrayNString{"a"}, `VWireArrayNString{"a"}`, VWireArrayNString{"a"} },
+	{ false, `Random0`, `VWireArrayNString{"a"}`, VWireArrayNString{"a"}, `VList_String{"a"}`, VList_String{"a"} },
+	// Canonical
+	{ true, `Zero`, `VWireArrayNStruct{}`, VWireArrayNStruct{}, `VWireArrayNStruct{}`, VWireArrayNStruct{} },
+	{ false, `Zero`, `VWireArrayNStruct{}`, VWireArrayNStruct{}, `[]string{""}`, []string{""} },
+	{ false, `Zero`, `VWireArrayNStruct{}`, VWireArrayNStruct{}, `[]VString{""}`, []VString{""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VList_Any{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VList_Any{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireArrayNStruct{"cdeΔΘΠΣ"}`,
+	  VWireArrayNStruct{"cdeΔΘΠΣ"},
+	  `VWireArrayNStruct{"cdeΔΘΠΣ"}`,
+	  VWireArrayNStruct{"cdeΔΘΠΣ"},
+	},
+	{ false, `Random0`,
+	  `VWireArrayNStruct{"cdeΔΘΠΣ"}`,
+	  VWireArrayNStruct{"cdeΔΘΠΣ"},
+	  `VWireListNStruct{"cdeΔΘΠΣ"}`,
+	  VWireListNStruct{"cdeΔΘΠΣ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireListNString{}`, VWireListNString{}, `VWireListNString{}`, VWireListNString{} },
+	{ false, `Zero`, `VWireListNString{}`, VWireListNString{}, `[]VString{}`, []VString{} },
+	{ false, `Zero`, `VWireListNString{}`, VWireListNString{}, `[]VEnumAbc{}`, []VEnumAbc{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VArray1_String{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VArray1_String{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`, `VWireListNString{"de"}`, VWireListNString{"de"}, `VWireListNString{"de"}`, VWireListNString{"de"} },
+	{ false, `Random0`, `VWireListNString{"de"}`, VWireListNString{"de"}, `VWireListNStruct{"de"}`, VWireListNStruct{"de"} },
+	// Canonical
+	{ true, `Zero`, `VWireListNStruct{}`, VWireListNStruct{}, `VWireListNStruct{}`, VWireListNStruct{} },
+	{ false, `Zero`, `VWireListNStruct{}`, VWireListNStruct{}, `VList_VString{}`, VList_VString{} },
+	{ false, `Zero`, `VWireListNStruct{}`, VWireListNStruct{}, `[]VEnumAbc{}`, []VEnumAbc{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireListNStruct{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"}`,
+	  VWireListNStruct{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"},
+	  `VWireListNStruct{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"}`,
+	  VWireListNStruct{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"},
+	},
+	{ false, `Random0`,
+	  `VWireListNStruct{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"}`,
+	  VWireListNStruct{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"},
+	  `[]any{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"}`,
+	  []any{"deΔΘΠΣΦ王普", "澤世", "bcdeΔΘΠΣΦ王"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireStructNString{}`, VWireStructNString{}, `VWireStructNString{}`, VWireStructNString{} },
+	{ false, `Zero`, `VWireStructNString{}`, VWireStructNString{}, `VWireStructNArray{}`, VWireStructNArray{} },
+	{ false, `Zero`, `VWireStructNString{}`, VWireStructNString{}, `VWireStructNPointer{}`, VWireStructNPointer{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStructNString{X: "ΘΠΣΦ"}`,
+	  VWireStructNString{X: "ΘΠΣΦ"},
+	  `VWireStructNString{X: "ΘΠΣΦ"}`,
+	  VWireStructNString{X: "ΘΠΣΦ"},
+	},
+	{ false, `Random0`,
+	  `VWireStructNString{X: "ΘΠΣΦ"}`,
+	  VWireStructNString{X: "ΘΠΣΦ"},
+	  `VWireStructNIface{X: "ΘΠΣΦ"}`,
+	  VWireStructNIface{X: "ΘΠΣΦ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireStructNStruct{}`, VWireStructNStruct{}, `VWireStructNStruct{}`, VWireStructNStruct{} },
+	{ false, `Zero`, `VWireStructNStruct{}`, VWireStructNStruct{}, `VWireStructNIface{}`, VWireStructNIface{} },
+	{ false, `Zero`, `VWireStructNStruct{}`, VWireStructNStruct{}, `VWireStructNString{}`, VWireStructNString{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStructNStruct{X: "Φ王普澤"}`,
+	  VWireStructNStruct{X: "Φ王普澤"},
+	  `VWireStructNStruct{X: "Φ王普澤"}`,
+	  VWireStructNStruct{X: "Φ王普澤"},
+	},
+	{ false, `Random0`,
+	  `VWireStructNStruct{X: "Φ王普澤"}`,
+	  VWireStructNStruct{X: "Φ王普澤"},
+	  `VWireStructNPointer{X: "Φ王普澤"}`,
+	  VWireStructNPointer{X: "Φ王普澤"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireStructNArray{}`, VWireStructNArray{}, `VWireStructNArray{}`, VWireStructNArray{} },
+	{ false, `Zero`, `VWireStructNArray{}`, VWireStructNArray{}, `VWireStructNIface{}`, VWireStructNIface{} },
+	{ false, `Zero`, `VWireStructNArray{}`, VWireStructNArray{}, `VWireStructNPointer{}`, VWireStructNPointer{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStructNArray{X: "abcdeΔ"}`,
+	  VWireStructNArray{X: "abcdeΔ"},
+	  `VWireStructNArray{X: "abcdeΔ"}`,
+	  VWireStructNArray{X: "abcdeΔ"},
+	},
+	{ false, `Random0`,
+	  `VWireStructNArray{X: "abcdeΔ"}`,
+	  VWireStructNArray{X: "abcdeΔ"},
+	  `VWireStructNStruct{X: "abcdeΔ"}`,
+	  VWireStructNStruct{X: "abcdeΔ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireStructNSlice{}`, VWireStructNSlice{}, `VWireStructNSlice{}`, VWireStructNSlice{} },
+	{ false, `Zero`, `VWireStructNSlice{}`, VWireStructNSlice{}, `VWireStructNString{}`, VWireStructNString{} },
+	{ false, `Zero`, `VWireStructNSlice{}`, VWireStructNSlice{}, `VWireStructNArray{}`, VWireStructNArray{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStructNSlice{X: "ΣΦ王普"}`,
+	  VWireStructNSlice{X: "ΣΦ王普"},
+	  `VWireStructNSlice{X: "ΣΦ王普"}`,
+	  VWireStructNSlice{X: "ΣΦ王普"},
+	},
+	{ false, `Random0`,
+	  `VWireStructNSlice{X: "ΣΦ王普"}`,
+	  VWireStructNSlice{X: "ΣΦ王普"},
+	  `VWireStructNStruct{X: "ΣΦ王普"}`,
+	  VWireStructNStruct{X: "ΣΦ王普"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireStructNPointer{}`, VWireStructNPointer{}, `VWireStructNPointer{}`, VWireStructNPointer{} },
+	{ false, `Zero`, `VWireStructNPointer{}`, VWireStructNPointer{}, `VWireStructNStruct{}`, VWireStructNStruct{} },
+	{ false, `Zero`, `VWireStructNPointer{}`, VWireStructNPointer{}, `VWireStructNIface{}`, VWireStructNIface{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStructNPointer{X: "世"}`,
+	  VWireStructNPointer{X: "世"},
+	  `VWireStructNPointer{X: "世"}`,
+	  VWireStructNPointer{X: "世"},
+	},
+	{ false, `Random0`,
+	  `VWireStructNPointer{X: "世"}`,
+	  VWireStructNPointer{X: "世"},
+	  `VWireStructNArray{X: "世"}`,
+	  VWireStructNArray{X: "世"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireStructNIface{}`, VWireStructNIface{}, `VWireStructNIface{}`, VWireStructNIface{} },
+	{ false, `Zero`, `VWireStructNIface{}`, VWireStructNIface{}, `VWireStructNPointer{}`, VWireStructNPointer{} },
+	{ false, `Zero`, `VWireStructNIface{}`, VWireStructNIface{}, `?VStructEmpty{}`, ?VStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireStructNIface{X: "cde"}`,
+	  VWireStructNIface{X: "cde"},
+	  `VWireStructNIface{X: "cde"}`,
+	  VWireStructNIface{X: "cde"},
+	},
+	{ false, `Random0`,
+	  `VWireStructNIface{X: "cde"}`,
+	  VWireStructNIface{X: "cde"},
+	  `VWireStructNStruct{X: "cde"}`,
+	  VWireStructNStruct{X: "cde"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireUnionNString{X: ""}`, VWireUnionNString{X: ""}, `VWireUnionNString{X: ""}`, VWireUnionNString{X: ""} },
+	{ false, `Zero`, `VWireUnionNString{X: ""}`, VWireUnionNString{X: ""}, `VWireUnionNArray{X: ""}`, VWireUnionNArray{X: ""} },
+	{ false, `Zero`, `VWireUnionNString{X: ""}`, VWireUnionNString{X: ""}, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireUnionNString{X: "abcdeΔ"}`,
+	  VWireUnionNString{X: "abcdeΔ"},
+	  `VWireUnionNString{X: "abcdeΔ"}`,
+	  VWireUnionNString{X: "abcdeΔ"},
+	},
+	{ false, `Random0`,
+	  `VWireUnionNString{X: "abcdeΔ"}`,
+	  VWireUnionNString{X: "abcdeΔ"},
+	  `VWireUnionNIface{X: "abcdeΔ"}`,
+	  VWireUnionNIface{X: "abcdeΔ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireUnionNStruct{X: ""}`, VWireUnionNStruct{X: ""}, `VWireUnionNStruct{X: ""}`, VWireUnionNStruct{X: ""} },
+	{ false, `Zero`, `VWireUnionNStruct{X: ""}`, VWireUnionNStruct{X: ""}, `VWireUnionNString{X: ""}`, VWireUnionNString{X: ""} },
+	{ false, `Zero`, `VWireUnionNStruct{X: ""}`, VWireUnionNStruct{X: ""}, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireUnionNStruct{X: "ΘΠΣ"}`,
+	  VWireUnionNStruct{X: "ΘΠΣ"},
+	  `VWireUnionNStruct{X: "ΘΠΣ"}`,
+	  VWireUnionNStruct{X: "ΘΠΣ"},
+	},
+	{ false, `Random0`,
+	  `VWireUnionNStruct{X: "ΘΠΣ"}`,
+	  VWireUnionNStruct{X: "ΘΠΣ"},
+	  `VWireUnionNIface{X: "ΘΠΣ"}`,
+	  VWireUnionNIface{X: "ΘΠΣ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireUnionNArray{X: ""}`, VWireUnionNArray{X: ""}, `VWireUnionNArray{X: ""}`, VWireUnionNArray{X: ""} },
+	{ false, `Zero`, `VWireUnionNArray{X: ""}`, VWireUnionNArray{X: ""}, `VWireUnionNPointer{X: ""}`, VWireUnionNPointer{X: ""} },
+	{ false, `Zero`, `VWireUnionNArray{X: ""}`, VWireUnionNArray{X: ""}, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireUnionNArray{X: "cdeΔ"}`,
+	  VWireUnionNArray{X: "cdeΔ"},
+	  `VWireUnionNArray{X: "cdeΔ"}`,
+	  VWireUnionNArray{X: "cdeΔ"},
+	},
+	{ false, `Random0`,
+	  `VWireUnionNArray{X: "cdeΔ"}`,
+	  VWireUnionNArray{X: "cdeΔ"},
+	  `VWireUnionNPointer{X: "cdeΔ"}`,
+	  VWireUnionNPointer{X: "cdeΔ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""}, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""} },
+	{ false, `Zero`, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""}, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""} },
+	{ false, `Zero`, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""}, `VWireUnionNPointer{X: ""}`, VWireUnionNPointer{X: ""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`, `VWireUnionNSlice{X: "c"}`, VWireUnionNSlice{X: "c"}, `VWireUnionNSlice{X: "c"}`, VWireUnionNSlice{X: "c"} },
+	{ false, `Random0`, `VWireUnionNSlice{X: "c"}`, VWireUnionNSlice{X: "c"}, `VWireUnionNIface{X: "c"}`, VWireUnionNIface{X: "c"} },
+	// Canonical
+	{ true, `Zero`,
+	  `VWireUnionNPointer{X: ""}`,
+	  VWireUnionNPointer{X: ""},
+	  `VWireUnionNPointer{X: ""}`,
+	  VWireUnionNPointer{X: ""},
+	},
+	{ false, `Zero`, `VWireUnionNPointer{X: ""}`, VWireUnionNPointer{X: ""}, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""} },
+	{ false, `Zero`, `VWireUnionNPointer{X: ""}`, VWireUnionNPointer{X: ""}, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireUnionNPointer{X: "ΣΦ王"}`,
+	  VWireUnionNPointer{X: "ΣΦ王"},
+	  `VWireUnionNPointer{X: "ΣΦ王"}`,
+	  VWireUnionNPointer{X: "ΣΦ王"},
+	},
+	{ false, `Random0`,
+	  `VWireUnionNPointer{X: "ΣΦ王"}`,
+	  VWireUnionNPointer{X: "ΣΦ王"},
+	  `VWireUnionNIface{X: "ΣΦ王"}`,
+	  VWireUnionNIface{X: "ΣΦ王"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""}, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""} },
+	{ false, `Zero`, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""}, `VWireUnionNSlice{X: ""}`, VWireUnionNSlice{X: ""} },
+	{ false, `Zero`, `VWireUnionNIface{X: ""}`, VWireUnionNIface{X: ""}, `VWireUnionNStruct{X: ""}`, VWireUnionNStruct{X: ""} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	{ false, `Full`,
+	  `VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	  `VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+	  VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireUnionNIface{X: "deΔΘΠΣ"}`,
+	  VWireUnionNIface{X: "deΔΘΠΣ"},
+	  `VWireUnionNIface{X: "deΔΘΠΣ"}`,
+	  VWireUnionNIface{X: "deΔΘΠΣ"},
+	},
+	{ false, `Random0`,
+	  `VWireUnionNIface{X: "deΔΘΠΣ"}`,
+	  VWireUnionNIface{X: "deΔΘΠΣ"},
+	  `VWireUnionNStruct{X: "deΔΘΠΣ"}`,
+	  VWireUnionNStruct{X: "deΔΘΠΣ"},
+	},
+	// Canonical
+	{ true, `Zero`, `VWireAll{}`, VWireAll{}, `VWireAll{}`, VWireAll{} },
+	{ false, `Zero`, `VWireAll{}`, VWireAll{}, `?VStructEmpty{}`, ?VStructEmpty{} },
+	{ false, `Zero`, `VWireAll{}`, VWireAll{}, `VStructEmpty{}`, VStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}}`,
+	  VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}},
+	  `VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}}`,
+	  VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `VWireAll{BoolNString: true, IntNInt: -255070853, IntNString: 535047732, IntNStruct: 492803907, StringNString: "abcdeΔ", StringNStruct: "ΔΘΠΣΦ王", ArrayNString: {"abcdeΔΘΠ"}, ArrayNStruct: {"普澤世"}, ListNStruct: {"deΔΘ", ""}, StructNString: {X: "ΔΘΠΣΦ王普澤"}, StructNStruct: {X: "cdeΔΘ"}, StructNArray: {X: "bcde"}, StructNIface: {X: "澤世界"}, UnionNString: {X: "cdeΔΘΠΣΦ"}, UnionNPointer: {X: "bc"}}`,
+	  VWireAll{BoolNString: true, IntNInt: -255070853, IntNString: 535047732, IntNStruct: 492803907, StringNString: "abcdeΔ", StringNStruct: "ΔΘΠΣΦ王", ArrayNString: {"abcdeΔΘΠ"}, ArrayNStruct: {"普澤世"}, ListNStruct: {"deΔΘ", ""}, StructNString: {X: "ΔΘΠΣΦ王普澤"}, StructNStruct: {X: "cdeΔΘ"}, StructNArray: {X: "bcde"}, StructNIface: {X: "澤世界"}, UnionNString: {X: "cdeΔΘΠΣΦ"}, UnionNPointer: {X: "bc"}},
+	  `VWireAll{BoolNString: true, IntNInt: -255070853, IntNString: 535047732, IntNStruct: 492803907, StringNString: "abcdeΔ", StringNStruct: "ΔΘΠΣΦ王", ArrayNString: {"abcdeΔΘΠ"}, ArrayNStruct: {"普澤世"}, ListNStruct: {"deΔΘ", ""}, StructNString: {X: "ΔΘΠΣΦ王普澤"}, StructNStruct: {X: "cdeΔΘ"}, StructNArray: {X: "bcde"}, StructNIface: {X: "澤世界"}, UnionNString: {X: "cdeΔΘΠΣΦ"}, UnionNPointer: {X: "bc"}}`,
+	  VWireAll{BoolNString: true, IntNInt: -255070853, IntNString: 535047732, IntNStruct: 492803907, StringNString: "abcdeΔ", StringNStruct: "ΔΘΠΣΦ王", ArrayNString: {"abcdeΔΘΠ"}, ArrayNStruct: {"普澤世"}, ListNStruct: {"deΔΘ", ""}, StructNString: {X: "ΔΘΠΣΦ王普澤"}, StructNStruct: {X: "cdeΔΘ"}, StructNArray: {X: "bcde"}, StructNIface: {X: "澤世界"}, UnionNString: {X: "cdeΔΘΠΣΦ"}, UnionNPointer: {X: "bc"}},
+	},
 }
diff --git a/vdl/vdltest/vtype_manual.vdl b/vdl/vdltest/vtype_manual.vdl
new file mode 100644
index 0000000..335e6d7
--- /dev/null
+++ b/vdl/vdltest/vtype_manual.vdl
@@ -0,0 +1,111 @@
+// 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.
+
+package vdltest
+
+// TODO(toddw): Add tests for longer cyclic chains, consult old vom tests for
+//              regression scenarios.
+// TODO(toddw): Add multi-step wire types, e.g.
+//                NativeA <-> WireA
+//                NativeB <-> WireB
+//                type WireB struct {  <-vdl   go-> type WireB struct {
+//                  A WireA                           A NativeA
+//                }                                 }
+
+// FOR EACH TYPE ADDED OR UPDATED, CONSIDER ALSO UPDATING xtype_manual.vdl
+//
+// While the types in vtype_gen.vdl are automatically generated, the types in
+// this file are created by-hand, to handle special cases.
+
+// VSelfCycle tests self-cyclic types.
+type VSelfCycle struct {
+	Data int64
+	Next ?VSelfCycle
+}
+
+// VMutualCycleA tests mutually cyclic types A and B.
+type VMutualCycleA struct {
+	Data int64
+	B ?VMutualCycleB
+}
+
+// VMutualCycleB tests mutually cyclic types A and B.
+type VMutualCycleB struct {
+	Data int64
+	A ?VMutualCycleA
+}
+
+// The VWire* types are the wire types associated with native types.  The native
+// types are defined in vtype_native.go.
+//
+// The naming is such that VWire* <-> VNativeWire*, e.g.  VWireBoolNString is
+// the wire type associated with the VNativeWireBoolNString native type, where
+// the wire type is bool, and the native type is string.
+type (
+	VWireBoolNBool   bool
+	VWireBoolNString bool
+	VWireBoolNStruct bool
+
+	VWireIntNInt    int32
+	VWireIntNString int32
+	VWireIntNStruct int32
+
+	VWireStringNString string
+	VWireStringNStruct string
+
+	VWireArrayNString [1]string
+	VWireArrayNStruct [1]string
+
+	VWireListNString []string
+	VWireListNStruct []string
+
+	VWireStructNString  struct{ X string }
+	VWireStructNStruct  struct{ X string }
+	VWireStructNArray   struct{ X string }
+	VWireStructNSlice   struct{ X string }
+	VWireStructNPointer struct{ X string }
+	VWireStructNIface   struct{ X string }
+
+	VWireUnionNString  union{ X string }
+	VWireUnionNStruct  union{ X string }
+	VWireUnionNArray   union{ X string }
+	VWireUnionNSlice   union{ X string }
+	VWireUnionNPointer union{ X string }
+	VWireUnionNIface   union{ X string }
+)
+
+// VWireAll contains all wire types, which will be represented as native types
+// in the generated code.
+type VWireAll struct {
+	BoolNBool      VWireBoolNBool
+	BoolNString    VWireBoolNString
+	BoolNStruct    VWireBoolNStruct
+
+	IntNInt        VWireIntNInt
+	IntNString     VWireIntNString
+	IntNStruct     VWireIntNStruct
+
+	StringNString  VWireStringNString
+	StringNStruct  VWireStringNStruct
+
+	ArrayNString   VWireArrayNString
+	ArrayNStruct   VWireArrayNStruct
+
+	ListNString    VWireListNString
+	ListNStruct    VWireListNStruct
+
+	StructNString  VWireStructNString
+	StructNStruct  VWireStructNStruct
+	StructNArray   VWireStructNArray
+	StructNSlice   VWireStructNSlice
+	StructNPointer VWireStructNPointer
+	StructNIface   VWireStructNIface
+
+	UnionNString   VWireUnionNString
+	UnionNStruct   VWireUnionNStruct
+	UnionNArray    VWireUnionNArray
+	UnionNSlice    VWireUnionNSlice
+	UnionNPointer  VWireUnionNPointer
+	UnionNIface    VWireUnionNIface
+}
diff --git a/vdl/vdltest/vtype_native.go b/vdl/vdltest/vtype_native.go
new file mode 100644
index 0000000..191ea71
--- /dev/null
+++ b/vdl/vdltest/vtype_native.go
@@ -0,0 +1,313 @@
+// 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.
+
+package vdltest
+
+import (
+	"strconv"
+	"strings"
+)
+
+// The VNativeWire* types are the native types associated with wire types.  The
+// wire types are defined in vtype_manual.vdl.
+//
+// The naming is such that VWire* <-> VNativeWire*, e.g.  VWireBoolNString is
+// the wire type associated with the VNativeWireBoolNString native type, where
+// the wire type is bool, and the native type is string.
+type (
+	VNativeWireBoolNBool   bool
+	VNativeWireBoolNString string
+	VNativeWireBoolNStruct struct{ X string }
+
+	VNativeWireIntNInt    int
+	VNativeWireIntNString string
+	VNativeWireIntNStruct struct{ X string }
+
+	VNativeWireStringNString string
+	VNativeWireStringNStruct struct{ X string }
+
+	VNativeWireArrayNString string
+	VNativeWireArrayNStruct struct{ X string }
+
+	VNativeWireListNString string
+	VNativeWireListNStruct struct{ X string }
+
+	VNativeWireStructNString string
+	VNativeWireStructNStruct struct{ X string }
+	VNativeWireStructNArray  [1]string
+	VNativeWireStructNSlice  []string
+	// TODO(toddw): Add tests for native pointer and interface.
+	//   VNativeWireStructNPointer *string
+	//   VNativeWireStructNIface   interface {
+	//   	Value() string
+	//   }
+
+	VNativeWireUnionNString string
+	VNativeWireUnionNStruct struct{ X string }
+	VNativeWireUnionNArray  [1]string
+	VNativeWireUnionNSlice  []string
+	// TODO(toddw): Add tests for native pointer and interface.
+	//   VNativeWireUnionNPointer *string
+	//   VNativeWireUnionNIface   interface {
+	//   	Value() string
+	//   }
+)
+
+// VWireBoolN{Bool,String,Struct}
+
+func VWireBoolNBoolToNative(wire VWireBoolNBool, native *VNativeWireBoolNBool) error {
+	*native = VNativeWireBoolNBool(wire)
+	return nil
+}
+func VWireBoolNBoolFromNative(wire *VWireBoolNBool, native VNativeWireBoolNBool) error {
+	*wire = VWireBoolNBool(native)
+	return nil
+}
+func VWireBoolNStringToNative(wire VWireBoolNString, native *VNativeWireBoolNString) error {
+	*native = VNativeWireBoolNString(strconv.FormatBool(bool(wire)))
+	return nil
+}
+func VWireBoolNStringFromNative(wire *VWireBoolNString, native VNativeWireBoolNString) error {
+	*wire = native != ""
+	return nil
+}
+func VWireBoolNStructToNative(wire VWireBoolNStruct, native *VNativeWireBoolNStruct) error {
+	native.X = strconv.FormatBool(bool(wire))
+	return nil
+}
+func VWireBoolNStructFromNative(wire *VWireBoolNStruct, native VNativeWireBoolNStruct) error {
+	*wire = native.X != ""
+	return nil
+}
+
+// VWireIntN{Int,String,Struct}
+
+func VWireIntNIntToNative(wire VWireIntNInt, native *VNativeWireIntNInt) error {
+	*native = VNativeWireIntNInt(wire)
+	return nil
+}
+func VWireIntNIntFromNative(wire *VWireIntNInt, native VNativeWireIntNInt) error {
+	*wire = VWireIntNInt(native)
+	return nil
+}
+func VWireIntNStringToNative(wire VWireIntNString, native *VNativeWireIntNString) error {
+	*native = VNativeWireIntNString(strconv.Itoa(int(wire)))
+	return nil
+}
+func VWireIntNStringFromNative(wire *VWireIntNString, native VNativeWireIntNString) error {
+	x, err := strconv.Atoi(string(native))
+	if err != nil {
+		x = 0 // Ignore errors for this test type.
+	}
+	*wire = VWireIntNString(x)
+	return nil
+}
+func VWireIntNStructToNative(wire VWireIntNStruct, native *VNativeWireIntNStruct) error {
+	native.X = strconv.Itoa(int(wire))
+	return nil
+}
+func VWireIntNStructFromNative(wire *VWireIntNStruct, native VNativeWireIntNStruct) error {
+	x, err := strconv.Atoi(native.X)
+	if err != nil {
+		x = 0 // Ignore errors for this test type.
+	}
+	*wire = VWireIntNStruct(x)
+	return nil
+}
+
+// VWireStringN{String,Struct}
+
+func VWireStringNStringToNative(wire VWireStringNString, native *VNativeWireStringNString) error {
+	*native = VNativeWireStringNString(wire)
+	return nil
+}
+func VWireStringNStringFromNative(wire *VWireStringNString, native VNativeWireStringNString) error {
+	*wire = VWireStringNString(native)
+	return nil
+}
+func VWireStringNStructToNative(wire VWireStringNStruct, native *VNativeWireStringNStruct) error {
+	native.X = string(wire)
+	return nil
+}
+func VWireStringNStructFromNative(wire *VWireStringNStruct, native VNativeWireStringNStruct) error {
+	*wire = VWireStringNStruct(native.X)
+	return nil
+}
+
+// VWireArrayN{String,Struct}
+
+func VWireArrayNStringToNative(wire VWireArrayNString, native *VNativeWireArrayNString) error {
+	*native = VNativeWireArrayNString(wire[0])
+	return nil
+}
+func VWireArrayNStringFromNative(wire *VWireArrayNString, native VNativeWireArrayNString) error {
+	wire[0] = string(native)
+	return nil
+}
+func VWireArrayNStructToNative(wire VWireArrayNStruct, native *VNativeWireArrayNStruct) error {
+	native.X = wire[0]
+	return nil
+}
+func VWireArrayNStructFromNative(wire *VWireArrayNStruct, native VNativeWireArrayNStruct) error {
+	wire[0] = native.X
+	return nil
+}
+
+// VWireListN{String,Struct}
+
+func VWireListNStringToNative(wire VWireListNString, native *VNativeWireListNString) error {
+	*native = ""
+	for i, w := range wire {
+		if i > 0 {
+			*native += ","
+		}
+		*native += VNativeWireListNString(w)
+	}
+	return nil
+}
+func VWireListNStringFromNative(wire *VWireListNString, native VNativeWireListNString) error {
+	*wire = nil
+	if native != "" {
+		for _, n := range strings.Split(string(native), ",") {
+			*wire = append(*wire, n)
+		}
+	}
+	return nil
+}
+func VWireListNStructToNative(wire VWireListNStruct, native *VNativeWireListNStruct) error {
+	native.X = ""
+	for i, w := range wire {
+		if i > 0 {
+			native.X += ","
+		}
+		native.X += w
+	}
+	return nil
+}
+func VWireListNStructFromNative(wire *VWireListNStruct, native VNativeWireListNStruct) error {
+	*wire = nil
+	if native.X != "" {
+		for _, n := range strings.Split(native.X, ",") {
+			*wire = append(*wire, n)
+		}
+	}
+	return nil
+}
+
+// VWireStructN{String,Struct,Array,Slice,Pointer,Iface}
+
+func VWireStructNStringToNative(wire VWireStructNString, native *VNativeWireStructNString) error {
+	*native = VNativeWireStructNString(wire.X)
+	return nil
+}
+func VWireStructNStringFromNative(wire *VWireStructNString, native VNativeWireStructNString) error {
+	wire.X = string(native)
+	return nil
+}
+func VWireStructNStructToNative(wire VWireStructNStruct, native *VNativeWireStructNStruct) error {
+	native.X = wire.X
+	return nil
+}
+func VWireStructNStructFromNative(wire *VWireStructNStruct, native VNativeWireStructNStruct) error {
+	wire.X = native.X
+	return nil
+}
+func VWireStructNArrayToNative(wire VWireStructNArray, native *VNativeWireStructNArray) error {
+	native[0] = wire.X
+	return nil
+}
+func VWireStructNArrayFromNative(wire *VWireStructNArray, native VNativeWireStructNArray) error {
+	wire.X = native[0]
+	return nil
+}
+func VWireStructNSliceToNative(wire VWireStructNSlice, native *VNativeWireStructNSlice) error {
+	*native = nil
+	if wire.X != "" {
+		for _, w := range strings.Split(wire.X, ",") {
+			*native = append(*native, w)
+		}
+	}
+	return nil
+}
+func VWireStructNSliceFromNative(wire *VWireStructNSlice, native VNativeWireStructNSlice) error {
+	wire.X = ""
+	for i, n := range native {
+		if i > 0 {
+			wire.X += ","
+		}
+		wire.X += n
+	}
+	return nil
+}
+func (x VNativeWireStructNSlice) IsZero() bool {
+	return len(x) == 0
+}
+
+// VWireUnionN{String,Struct,Array,Slice,Pointer,Iface}
+
+func VWireUnionNStringToNative(wire VWireUnionNString, native *VNativeWireUnionNString) error {
+	switch wt := wire.(type) {
+	case VWireUnionNStringX:
+		*native = VNativeWireUnionNString(wt.Value)
+	default:
+		*native = ""
+	}
+	return nil
+}
+func VWireUnionNStringFromNative(wire *VWireUnionNString, native VNativeWireUnionNString) error {
+	*wire = VWireUnionNStringX{Value: string(native)}
+	return nil
+}
+func VWireUnionNStructToNative(wire VWireUnionNStruct, native *VNativeWireUnionNStruct) error {
+	switch wt := wire.(type) {
+	case VWireUnionNStructX:
+		native.X = wt.Value
+	default:
+		native.X = ""
+	}
+	return nil
+}
+func VWireUnionNStructFromNative(wire *VWireUnionNStruct, native VNativeWireUnionNStruct) error {
+	*wire = VWireUnionNStructX{Value: native.X}
+	return nil
+}
+func VWireUnionNArrayToNative(wire VWireUnionNArray, native *VNativeWireUnionNArray) error {
+	switch wt := wire.(type) {
+	case VWireUnionNArrayX:
+		native[0] = wt.Value
+	default:
+		native[0] = ""
+	}
+	return nil
+}
+func VWireUnionNArrayFromNative(wire *VWireUnionNArray, native VNativeWireUnionNArray) error {
+	*wire = VWireUnionNArrayX{Value: native[0]}
+	return nil
+}
+func VWireUnionNSliceToNative(wire VWireUnionNSlice, native *VNativeWireUnionNSlice) error {
+	*native = nil
+	switch wt := wire.(type) {
+	case VWireUnionNSliceX:
+		if wt.Value != "" {
+			for _, w := range strings.Split(wt.Value, ",") {
+				*native = append(*native, w)
+			}
+		}
+	}
+	return nil
+}
+func VWireUnionNSliceFromNative(wire *VWireUnionNSlice, native VNativeWireUnionNSlice) error {
+	x := ""
+	for i, n := range native {
+		if i > 0 {
+			x += ","
+		}
+		x += n
+	}
+	*wire = VWireUnionNSliceX{Value: x}
+	return nil
+}
+func (x VNativeWireUnionNSlice) IsZero() bool {
+	return len(x) == 0
+}
diff --git a/vdl/vdltest/xentry_fail_gen.vdl b/vdl/vdltest/xentry_fail_gen.vdl
index 3fe1bff..5ea9d96 100644
--- a/vdl/vdltest/xentry_fail_gen.vdl
+++ b/vdl/vdltest/xentry_fail_gen.vdl
@@ -9,39 +9,40 @@
 package vdltest
 
 // Entries: 0
-// ------------
-// |          |
-// ------------
-// |total     | [!can=0]
-// |isZero    | [!can=0]
-// ------------
-// |any       |
-// |optional  | [!can=0]
-// |bool      | [!can=0]
-// |byte      | [!can=0]
-// |uint16    | [!can=0]
-// |uint32    | [!can=0]
-// |uint64    | [!can=0]
-// |int8      | [!can=0]
-// |int16     | [!can=0]
-// |int32     | [!can=0]
-// |int64     | [!can=0]
-// |float32   | [!can=0]
-// |float64   | [!can=0]
-// |string    | [!can=0]
-// |enum      | [!can=0]
-// |typeobject|
-// |array     | [!can=0]
-// |list      | [!can=0]
-// |set       | [!can=0]
-// |map       | [!can=0]
-// |struct    | [!can=0]
-// |union     | [!can=0]
-// ------------
-// |IsNamed   | [!can=0]
-// |IsUnnamed | [!can=0]
-// |IsBytes   | [!can=0]
-// ------------
+// ---------------
+// |             |
+// ---------------
+// |total        | [!can=0]
+// |isZero       | [!can=0]
+// ---------------
+// |any          |
+// |optional     | [!can=0]
+// |bool         | [!can=0]
+// |byte         | [!can=0]
+// |uint16       | [!can=0]
+// |uint32       | [!can=0]
+// |uint64       | [!can=0]
+// |int8         | [!can=0]
+// |int16        | [!can=0]
+// |int32        | [!can=0]
+// |int64        | [!can=0]
+// |float32      | [!can=0]
+// |float64      | [!can=0]
+// |string       | [!can=0]
+// |enum         | [!can=0]
+// |typeobject   |
+// |array        | [!can=0]
+// |list         | [!can=0]
+// |set          | [!can=0]
+// |map          | [!can=0]
+// |struct       | [!can=0]
+// |union        | [!can=0]
+// ---------------
+// |IsNamed      | [!can=0]
+// |IsUnnamed    | [!can=0]
+// |IsBytes      | [!can=0]
+// |IsPartOfCycle| [!can=0]
+// ---------------
 // 
 // Each column has a pair of entry counts (canonical,non-canonical), computed
 // from the Source value.  An entry is canonical if Target == Source.
diff --git a/vdl/vdltest/xentry_pass_gen.vdl b/vdl/vdltest/xentry_pass_gen.vdl
index ecc1efd..19e9d27 100644
--- a/vdl/vdltest/xentry_pass_gen.vdl
+++ b/vdl/vdltest/xentry_pass_gen.vdl
@@ -8,40 +8,41 @@
 
 package vdltest
 
-// Entries: 1999
-// ----------------------------------------------------------------------------------
-// |          | Total  |+Max |+Min |-Max|-Min| Full  |NilAny|Random | Zero  |isZero |
-// ----------------------------------------------------------------------------------
-// |total     |822,1177|10,57|10,92|6,22|6,32|289,277|  0, 7|210,194|291,496|291,342| [!can max=11]
-// |isZero    |291, 342| 0, 0| 0, 0|0, 0|0, 0|  0,  2|  0, 7|  0,  2|291,331|291,342| [!can max=3]
-// ----------------------------------------------------------------------------------
-// |any       |  0,   7| 0, 0| 0, 0|0, 0|0, 0|  0,  0|  0, 7|  0,  0|  0,  0|  0,  7| [nil=7]
-// |optional  | 18,  61| 0, 0| 0, 0|0, 0|0, 0|  7,  4|  0, 0|  4,  4|  7, 53|  7,  9| [!can max=3] [nil=16]
-// |bool      |  2,   2| 0, 0| 0, 0|0, 0|0, 0|  1,  1|  0, 0|  0,  0|  1,  1|  1,  1| [!can max=1]
-// |byte      |  5,  11| 1, 1| 1, 9|0, 0|0, 0|  1,  0|  0, 0|  1,  0|  1,  1|  1,  1| [!can max=11]
-// |uint16    |  5,  17| 1, 6| 1, 9|0, 0|0, 0|  1,  1|  0, 0|  1,  0|  1,  1|  1,  1| [!can max=11]
-// |uint32    |  5,  17| 1, 6| 1, 8|0, 0|0, 0|  1,  0|  0, 0|  1,  0|  1,  3|  1,  3| [!can max=11]
-// |uint64    |  5,  24| 1,13| 1, 8|0, 0|0, 0|  1,  0|  0, 0|  1,  1|  1,  2|  1,  2| [!can max=11]
-// |int8      |  7,  16| 1, 0| 1, 7|1, 0|1, 4|  1,  2|  0, 0|  1,  0|  1,  3|  1,  3| [!can max=11]
-// |int16     |  7,  22| 1, 2| 1, 8|1, 2|1, 4|  1,  1|  0, 0|  1,  0|  1,  5|  1,  5| [!can max=11]
-// |int32     |  7,  21| 1, 4| 1, 8|1, 3|1, 5|  1,  0|  0, 0|  1,  1|  1,  0|  1,  0| [!can max=11]
-// |int64     |  7,  35| 1, 9| 1, 9|1, 6|1, 5|  1,  0|  0, 0|  1,  4|  1,  2|  1,  2| [!can max=11]
-// |float32   |  7,  33| 1, 7| 1,10|1, 4|1, 7|  1,  4|  0, 0|  1,  0|  1,  1|  1,  1| [!can max=3]
-// |float64   |  7,  47| 1, 9| 1,16|1, 7|1, 7|  1,  2|  0, 0|  1,  4|  1,  2|  1,  2| [!can max=2]
-// |string    |  3,  14| 0, 0| 0, 0|0, 0|0, 0|  1,  9|  0, 0|  1,  1|  1,  4|  1,  1| [!can max=1]
-// |enum      |  6,   4| 0, 0| 0, 0|0, 0|0, 0|  4,  3|  0, 0|  0,  0|  2,  1|  2,  1| [!can max=3]
-// |typeobject|  0,   0| 0, 0| 0, 0|0, 0|0, 0|  0,  0|  0, 0|  0,  0|  0,  0|  0,  0|
-// |array     | 88,  19| 0, 0| 0, 0|0, 0|0, 0| 31,  6|  0, 0| 25,  8| 32,  5| 32,  2| [!can max=2] [len min=1 max=3]
-// |list      |147, 304| 0, 0| 0, 0|0, 0|0, 0| 56, 81|  0, 0| 35, 52| 56,171| 56,112| [!can max=2] [len max=3]
-// |set       | 83,  93| 0, 0| 0, 0|0, 0|0, 0| 32, 26|  0, 0| 19, 15| 32, 52| 32, 52| [!can max=2] [len max=3]
-// |map       | 91,  92| 0, 0| 0, 0|0, 0|0, 0| 34, 24|  0, 0| 23, 14| 34, 54| 34, 54| [!can max=2] [len max=3]
-// |struct    |163, 175| 0, 0| 0, 0|0, 0|0, 0| 57, 57|  0, 0| 47, 44| 59, 74| 59, 75| [!can max=2]
-// |union     |159, 163| 0, 0| 0, 0|0, 0|0, 0| 56, 56|  0, 0| 46, 46| 57, 61| 57,  8| [!can max=2]
-// ----------------------------------------------------------------------------------
-// |IsNamed   |668, 765|10,39|10,73|6,12|6,21|230,194|  0, 0|174,137|232,289|232,196| [!can max=11]
-// |IsUnnamed |154, 412| 0,18| 0,19|0,10|0,11| 59, 83|  0, 7| 36, 57| 59,207| 59,146| [!can max=3]
-// |IsBytes   | 15,  16| 0, 0| 0, 0|0, 0|0, 0|  5,  5|  0, 0|  5,  1|  5, 10|  5,  8| [!can max=2]
-// ----------------------------------------------------------------------------------
+// Entries: 2014
+// -------------------------------------------------------------------------------------
+// |             | Total  |+Max |+Min |-Max|-Min| Full  |NilAny|Random | Zero  |isZero |
+// -------------------------------------------------------------------------------------
+// |total        |831,1183|10,57|10,92|6,22|6,32|292,277|  0, 7|213,194|294,502|294,347| [!can max=11]
+// |isZero       |294, 347| 0, 0| 0, 0|0, 0|0, 0|  0,  2|  0, 7|  0,  2|294,336|294,347| [!can max=3]
+// -------------------------------------------------------------------------------------
+// |any          |  0,   7| 0, 0| 0, 0|0, 0|0, 0|  0,  0|  0, 7|  0,  0|  0,  0|  0,  7| [nil=7]
+// |optional     | 18,  62| 0, 0| 0, 0|0, 0|0, 0|  7,  4|  0, 0|  4,  4|  7, 54|  7,  9| [!can max=3] [nil=16]
+// |bool         |  2,   2| 0, 0| 0, 0|0, 0|0, 0|  1,  1|  0, 0|  0,  0|  1,  1|  1,  1| [!can max=1]
+// |byte         |  5,  11| 1, 1| 1, 9|0, 0|0, 0|  1,  0|  0, 0|  1,  0|  1,  1|  1,  1| [!can max=11]
+// |uint16       |  5,  17| 1, 6| 1, 9|0, 0|0, 0|  1,  1|  0, 0|  1,  0|  1,  1|  1,  1| [!can max=11]
+// |uint32       |  5,  17| 1, 6| 1, 8|0, 0|0, 0|  1,  0|  0, 0|  1,  0|  1,  3|  1,  3| [!can max=11]
+// |uint64       |  5,  24| 1,13| 1, 8|0, 0|0, 0|  1,  0|  0, 0|  1,  1|  1,  2|  1,  2| [!can max=11]
+// |int8         |  7,  16| 1, 0| 1, 7|1, 0|1, 4|  1,  2|  0, 0|  1,  0|  1,  3|  1,  3| [!can max=11]
+// |int16        |  7,  22| 1, 2| 1, 8|1, 2|1, 4|  1,  1|  0, 0|  1,  0|  1,  5|  1,  5| [!can max=11]
+// |int32        |  7,  21| 1, 4| 1, 8|1, 3|1, 5|  1,  0|  0, 0|  1,  1|  1,  0|  1,  0| [!can max=11]
+// |int64        |  7,  35| 1, 9| 1, 9|1, 6|1, 5|  1,  0|  0, 0|  1,  4|  1,  2|  1,  2| [!can max=11]
+// |float32      |  7,  33| 1, 7| 1,10|1, 4|1, 7|  1,  4|  0, 0|  1,  0|  1,  1|  1,  1| [!can max=3]
+// |float64      |  7,  47| 1, 9| 1,16|1, 7|1, 7|  1,  2|  0, 0|  1,  4|  1,  2|  1,  2| [!can max=2]
+// |string       |  3,  14| 0, 0| 0, 0|0, 0|0, 0|  1,  9|  0, 0|  1,  1|  1,  4|  1,  1| [!can max=1]
+// |enum         |  6,   4| 0, 0| 0, 0|0, 0|0, 0|  4,  3|  0, 0|  0,  0|  2,  1|  2,  1| [!can max=3]
+// |typeobject   |  0,   0| 0, 0| 0, 0|0, 0|0, 0|  0,  0|  0, 0|  0,  0|  0,  0|  0,  0|
+// |array        | 88,  19| 0, 0| 0, 0|0, 0|0, 0| 31,  6|  0, 0| 25,  8| 32,  5| 32,  2| [!can max=2] [len min=1 max=3]
+// |list         |147, 304| 0, 0| 0, 0|0, 0|0, 0| 56, 81|  0, 0| 35, 52| 56,171| 56,112| [!can max=2] [len max=3]
+// |set          | 83,  93| 0, 0| 0, 0|0, 0|0, 0| 32, 26|  0, 0| 19, 15| 32, 52| 32, 52| [!can max=2] [len max=3]
+// |map          | 91,  92| 0, 0| 0, 0|0, 0|0, 0| 34, 24|  0, 0| 23, 14| 34, 54| 34, 54| [!can max=2] [len max=3]
+// |struct       |172, 180| 0, 0| 0, 0|0, 0|0, 0| 60, 57|  0, 0| 50, 44| 62, 79| 62, 80| [!can max=2]
+// |union        |159, 163| 0, 0| 0, 0|0, 0|0, 0| 56, 56|  0, 0| 46, 46| 57, 61| 57,  8| [!can max=2]
+// -------------------------------------------------------------------------------------
+// |IsNamed      |677, 770|10,39|10,73|6,12|6,21|233,194|  0, 0|177,137|235,294|235,201| [!can max=11]
+// |IsUnnamed    |154, 413| 0,18| 0,19|0,10|0,11| 59, 83|  0, 7| 36, 57| 59,208| 59,146| [!can max=3]
+// |IsBytes      | 15,  16| 0, 0| 0, 0|0, 0|0, 0|  5,  5|  0, 0|  5,  1|  5, 10|  5,  8| [!can max=2]
+// |IsPartOfCycle|  9,   2| 0, 0| 0, 0|0, 0|0, 0|  3,  0|  0, 0|  3,  0|  3,  2|  3,  2| [!can max=2]
+// -------------------------------------------------------------------------------------
 // 
 // Each column has a pair of entry counts (canonical,non-canonical), computed
 // from the Source value.  An entry is canonical if Target == Source.
@@ -8466,4 +8467,53 @@
 	  `XStructDepth3_XArray1_Set_XEnumBcd{F0: {{D}}}`,
 	  XStructDepth3_XArray1_Set_XEnumBcd{F0: {{D}}},
 	},
+	// Canonical
+	{ true, `Zero`, `XSelfCycle{}`, XSelfCycle{}, `XSelfCycle{}`, XSelfCycle{} },
+	{ false, `Zero`, `XSelfCycle{}`, XSelfCycle{}, `XMutualCycleB{}`, XMutualCycleB{} },
+	{ false, `Zero`, `XSelfCycle{}`, XSelfCycle{}, `XStructEmpty{}`, XStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}`,
+	  XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}},
+	  `XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}`,
+	  XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `XSelfCycle{Next: {Data: 2253179390369614770, Next: {}}}`,
+	  XSelfCycle{Next: {Data: 2253179390369614770, Next: {}}},
+	  `XSelfCycle{Next: {Data: 2253179390369614770, Next: {}}}`,
+	  XSelfCycle{Next: {Data: 2253179390369614770, Next: {}}},
+	},
+	// Canonical
+	{ true, `Zero`, `XMutualCycleB{}`, XMutualCycleB{}, `XMutualCycleB{}`, XMutualCycleB{} },
+	{ false, `Zero`, `XMutualCycleB{}`, XMutualCycleB{}, `?XStructEmpty{}`, ?XStructEmpty{} },
+	{ false, `Zero`, `XMutualCycleB{}`, XMutualCycleB{}, `XStructEmpty{}`, XStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}`,
+	  XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}},
+	  `XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}`,
+	  XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}},
+	},
+	// Canonical
+	{ true, `Random0`, `XMutualCycleB{A: {}}`, XMutualCycleB{A: {}}, `XMutualCycleB{A: {}}`, XMutualCycleB{A: {}} },
+	// Canonical
+	{ true, `Zero`, `XMutualCycleA{}`, XMutualCycleA{}, `XMutualCycleA{}`, XMutualCycleA{} },
+	{ false, `Zero`, `XMutualCycleA{}`, XMutualCycleA{}, `XSelfCycle{}`, XSelfCycle{} },
+	{ false, `Zero`, `XMutualCycleA{}`, XMutualCycleA{}, `XStructEmpty{}`, XStructEmpty{} },
+	// Canonical
+	{ true, `Full`,
+	  `XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}`,
+	  XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}},
+	  `XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}`,
+	  XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}},
+	},
+	// Canonical
+	{ true, `Random0`,
+	  `XMutualCycleA{Data: -1006823554338124716, B: {}}`,
+	  XMutualCycleA{Data: -1006823554338124716, B: {}},
+	  `XMutualCycleA{Data: -1006823554338124716, B: {}}`,
+	  XMutualCycleA{Data: -1006823554338124716, B: {}},
+	},
 }
diff --git a/vdl/vdltest/xtype_manual.vdl b/vdl/vdltest/xtype_manual.vdl
new file mode 100644
index 0000000..e5aee9e
--- /dev/null
+++ b/vdl/vdltest/xtype_manual.vdl
@@ -0,0 +1,28 @@
+// 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.
+
+package vdltest
+
+// FOR EACH TYPE ADDED OR UPDATED, CONSIDER ALSO UPDATING vtype_manual.vdl
+//
+// While the types in xtype_gen.vdl are automatically generated, the types in
+// this file are created by-hand, to handle special cases.
+
+// XSelfCycle tests self-cyclic types.
+type XSelfCycle struct {
+	Data int64
+	Next ?XSelfCycle
+}
+
+// XMutualCycleA tests mutually cyclic types A and B.
+type XMutualCycleA struct {
+	Data int64
+	B ?XMutualCycleB
+}
+
+// XMutualCycleB tests mutually cyclic types A and B.
+type XMutualCycleB struct {
+	Data int64
+	A ?XMutualCycleA
+}
diff --git a/vdlroot/time/time.vdl.go b/vdlroot/time/time.vdl.go
index cea33c0..4d6ec3f 100644
--- a/vdlroot/time/time.vdl.go
+++ b/vdlroot/time/time.vdl.go
@@ -586,7 +586,7 @@
 	if err := enc.StartValue(vdl.TypeOf((*WireDeadline)(nil)).Elem()); err != nil {
 		return err
 	}
-	if x.FromNow != time.Duration(0) {
+	if x.FromNow != 0 {
 		if err := enc.NextField("FromNow"); err != nil {
 			return err
 		}
diff --git a/vdlroot/vdltool/config.vdl b/vdlroot/vdltool/config.vdl
index b3f68a7..7aedf80 100644
--- a/vdlroot/vdltool/config.vdl
+++ b/vdlroot/vdltool/config.vdl
@@ -62,24 +62,25 @@
 	// Kind is the kind of Type.
 	Kind GoKind
 	// Type is the Go type to use in generated code, instead of the VDL type.
-	//
-	// If the Go type requires additional imports, specify the type using the
-	// standard local package name here, and also specify the import package in
-	// Imports.  E.g. to specify the native type time.Duration:
-	//   Kind:    Number
-	//   Type:    "time.Duration",
-	//   Imports: {{Path: "time", Name: "time"}},
-	//   Zero:    {Mode: Unique}
 	Type string
-	// ToNative and FromNative override the default name for the native conversion
-	// function with a custom function.
-	// e.g. "verror.ErrorToNative"
+	// Zero specifies zero value setting and checking behavior.
+	Zero GoZero
+	// ToNative and FromNative overrides the names of the native conversion
+	// functions.  If unspecified, the default functions are of the form:
+	//   WireTypeToNative(wire WireType, native *NativeType) error
+	//   WireTypeFromNative(wire *WireType, native NativeType) error
 	ToNative string
 	FromNative string
-	// Imports are the Go imports required by the Type, used in generated code.
+	// Imports are the Go imports referenced by the Type, ToNative and FromNative
+	// fields.  In each field, use the standard local package name, and specify
+	// the import package here.  E.g. to specify the native type time.Time:
+	//   GoType{
+	//     Kind:    Struct,
+	//     Type:    "time.Time",
+	//     Zero:    {Mode: Canonical, IsZero: ".IsZero()"},
+	//     Imports: {{Path: "time", Name: "time"}},
+	//   }
 	Imports []GoImport
-	// Zero specifies special behavior for zero value setting and checking.
-	Zero GoZero
 }
 
 // GoKind describes the kind of Go type.
@@ -119,16 +120,13 @@
 	// apply the IsZero string verbatim to expressions of the native type.
 	//
 	// If IsZero doesn't start with a dot(.), it is assumed to be a function whose
-	// return type must be bool.  Generated code will call the function with all
-	// occurrences of XXX replaced with an expression of the native type.
+	// return type must be bool.  Generated code will call the function with a
+	// single argument that is an expression of the native type.
 	//
-	// TODO(toddw): The function form of IsZero isn't implemented, and also needs
-	// another field to handle imports:
-	//    IsZeroImports []GoImport
+	// TODO(toddw): The function form of IsZero isn't implemented.
 	IsZero string
 	// TODO(toddw): Add a SetZero field, which is like IsZero, but returns an
-	// expression that sets the zero value.  It also needs a []GoImport field to
-	// handle imports.
+	// expression that sets the zero value.
 }
 
 // GoZeroMode describes the relationship between the Go zero value of the native
diff --git a/vdlroot/vdltool/vdltool.vdl.go b/vdlroot/vdltool/vdltool.vdl.go
index 214d3c1..5696cc8 100644
--- a/vdlroot/vdltool/vdltool.vdl.go
+++ b/vdlroot/vdltool/vdltool.vdl.go
@@ -310,6 +310,325 @@
 	return dec.FinishValue()
 }
 
+// GoZeroMode describes the relationship between the Go zero value of the native
+// type, and the VDL zero value.
+type GoZeroMode int
+
+const (
+	GoZeroModeUnknown GoZeroMode = iota
+	GoZeroModeCanonical
+	GoZeroModeUnique
+)
+
+// GoZeroModeAll holds all labels for GoZeroMode.
+var GoZeroModeAll = [...]GoZeroMode{GoZeroModeUnknown, GoZeroModeCanonical, GoZeroModeUnique}
+
+// GoZeroModeFromString creates a GoZeroMode from a string label.
+func GoZeroModeFromString(label string) (x GoZeroMode, err error) {
+	err = x.Set(label)
+	return
+}
+
+// Set assigns label to x.
+func (x *GoZeroMode) Set(label string) error {
+	switch label {
+	case "Unknown", "unknown":
+		*x = GoZeroModeUnknown
+		return nil
+	case "Canonical", "canonical":
+		*x = GoZeroModeCanonical
+		return nil
+	case "Unique", "unique":
+		*x = GoZeroModeUnique
+		return nil
+	}
+	*x = -1
+	return fmt.Errorf("unknown label %q in vdltool.GoZeroMode", label)
+}
+
+// String returns the string label of x.
+func (x GoZeroMode) String() string {
+	switch x {
+	case GoZeroModeUnknown:
+		return "Unknown"
+	case GoZeroModeCanonical:
+		return "Canonical"
+	case GoZeroModeUnique:
+		return "Unique"
+	}
+	return ""
+}
+
+func (GoZeroMode) __VDLReflect(struct {
+	Name string `vdl:"vdltool.GoZeroMode"`
+	Enum struct{ Unknown, Canonical, Unique string }
+}) {
+}
+
+func (m *GoZeroMode) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *GoZeroMode) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+type GoZeroModeTarget struct {
+	Value *GoZeroMode
+	vdl.TargetBase
+}
+
+func (t *GoZeroModeTarget) FromEnumLabel(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*GoZeroMode)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	switch src {
+	case "Unknown":
+		*t.Value = 0
+	case "Canonical":
+		*t.Value = 1
+	case "Unique":
+		*t.Value = 2
+	default:
+		return fmt.Errorf("label %s not in enum GoZeroMode", src)
+	}
+
+	return nil
+}
+
+func (x GoZeroMode) VDLIsZero() bool {
+	return x == GoZeroModeUnknown
+}
+
+func (x GoZeroMode) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*GoZeroMode)(nil))); err != nil {
+		return err
+	}
+	if err := enc.EncodeString(x.String()); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *GoZeroMode) VDLRead(dec vdl.Decoder) error {
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	enum, err := dec.DecodeString()
+	if err != nil {
+		return err
+	}
+	if err := x.Set(enum); err != nil {
+		return err
+	}
+	return dec.FinishValue()
+}
+
+// GoZero describes Go zero value behavior.
+//
+// REQUIRED: Either Mode == Unique or IsZero is set.  We will not perform
+// native/wire conversions to check zero values.
+type GoZero struct {
+	Mode GoZeroMode
+	// IsZero specifies a field, method or function that returns true iff the
+	// native value represents the VDL zero value.
+	//
+	// If IsZero starts with a dot (.), it is assumed to be a field or method.
+	// The field type or method return type must be bool.  Generated code will
+	// apply the IsZero string verbatim to expressions of the native type.
+	//
+	// If IsZero doesn't start with a dot(.), it is assumed to be a function whose
+	// return type must be bool.  Generated code will call the function with a
+	// single argument that is an expression of the native type.
+	//
+	// TODO(toddw): The function form of IsZero isn't implemented.
+	IsZero string
+}
+
+func (GoZero) __VDLReflect(struct {
+	Name string `vdl:"vdltool.GoZero"`
+}) {
+}
+
+func (m *GoZero) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	var4 := (m.Mode == GoZeroModeUnknown)
+	if var4 {
+		if err := fieldsTarget1.ZeroField("Mode"); err != nil && err != vdl.ErrFieldNoExist {
+			return err
+		}
+	} else {
+		keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Mode")
+		if err != vdl.ErrFieldNoExist {
+			if err != nil {
+				return err
+			}
+
+			if err := m.Mode.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+			if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+				return err
+			}
+		}
+	}
+	var7 := (m.IsZero == "")
+	if var7 {
+		if err := fieldsTarget1.ZeroField("IsZero"); err != nil && err != vdl.ErrFieldNoExist {
+			return err
+		}
+	} else {
+		keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("IsZero")
+		if err != vdl.ErrFieldNoExist {
+			if err != nil {
+				return err
+			}
+			if err := fieldTarget6.FromString(string(m.IsZero), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+			if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+				return err
+			}
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *GoZero) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+type GoZeroTarget struct {
+	Value *GoZero
+
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *GoZeroTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*GoZero)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *GoZeroTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Mode":
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Mode))
+		return nil, target, err
+	case "IsZero":
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.IsZero))
+		return nil, target, err
+	default:
+		return nil, nil, vdl.ErrFieldNoExist
+	}
+}
+func (t *GoZeroTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *GoZeroTarget) ZeroField(name string) error {
+	switch name {
+	case "Mode":
+		t.Value.Mode = GoZeroModeUnknown
+		return nil
+	case "IsZero":
+		t.Value.IsZero = ""
+		return nil
+	default:
+		return vdl.ErrFieldNoExist
+	}
+}
+func (t *GoZeroTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+
+func (x GoZero) VDLIsZero() bool {
+	return x == GoZero{}
+}
+
+func (x GoZero) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(vdl.TypeOf((*GoZero)(nil)).Elem()); err != nil {
+		return err
+	}
+	if x.Mode != GoZeroModeUnknown {
+		if err := enc.NextField("Mode"); err != nil {
+			return err
+		}
+		if err := x.Mode.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if x.IsZero != "" {
+		if err := enc.NextField("IsZero"); err != nil {
+			return err
+		}
+		if err := enc.StartValue(vdl.StringType); err != nil {
+			return err
+		}
+		if err := enc.EncodeString(x.IsZero); err != nil {
+			return err
+		}
+		if err := enc.FinishValue(); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *GoZero) VDLRead(dec vdl.Decoder) error {
+	*x = GoZero{}
+	if err := dec.StartValue(); err != nil {
+		return err
+	}
+	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
+		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "Mode":
+			if err := x.Mode.VDLRead(dec); err != nil {
+				return err
+			}
+		case "IsZero":
+			if err := dec.StartValue(); err != nil {
+				return err
+			}
+			var err error
+			if x.IsZero, err = dec.DecodeString(); err != nil {
+				return err
+			}
+			if err := dec.FinishValue(); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
 // GoImport describes Go import information.
 type GoImport struct {
 	// Path is the package path that uniquely identifies the imported package.
@@ -512,351 +831,31 @@
 	}
 }
 
-// GoZeroMode describes the relationship between the Go zero value of the native
-// type, and the VDL zero value.
-type GoZeroMode int
-
-const (
-	GoZeroModeUnknown GoZeroMode = iota
-	GoZeroModeCanonical
-	GoZeroModeUnique
-)
-
-// GoZeroModeAll holds all labels for GoZeroMode.
-var GoZeroModeAll = [...]GoZeroMode{GoZeroModeUnknown, GoZeroModeCanonical, GoZeroModeUnique}
-
-// GoZeroModeFromString creates a GoZeroMode from a string label.
-func GoZeroModeFromString(label string) (x GoZeroMode, err error) {
-	err = x.Set(label)
-	return
-}
-
-// Set assigns label to x.
-func (x *GoZeroMode) Set(label string) error {
-	switch label {
-	case "Unknown", "unknown":
-		*x = GoZeroModeUnknown
-		return nil
-	case "Canonical", "canonical":
-		*x = GoZeroModeCanonical
-		return nil
-	case "Unique", "unique":
-		*x = GoZeroModeUnique
-		return nil
-	}
-	*x = -1
-	return fmt.Errorf("unknown label %q in vdltool.GoZeroMode", label)
-}
-
-// String returns the string label of x.
-func (x GoZeroMode) String() string {
-	switch x {
-	case GoZeroModeUnknown:
-		return "Unknown"
-	case GoZeroModeCanonical:
-		return "Canonical"
-	case GoZeroModeUnique:
-		return "Unique"
-	}
-	return ""
-}
-
-func (GoZeroMode) __VDLReflect(struct {
-	Name string `vdl:"vdltool.GoZeroMode"`
-	Enum struct{ Unknown, Canonical, Unique string }
-}) {
-}
-
-func (m *GoZeroMode) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
-	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (m *GoZeroMode) MakeVDLTarget() vdl.Target {
-	return nil
-}
-
-type GoZeroModeTarget struct {
-	Value *GoZeroMode
-	vdl.TargetBase
-}
-
-func (t *GoZeroModeTarget) FromEnumLabel(src string, tt *vdl.Type) error {
-
-	if ttWant := vdl.TypeOf((*GoZeroMode)(nil)); !vdl.Compatible(tt, ttWant) {
-		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	switch src {
-	case "Unknown":
-		*t.Value = 0
-	case "Canonical":
-		*t.Value = 1
-	case "Unique":
-		*t.Value = 2
-	default:
-		return fmt.Errorf("label %s not in enum GoZeroMode", src)
-	}
-
-	return nil
-}
-
-func (x GoZeroMode) VDLIsZero() bool {
-	return x == GoZeroModeUnknown
-}
-
-func (x GoZeroMode) VDLWrite(enc vdl.Encoder) error {
-	if err := enc.StartValue(vdl.TypeOf((*GoZeroMode)(nil))); err != nil {
-		return err
-	}
-	if err := enc.EncodeString(x.String()); err != nil {
-		return err
-	}
-	return enc.FinishValue()
-}
-
-func (x *GoZeroMode) VDLRead(dec vdl.Decoder) error {
-	if err := dec.StartValue(); err != nil {
-		return err
-	}
-	enum, err := dec.DecodeString()
-	if err != nil {
-		return err
-	}
-	if err := x.Set(enum); err != nil {
-		return err
-	}
-	return dec.FinishValue()
-}
-
-// GoZero describes Go zero value behavior.
-//
-// REQUIRED: Either Mode == Unique or IsZero is set.  We will not perform
-// native/wire conversions to check zero values.
-type GoZero struct {
-	Mode GoZeroMode
-	// IsZero specifies a field, method or function that returns true iff the
-	// native value represents the VDL zero value.
-	//
-	// If IsZero starts with a dot (.), it is assumed to be a field or method.
-	// The field type or method return type must be bool.  Generated code will
-	// apply the IsZero string verbatim to expressions of the native type.
-	//
-	// If IsZero doesn't start with a dot(.), it is assumed to be a function whose
-	// return type must be bool.  Generated code will call the function with all
-	// occurrences of XXX replaced with an expression of the native type.
-	//
-	// TODO(toddw): The function form of IsZero isn't implemented, and also needs
-	// another field to handle imports:
-	//    IsZeroImports []GoImport
-	IsZero string
-}
-
-func (GoZero) __VDLReflect(struct {
-	Name string `vdl:"vdltool.GoZero"`
-}) {
-}
-
-func (m *GoZero) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
-	fieldsTarget1, err := t.StartFields(tt)
-	if err != nil {
-		return err
-	}
-	var4 := (m.Mode == GoZeroModeUnknown)
-	if var4 {
-		if err := fieldsTarget1.ZeroField("Mode"); err != nil && err != vdl.ErrFieldNoExist {
-			return err
-		}
-	} else {
-		keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Mode")
-		if err != vdl.ErrFieldNoExist {
-			if err != nil {
-				return err
-			}
-
-			if err := m.Mode.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-				return err
-			}
-			if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
-				return err
-			}
-		}
-	}
-	var7 := (m.IsZero == "")
-	if var7 {
-		if err := fieldsTarget1.ZeroField("IsZero"); err != nil && err != vdl.ErrFieldNoExist {
-			return err
-		}
-	} else {
-		keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("IsZero")
-		if err != vdl.ErrFieldNoExist {
-			if err != nil {
-				return err
-			}
-			if err := fieldTarget6.FromString(string(m.IsZero), tt.NonOptional().Field(1).Type); err != nil {
-				return err
-			}
-			if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
-				return err
-			}
-		}
-	}
-	if err := t.FinishFields(fieldsTarget1); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (m *GoZero) MakeVDLTarget() vdl.Target {
-	return nil
-}
-
-type GoZeroTarget struct {
-	Value *GoZero
-
-	vdl.TargetBase
-	vdl.FieldsTargetBase
-}
-
-func (t *GoZeroTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
-
-	if ttWant := vdl.TypeOf((*GoZero)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	return t, nil
-}
-func (t *GoZeroTarget) StartField(name string) (key, field vdl.Target, _ error) {
-	switch name {
-	case "Mode":
-		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Mode))
-		return nil, target, err
-	case "IsZero":
-		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.IsZero))
-		return nil, target, err
-	default:
-		return nil, nil, vdl.ErrFieldNoExist
-	}
-}
-func (t *GoZeroTarget) FinishField(_, _ vdl.Target) error {
-	return nil
-}
-func (t *GoZeroTarget) ZeroField(name string) error {
-	switch name {
-	case "Mode":
-		t.Value.Mode = GoZeroModeUnknown
-		return nil
-	case "IsZero":
-		t.Value.IsZero = ""
-		return nil
-	default:
-		return vdl.ErrFieldNoExist
-	}
-}
-func (t *GoZeroTarget) FinishFields(_ vdl.FieldsTarget) error {
-
-	return nil
-}
-
-func (x GoZero) VDLIsZero() bool {
-	return x == GoZero{}
-}
-
-func (x GoZero) VDLWrite(enc vdl.Encoder) error {
-	if err := enc.StartValue(vdl.TypeOf((*GoZero)(nil)).Elem()); err != nil {
-		return err
-	}
-	if x.Mode != GoZeroModeUnknown {
-		if err := enc.NextField("Mode"); err != nil {
-			return err
-		}
-		if err := x.Mode.VDLWrite(enc); err != nil {
-			return err
-		}
-	}
-	if x.IsZero != "" {
-		if err := enc.NextField("IsZero"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.IsZero); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
-			return err
-		}
-	}
-	if err := enc.NextField(""); err != nil {
-		return err
-	}
-	return enc.FinishValue()
-}
-
-func (x *GoZero) VDLRead(dec vdl.Decoder) error {
-	*x = GoZero{}
-	if err := dec.StartValue(); err != nil {
-		return err
-	}
-	if (dec.StackDepth() == 1 || dec.IsAny()) && !vdl.Compatible(vdl.TypeOf(*x), dec.Type()) {
-		return fmt.Errorf("incompatible struct %T, from %v", *x, dec.Type())
-	}
-	for {
-		f, err := dec.NextField()
-		if err != nil {
-			return err
-		}
-		switch f {
-		case "":
-			return dec.FinishValue()
-		case "Mode":
-			if err := x.Mode.VDLRead(dec); err != nil {
-				return err
-			}
-		case "IsZero":
-			if err := dec.StartValue(); err != nil {
-				return err
-			}
-			var err error
-			if x.IsZero, err = dec.DecodeString(); err != nil {
-				return err
-			}
-			if err := dec.FinishValue(); err != nil {
-				return err
-			}
-		default:
-			if err := dec.SkipValue(); err != nil {
-				return err
-			}
-		}
-	}
-}
-
 // GoType describes the Go type information associated with a VDL type.
 // See v.io/x/ref/lib/vdl/testdata/native for examples.
 type GoType struct {
 	// Kind is the kind of Type.
 	Kind GoKind
 	// Type is the Go type to use in generated code, instead of the VDL type.
-	//
-	// If the Go type requires additional imports, specify the type using the
-	// standard local package name here, and also specify the import package in
-	// Imports.  E.g. to specify the native type time.Duration:
-	//   Kind:    Number
-	//   Type:    "time.Duration",
-	//   Imports: {{Path: "time", Name: "time"}},
-	//   Zero:    {Mode: Unique}
 	Type string
-	// ToNative and FromNative override the default name for the native conversion
-	// function with a custom function.
-	// e.g. "verror.ErrorToNative"
+	// Zero specifies zero value setting and checking behavior.
+	Zero GoZero
+	// ToNative and FromNative overrides the names of the native conversion
+	// functions.  If unspecified, the default functions are of the form:
+	//   WireTypeToNative(wire WireType, native *NativeType) error
+	//   WireTypeFromNative(wire *WireType, native NativeType) error
 	ToNative   string
 	FromNative string
-	// Imports are the Go imports required by the Type, used in generated code.
+	// Imports are the Go imports referenced by the Type, ToNative and FromNative
+	// fields.  In each field, use the standard local package name, and specify
+	// the import package here.  E.g. to specify the native type time.Time:
+	//   GoType{
+	//     Kind:    Struct,
+	//     Type:    "time.Time",
+	//     Zero:    {Mode: Canonical, IsZero: ".IsZero()"},
+	//     Imports: {{Path: "time", Name: "time"}},
+	//   }
 	Imports []GoImport
-	// Zero specifies special behavior for zero value setting and checking.
-	Zero GoZero
 }
 
 func (GoType) __VDLReflect(struct {
@@ -908,18 +907,19 @@
 			}
 		}
 	}
-	var10 := (m.ToNative == "")
+	var10 := (m.Zero == GoZero{})
 	if var10 {
-		if err := fieldsTarget1.ZeroField("ToNative"); err != nil && err != vdl.ErrFieldNoExist {
+		if err := fieldsTarget1.ZeroField("Zero"); err != nil && err != vdl.ErrFieldNoExist {
 			return err
 		}
 	} else {
-		keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ToNative")
+		keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Zero")
 		if err != vdl.ErrFieldNoExist {
 			if err != nil {
 				return err
 			}
-			if err := fieldTarget9.FromString(string(m.ToNative), tt.NonOptional().Field(2).Type); err != nil {
+
+			if err := m.Zero.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 			if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
@@ -927,18 +927,18 @@
 			}
 		}
 	}
-	var13 := (m.FromNative == "")
+	var13 := (m.ToNative == "")
 	if var13 {
-		if err := fieldsTarget1.ZeroField("FromNative"); err != nil && err != vdl.ErrFieldNoExist {
+		if err := fieldsTarget1.ZeroField("ToNative"); err != nil && err != vdl.ErrFieldNoExist {
 			return err
 		}
 	} else {
-		keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("FromNative")
+		keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("ToNative")
 		if err != vdl.ErrFieldNoExist {
 			if err != nil {
 				return err
 			}
-			if err := fieldTarget12.FromString(string(m.FromNative), tt.NonOptional().Field(3).Type); err != nil {
+			if err := fieldTarget12.FromString(string(m.ToNative), tt.NonOptional().Field(3).Type); err != nil {
 				return err
 			}
 			if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
@@ -946,39 +946,18 @@
 			}
 		}
 	}
-	var var16 bool
-	if len(m.Imports) == 0 {
-		var16 = true
-	}
+	var16 := (m.FromNative == "")
 	if var16 {
-		if err := fieldsTarget1.ZeroField("Imports"); err != nil && err != vdl.ErrFieldNoExist {
+		if err := fieldsTarget1.ZeroField("FromNative"); err != nil && err != vdl.ErrFieldNoExist {
 			return err
 		}
 	} else {
-		keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Imports")
+		keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("FromNative")
 		if err != vdl.ErrFieldNoExist {
 			if err != nil {
 				return err
 			}
-
-			listTarget17, err := fieldTarget15.StartList(tt.NonOptional().Field(4).Type, len(m.Imports))
-			if err != nil {
-				return err
-			}
-			for i, elem19 := range m.Imports {
-				elemTarget18, err := listTarget17.StartElem(i)
-				if err != nil {
-					return err
-				}
-
-				if err := elem19.FillVDLTarget(elemTarget18, tt.NonOptional().Field(4).Type.Elem()); err != nil {
-					return err
-				}
-				if err := listTarget17.FinishElem(elemTarget18); err != nil {
-					return err
-				}
-			}
-			if err := fieldTarget15.FinishList(listTarget17); err != nil {
+			if err := fieldTarget15.FromString(string(m.FromNative), tt.NonOptional().Field(4).Type); err != nil {
 				return err
 			}
 			if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
@@ -986,22 +965,42 @@
 			}
 		}
 	}
-	var22 := (m.Zero == GoZero{})
-	if var22 {
-		if err := fieldsTarget1.ZeroField("Zero"); err != nil && err != vdl.ErrFieldNoExist {
+	var var19 bool
+	if len(m.Imports) == 0 {
+		var19 = true
+	}
+	if var19 {
+		if err := fieldsTarget1.ZeroField("Imports"); err != nil && err != vdl.ErrFieldNoExist {
 			return err
 		}
 	} else {
-		keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("Zero")
+		keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("Imports")
 		if err != vdl.ErrFieldNoExist {
 			if err != nil {
 				return err
 			}
 
-			if err := m.Zero.FillVDLTarget(fieldTarget21, tt.NonOptional().Field(5).Type); err != nil {
+			listTarget20, err := fieldTarget18.StartList(tt.NonOptional().Field(5).Type, len(m.Imports))
+			if err != nil {
 				return err
 			}
-			if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
+			for i, elem22 := range m.Imports {
+				elemTarget21, err := listTarget20.StartElem(i)
+				if err != nil {
+					return err
+				}
+
+				if err := elem22.FillVDLTarget(elemTarget21, tt.NonOptional().Field(5).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget20.FinishElem(elemTarget21); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget18.FinishList(listTarget20); err != nil {
+				return err
+			}
+			if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 				return err
 			}
 		}
@@ -1038,6 +1037,9 @@
 	case "Type":
 		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Type))
 		return nil, target, err
+	case "Zero":
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Zero))
+		return nil, target, err
 	case "ToNative":
 		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.ToNative))
 		return nil, target, err
@@ -1047,9 +1049,6 @@
 	case "Imports":
 		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Imports))
 		return nil, target, err
-	case "Zero":
-		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Zero))
-		return nil, target, err
 	default:
 		return nil, nil, vdl.ErrFieldNoExist
 	}
@@ -1065,6 +1064,9 @@
 	case "Type":
 		t.Value.Type = ""
 		return nil
+	case "Zero":
+		t.Value.Zero = GoZero{}
+		return nil
 	case "ToNative":
 		t.Value.ToNative = ""
 		return nil
@@ -1074,9 +1076,6 @@
 	case "Imports":
 		t.Value.Imports = []GoImport(nil)
 		return nil
-	case "Zero":
-		t.Value.Zero = GoZero{}
-		return nil
 	default:
 		return vdl.ErrFieldNoExist
 	}
@@ -1093,6 +1092,9 @@
 	if x.Type != "" {
 		return false
 	}
+	if x.Zero != (GoZero{}) {
+		return false
+	}
 	if x.ToNative != "" {
 		return false
 	}
@@ -1102,9 +1104,6 @@
 	if len(x.Imports) != 0 {
 		return false
 	}
-	if x.Zero != (GoZero{}) {
-		return false
-	}
 	return true
 }
 
@@ -1134,6 +1133,14 @@
 			return err
 		}
 	}
+	if x.Zero != (GoZero{}) {
+		if err := enc.NextField("Zero"); err != nil {
+			return err
+		}
+		if err := x.Zero.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
 	if x.ToNative != "" {
 		if err := enc.NextField("ToNative"); err != nil {
 			return err
@@ -1170,14 +1177,6 @@
 			return err
 		}
 	}
-	if x.Zero != (GoZero{}) {
-		if err := enc.NextField("Zero"); err != nil {
-			return err
-		}
-		if err := x.Zero.VDLWrite(enc); err != nil {
-			return err
-		}
-	}
 	if err := enc.NextField(""); err != nil {
 		return err
 	}
@@ -1236,6 +1235,10 @@
 			if err := dec.FinishValue(); err != nil {
 				return err
 			}
+		case "Zero":
+			if err := x.Zero.VDLRead(dec); err != nil {
+				return err
+			}
 		case "ToNative":
 			if err := dec.StartValue(); err != nil {
 				return err
@@ -1262,10 +1265,6 @@
 			if err := __VDLReadAnon_list_1(dec, &x.Imports); err != nil {
 				return err
 			}
-		case "Zero":
-			if err := x.Zero.VDLRead(dec); err != nil {
-				return err
-			}
 		default:
 			if err := dec.SkipValue(); err != nil {
 				return err
@@ -2637,9 +2636,9 @@
 	// Register types.
 	vdl.Register((*GenLanguage)(nil))
 	vdl.Register((*GoKind)(nil))
-	vdl.Register((*GoImport)(nil))
 	vdl.Register((*GoZeroMode)(nil))
 	vdl.Register((*GoZero)(nil))
+	vdl.Register((*GoImport)(nil))
 	vdl.Register((*GoType)(nil))
 	vdl.Register((*GoConfig)(nil))
 	vdl.Register((*JavaConfig)(nil))
diff --git a/vom/vomtest/data81_gen.vdl b/vom/vomtest/data81_gen.vdl
index 7829f8b..d49598e 100644
--- a/vom/vomtest/data81_gen.vdl
+++ b/vom/vomtest/data81_gen.vdl
@@ -12,40 +12,41 @@
 	"v.io/v23/vdl/vdltest"
 )
 
-// Entries: 1321
-// -------------------------------------------------------
-// |          |Total|+Max|+Min|-Max|-Min|Full|Zero|isZero|
-// -------------------------------------------------------
-// |total     | 1321|  30|  30|  18|  18| 610| 615|   615| [!can=0]
-// |isZero    |  615|   0|   0|   0|   0|   0| 615|   615| [!can=0]
-// -------------------------------------------------------
-// |any       |    1|   0|   0|   0|   0|   0|   1|     1| [nil=1]
-// |optional  |   30|   0|   0|   0|   0|  15|  15|    15| [!can=0] [nil=15]
-// |bool      |    6|   0|   0|   0|   0|   3|   3|     3| [!can=0]
-// |byte      |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
-// |uint16    |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
-// |uint32    |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
-// |uint64    |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
-// |int8      |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
-// |int16     |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
-// |int32     |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
-// |int64     |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
-// |float32   |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
-// |float64   |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
-// |string    |    6|   0|   0|   0|   0|   3|   3|     3| [!can=0]
-// |enum      |   12|   0|   0|   0|   0|   8|   4|     4| [!can=0]
-// |typeobject|    2|   0|   0|   0|   0|   1|   1|     1|
-// |array     |  126|   0|   0|   0|   0|  62|  64|    64| [!can=0] [len min=1 max=3]
-// |list      |  240|   0|   0|   0|   0| 120| 120|   120| [!can=0] [len max=1]
-// |set       |  140|   0|   0|   0|   0|  70|  70|    70| [!can=0] [len max=1]
-// |map       |  144|   0|   0|   0|   0|  72|  72|    72| [!can=0] [len max=1]
-// |struct    |  232|   0|   0|   0|   0| 114| 118|   118| [!can=0]
-// |union     |  226|   0|   0|   0|   0| 112| 114|   114| [!can=0]
-// -------------------------------------------------------
-// |IsNamed   |  988|  20|  20|  12|  12| 460| 464|   464| [!can=0]
-// |IsUnnamed |  333|  10|  10|   6|   6| 150| 151|   151| [!can=0]
-// |IsBytes   |   22|   0|   0|   0|   0|  11|  11|    11| [!can=0]
-// -------------------------------------------------------
+// Entries: 1395
+// ----------------------------------------------------------
+// |             |Total|+Max|+Min|-Max|-Min|Full|Zero|isZero|
+// ----------------------------------------------------------
+// |total        | 1395|  33|  33|  21|  21| 641| 646|   646| [!can=0]
+// |isZero       |  646|   0|   0|   0|   0|   0| 646|   646| [!can=0]
+// ----------------------------------------------------------
+// |any          |    1|   0|   0|   0|   0|   0|   1|     1| [nil=1]
+// |optional     |   30|   0|   0|   0|   0|  15|  15|    15| [!can=0] [nil=15]
+// |bool         |   12|   0|   0|   0|   0|   6|   6|     6| [!can=0]
+// |byte         |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
+// |uint16       |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
+// |uint32       |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
+// |uint64       |   12|   3|   3|   0|   0|   3|   3|     3| [!can=0]
+// |int8         |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
+// |int16        |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
+// |int32        |   36|   6|   6|   6|   6|   6|   6|     6| [!can=0]
+// |int64        |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
+// |float32      |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
+// |float64      |   18|   3|   3|   3|   3|   3|   3|     3| [!can=0]
+// |string       |   10|   0|   0|   0|   0|   5|   5|     5| [!can=0]
+// |enum         |   12|   0|   0|   0|   0|   8|   4|     4| [!can=0]
+// |typeobject   |    2|   0|   0|   0|   0|   1|   1|     1|
+// |array        |  130|   0|   0|   0|   0|  64|  66|    66| [!can=0] [len min=1 max=3]
+// |list         |  244|   0|   0|   0|   0| 122| 122|   122| [!can=0] [len max=1]
+// |set          |  140|   0|   0|   0|   0|  70|  70|    70| [!can=0] [len max=1]
+// |map          |  144|   0|   0|   0|   0|  72|  72|    72| [!can=0] [len max=1]
+// |struct       |  258|   0|   0|   0|   0| 127| 131|   131| [!can=0]
+// |union        |  238|   0|   0|   0|   0| 118| 120|   120| [!can=0]
+// ----------------------------------------------------------
+// |IsNamed      | 1062|  23|  23|  15|  15| 491| 495|   495| [!can=0]
+// |IsUnnamed    |  333|  10|  10|   6|   6| 150| 151|   151| [!can=0]
+// |IsBytes      |   22|   0|   0|   0|   0|  11|  11|    11| [!can=0]
+// |IsPartOfCycle|   12|   0|   0|   0|   0|   6|   6|     6| [!can=0]
+// ----------------------------------------------------------
 // 
 // Each column has a pair of entry counts (canonical,non-canonical), computed
 // from the Source value.  An entry is canonical if Target == Source.
@@ -72171,6 +72172,3176 @@
 		"81592901001d762e696f2f7632332f76646c2f76646c746573742e56456e756d4263640103014201430144e1570404012de15531020029762e696f2f7632332f76646c2f76646c746573742e564172726179315f5365745f56456e756d426364012c0201e15344060037762e696f2f7632332f76646c2f76646c746573742e565374727563744465707468335f564172726179315f5365745f56456e756d426364010100024630012be1e1510408012ae1520500000102e1", "592901001d762e696f2f7632332f76646c2f76646c746573742e56456e756d4263640103014201430144e1570404012de15531020029762e696f2f7632332f76646c2f76646c746573742e564172726179315f5365745f56456e756d426364012c0201e15344060037762e696f2f7632332f76646c2f76646c746573742e565374727563744465707468335f564172726179315f5365745f56456e756d426364010100024630012be1e1510408012ae1", "520500000102e1",
 	},
 	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(67): "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(60): "513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 1f                   ByteLen                           31 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c65 PrimValue       "v.io/v23/vdl/vdltest.VSelfCycle" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 4e657874             PrimValue                     "Next" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.VSelfCycle}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VSelfCycle END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.VSelfCycle}{Data: 0, Next: nil}}
+	{
+		`Zero vdltest.VSelfCycle{}`,
+		vdltest.VSelfCycle{},
+		0x81,
+		"81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e15201e1", "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(85): "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(78): "513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 1f                   ByteLen                           31 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c65 PrimValue       "v.io/v23/vdl/vdltest.VSelfCycle" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 4e657874             PrimValue                     "Next" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(21): "521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.VSelfCycle}]
+	// 13                   MsgLen                            19
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VSelfCycle.Next]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VSelfCycle.Next]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VSelfCycle.Next]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VSelfCycle END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VSelfCycle END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VSelfCycle END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VSelfCycle END]
+	// DumpStatus{MsgId: 41, MsgLen: 19, MsgN: 19, Value: v.io/v23/vdl/vdltest.VSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.VSelfCycle}{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123, Next: nil}}}}}
+	{
+		`Full vdltest.VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}`,
+		vdltest.VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}},
+		0x81,
+		"81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1", "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1", "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(132): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(125): "e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(67): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(60): "5137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB}}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleB END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB}}{Data: 0, A: nil}}
+	{
+		`Zero vdltest.VMutualCycleB{}`,
+		vdltest.VMutualCycleB{},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(150): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(143): "e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(85): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(78): "5137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(21): "521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB}}]
+	// 13                   MsgLen                            19
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VMutualCycleB.A]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VMutualCycleA.B]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VMutualCycleB.A]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleA END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleB END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleA END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleB END]
+	// DumpStatus{MsgId: 41, MsgLen: 19, MsgN: 19, Value: v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB}}{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123, B: nil}}}}}
+	{
+		`Full vdltest.VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}`,
+		vdltest.VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1", "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(132): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(125): "e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(67): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(60): "5137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA}}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleA END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA}}{Data: 0, B: nil}}
+	{
+		`Zero vdltest.VMutualCycleA{}`,
+		vdltest.VMutualCycleA{},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(150): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(143): "e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(85): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(78): "5137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.VMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(21): "521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA}}]
+	// 13                   MsgLen                            19
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VMutualCycleA.B]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VMutualCycleB.A]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VMutualCycleA.B]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleB END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleA END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleB END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VMutualCycleA END]
+	// DumpStatus{MsgId: 41, MsgLen: 19, MsgN: 19, Value: v.io/v23/vdl/vdltest.VMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.VMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.VMutualCycleA}}{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123, A: nil}}}}}
+	{
+		`Full vdltest.VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}`,
+		vdltest.VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1", "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(45): "5129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 29                   MsgLen                            41
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 23                   ByteLen                           35 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNBool" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 41, MsgN: 41, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireBoolNBool bool]
+	// 00                   PrimValue                      false [bool]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireBoolNBool bool(false)}
+	{
+		`Zero vdltest.VWireBoolNBool(false)`,
+		vdltest.VWireBoolNBool(false),
+		0x81,
+		"815129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e15200", "5129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(45): "5129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e15201"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 29                   MsgLen                            41
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 23                   ByteLen                           35 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNBool" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 41, MsgN: 41, Buf(2): "5201"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireBoolNBool bool]
+	// 01                   PrimValue                       true [bool]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireBoolNBool bool(true)}
+	{
+		`Full vdltest.VWireBoolNBool(true)`,
+		vdltest.VWireBoolNBool(true),
+		0x81,
+		"815129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e15201", "5129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1", "5201",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireBoolNString bool]
+	// 00                   PrimValue                      false [bool]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireBoolNString bool(false)}
+	{
+		`Zero vdltest.VWireBoolNString(false)`,
+		vdltest.VWireBoolNString(false),
+		0x81,
+		"81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e15200", "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e15201"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(2): "5201"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireBoolNString bool]
+	// 01                   PrimValue                       true [bool]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireBoolNString bool(true)}
+	{
+		`Full vdltest.VWireBoolNString(true)`,
+		vdltest.VWireBoolNString(true),
+		0x81,
+		"81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e15201", "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1", "5201",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireBoolNStruct bool]
+	// 00                   PrimValue                      false [bool]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireBoolNStruct bool(false)}
+	{
+		`Zero vdltest.VWireBoolNStruct(false)`,
+		vdltest.VWireBoolNStruct(false),
+		0x81,
+		"81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15200", "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15201"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(2): "5201"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireBoolNStruct bool]
+	// 01                   PrimValue                       true [bool]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireBoolNStruct bool(true)}
+	{
+		`Full vdltest.VWireBoolNStruct(true)`,
+		vdltest.VWireBoolNStruct(true),
+		0x81,
+		"81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15201", "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e1", "5201",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(43): "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 39, MsgN: 39, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNInt int32]
+	// 00                   PrimValue                          0 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNInt int32(0)}
+	{
+		`Zero vdltest.VWireIntNInt(0)`,
+		vdltest.VWireIntNInt(0),
+		0x81,
+		"815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15200", "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fcfffffffe"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 39, MsgN: 39, Buf(6): "52fcfffffffe"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNInt int32]
+	// fcfffffffe           PrimValue                 2147483647 [int]
+	// DumpStatus{MsgId: 41, MsgN: 6, Value: v.io/v23/vdl/vdltest.VWireIntNInt int32(2147483647)}
+	{
+		`+Max vdltest.VWireIntNInt(2147483647)`,
+		vdltest.VWireIntNInt(2147483647),
+		0x81,
+		"815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fcfffffffe", "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1", "52fcfffffffe",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(43): "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15202"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 39, MsgN: 39, Buf(2): "5202"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNInt int32]
+	// 02                   PrimValue                          1 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNInt int32(1)}
+	{
+		`+Min vdltest.VWireIntNInt(1)`,
+		vdltest.VWireIntNInt(1),
+		0x81,
+		"815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15202", "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1", "5202",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fcffffffff"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 39, MsgN: 39, Buf(6): "52fcffffffff"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNInt int32]
+	// fcffffffff           PrimValue                -2147483648 [int]
+	// DumpStatus{MsgId: 41, MsgN: 6, Value: v.io/v23/vdl/vdltest.VWireIntNInt int32(-2147483648)}
+	{
+		`-Max vdltest.VWireIntNInt(-2147483648)`,
+		vdltest.VWireIntNInt(-2147483648),
+		0x81,
+		"815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fcffffffff", "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1", "52fcffffffff",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(43): "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15201"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 39, MsgN: 39, Buf(2): "5201"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNInt int32]
+	// 01                   PrimValue                         -1 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNInt int32(-1)}
+	{
+		`-Min vdltest.VWireIntNInt(-1)`,
+		vdltest.VWireIntNInt(-1),
+		0x81,
+		"815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15201", "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1", "5201",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(44): "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fff5"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 39, MsgN: 39, Buf(3): "52fff5"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNInt int32]
+	// fff5                 PrimValue                       -123 [int]
+	// DumpStatus{MsgId: 41, MsgN: 3, Value: v.io/v23/vdl/vdltest.VWireIntNInt int32(-123)}
+	{
+		`Full vdltest.VWireIntNInt(-123)`,
+		vdltest.VWireIntNInt(-123),
+		0x81,
+		"815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fff5", "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1", "52fff5",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(46): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNString int32]
+	// 00                   PrimValue                          0 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNString int32(0)}
+	{
+		`Zero vdltest.VWireIntNString(0)`,
+		vdltest.VWireIntNString(0),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15200", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fcfffffffe"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(6): "52fcfffffffe"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNString int32]
+	// fcfffffffe           PrimValue                 2147483647 [int]
+	// DumpStatus{MsgId: 41, MsgN: 6, Value: v.io/v23/vdl/vdltest.VWireIntNString int32(2147483647)}
+	{
+		`+Max vdltest.VWireIntNString(2147483647)`,
+		vdltest.VWireIntNString(2147483647),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fcfffffffe", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1", "52fcfffffffe",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(46): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15202"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(2): "5202"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNString int32]
+	// 02                   PrimValue                          1 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNString int32(1)}
+	{
+		`+Min vdltest.VWireIntNString(1)`,
+		vdltest.VWireIntNString(1),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15202", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1", "5202",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fcffffffff"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(6): "52fcffffffff"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNString int32]
+	// fcffffffff           PrimValue                -2147483648 [int]
+	// DumpStatus{MsgId: 41, MsgN: 6, Value: v.io/v23/vdl/vdltest.VWireIntNString int32(-2147483648)}
+	{
+		`-Max vdltest.VWireIntNString(-2147483648)`,
+		vdltest.VWireIntNString(-2147483648),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fcffffffff", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1", "52fcffffffff",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(46): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15201"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(2): "5201"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNString int32]
+	// 01                   PrimValue                         -1 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNString int32(-1)}
+	{
+		`-Min vdltest.VWireIntNString(-1)`,
+		vdltest.VWireIntNString(-1),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15201", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1", "5201",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fff5"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(3): "52fff5"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNString int32]
+	// fff5                 PrimValue                       -123 [int]
+	// DumpStatus{MsgId: 41, MsgN: 3, Value: v.io/v23/vdl/vdltest.VWireIntNString int32(-123)}
+	{
+		`Full vdltest.VWireIntNString(-123)`,
+		vdltest.VWireIntNString(-123),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fff5", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1", "52fff5",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(46): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNStruct int32]
+	// 00                   PrimValue                          0 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNStruct int32(0)}
+	{
+		`Zero vdltest.VWireIntNStruct(0)`,
+		vdltest.VWireIntNStruct(0),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15200", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fcfffffffe"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(6): "52fcfffffffe"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNStruct int32]
+	// fcfffffffe           PrimValue                 2147483647 [int]
+	// DumpStatus{MsgId: 41, MsgN: 6, Value: v.io/v23/vdl/vdltest.VWireIntNStruct int32(2147483647)}
+	{
+		`+Max vdltest.VWireIntNStruct(2147483647)`,
+		vdltest.VWireIntNStruct(2147483647),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fcfffffffe", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1", "52fcfffffffe",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(46): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15202"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(2): "5202"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNStruct int32]
+	// 02                   PrimValue                          1 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNStruct int32(1)}
+	{
+		`+Min vdltest.VWireIntNStruct(1)`,
+		vdltest.VWireIntNStruct(1),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15202", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1", "5202",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fcffffffff"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(6): "52fcffffffff"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNStruct int32]
+	// fcffffffff           PrimValue                -2147483648 [int]
+	// DumpStatus{MsgId: 41, MsgN: 6, Value: v.io/v23/vdl/vdltest.VWireIntNStruct int32(-2147483648)}
+	{
+		`-Max vdltest.VWireIntNStruct(-2147483648)`,
+		vdltest.VWireIntNStruct(-2147483648),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fcffffffff", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1", "52fcffffffff",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(46): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15201"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(2): "5201"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNStruct int32]
+	// 01                   PrimValue                         -1 [int]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireIntNStruct int32(-1)}
+	{
+		`-Min vdltest.VWireIntNStruct(-1)`,
+		vdltest.VWireIntNStruct(-1),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15201", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1", "5201",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(47): "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fff5"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 42, MsgN: 42, Buf(3): "52fff5"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireIntNStruct int32]
+	// fff5                 PrimValue                       -123 [int]
+	// DumpStatus{MsgId: 41, MsgN: 3, Value: v.io/v23/vdl/vdltest.VWireIntNStruct int32(-123)}
+	{
+		`Full vdltest.VWireIntNStruct(-123)`,
+		vdltest.VWireIntNStruct(-123),
+		0x81,
+		"81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fff5", "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1", "52fff5",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(49): "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStringNString string]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireStringNString string("")}
+	{
+		`Zero vdltest.VWireStringNString("")`,
+		vdltest.VWireStringNString(""),
+		0x81,
+		"81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e15200", "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(79): "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(32): "521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStringNString string]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireStringNString string("abcdeΔΘΠΣΦ王普澤世界")}
+	{
+		`Full vdltest.VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")`,
+		vdltest.VWireStringNString("abcdeΔΘΠΣΦ王普澤世界"),
+		0x81,
+		"81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1", "521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(49): "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e15200"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(2): "5200"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStringNStruct string]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireStringNStruct string("")}
+	{
+		`Zero vdltest.VWireStringNStruct("")`,
+		vdltest.VWireStringNStruct(""),
+		0x81,
+		"81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e15200", "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1", "5200",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(79): "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(32): "521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStringNStruct string]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireStringNStruct string("abcdeΔΘΠΣΦ王普澤世界")}
+	{
+		`Full vdltest.VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")`,
+		vdltest.VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界"),
+		0x81,
+		"81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1", "521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(52): "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -41, MsgLen: 46, MsgN: 46, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireArrayNString [1]string]
+	// 02                   MsgLen                             2
+	// 00                   ValueLen                           1 [list len]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireArrayNString [1]string{""}}
+	{
+		`Zero vdltest.VWireArrayNString{}`,
+		vdltest.VWireArrayNString{},
+		0x81,
+		"81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e152020000", "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(82): "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -41, MsgLen: 46, MsgN: 46, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireArrayNString [1]string]
+	// 20                   MsgLen                            32
+	// 00                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireArrayNString [1]string{"abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireArrayNString{"abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(52): "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -41, MsgLen: 46, MsgN: 46, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string]
+	// 02                   MsgLen                             2
+	// 00                   ValueLen                           1 [list len]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string{""}}
+	{
+		`Zero vdltest.VWireArrayNStruct{}`,
+		vdltest.VWireArrayNStruct{},
+		0x81,
+		"81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e152020000", "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(82): "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -41, MsgLen: 46, MsgN: 46, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string]
+	// 20                   MsgLen                            32
+	// 00                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string{"abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireArrayNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(48): "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1520100"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireListNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(3): "520100"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireListNString []string]
+	// 01                   MsgLen                             1
+	// 00                   ValueLen                           0 [list len]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireListNString []string{}}
+	{
+		`Zero vdltest.VWireListNString{}`,
+		vdltest.VWireListNString{},
+		0x81,
+		"81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1520100", "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1", "520100",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(79): "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e15220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireListNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(34): "5220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireListNString []string]
+	// 20                   MsgLen                            32
+	// 01                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireListNString []string{"abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireListNString{"abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e15220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1", "5220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(48): "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1520100"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireListNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(3): "520100"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireListNStruct []string]
+	// 01                   MsgLen                             1
+	// 00                   ValueLen                           0 [list len]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireListNStruct []string{}}
+	{
+		`Zero vdltest.VWireListNStruct{}`,
+		vdltest.VWireListNStruct{},
+		0x81,
+		"81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1520100", "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1", "520100",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(79): "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e15220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireListNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -41, MsgLen: 43, MsgN: 43, Buf(34): "5220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireListNStruct []string]
+	// 20                   MsgLen                            32
+	// 01                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireListNStruct []string{"abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireListNStruct{"abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e15220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1", "5220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 51, MsgN: 51, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNString struct{X string}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNString END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireStructNString struct{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireStructNString{}`,
+		vdltest.VWireStructNString{},
+		0x81,
+		"815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e15201e1", "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(88): "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 51, MsgN: 51, Buf(35): "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNString struct{X string}]
+	// 21                   MsgLen                            33
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNString.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNString END]
+	// DumpStatus{MsgId: 41, MsgLen: 33, MsgN: 33, Value: v.io/v23/vdl/vdltest.VWireStructNString struct{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireStructNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e1", "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 51, MsgN: 51, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNStruct END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireStructNStruct{}`,
+		vdltest.VWireStructNStruct{},
+		0x81,
+		"815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e15201e1", "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(88): "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 51, MsgN: 51, Buf(35): "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string}]
+	// 21                   MsgLen                            33
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNStruct.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNStruct END]
+	// DumpStatus{MsgId: 41, MsgLen: 33, MsgN: 33, Value: v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireStructNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e1", "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNArray struct{X string}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNArray END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireStructNArray struct{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireStructNArray{}`,
+		vdltest.VWireStructNArray{},
+		0x81,
+		"815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e15201e1", "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(87): "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(35): "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNArray struct{X string}]
+	// 21                   MsgLen                            33
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNArray.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNArray END]
+	// DumpStatus{MsgId: 41, MsgLen: 33, MsgN: 33, Value: v.io/v23/vdl/vdltest.VWireStructNArray struct{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireStructNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e1", "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNSlice END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireStructNSlice{}`,
+		vdltest.VWireStructNSlice{},
+		0x81,
+		"815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e15201e1", "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(87): "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(35): "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string}]
+	// 21                   MsgLen                            33
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNSlice.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNSlice END]
+	// DumpStatus{MsgId: 41, MsgLen: 33, MsgN: 33, Value: v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireStructNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e1", "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(57): "5134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 34                   MsgLen                            52
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 28                   ByteLen                           40 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 52, MsgN: 52, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNPointer END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireStructNPointer{}`,
+		vdltest.VWireStructNPointer{},
+		0x81,
+		"815134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e15201e1", "5134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(89): "5134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 34                   MsgLen                            52
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 28                   ByteLen                           40 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 52, MsgN: 52, Buf(35): "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string}]
+	// 21                   MsgLen                            33
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNPointer.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNPointer END]
+	// DumpStatus{MsgId: 41, MsgLen: 33, MsgN: 33, Value: v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireStructNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e1", "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNIface struct{X string}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNIface END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireStructNIface struct{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireStructNIface{}`,
+		vdltest.VWireStructNIface{},
+		0x81,
+		"815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e15201e1", "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(87): "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(35): "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireStructNIface struct{X string}]
+	// 21                   MsgLen                            33
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNIface.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNIface END]
+	// DumpStatus{MsgId: 41, MsgLen: 33, MsgN: 33, Value: v.io/v23/vdl/vdltest.VWireStructNIface struct{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireStructNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e1", "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNString union{X string}]
+	// 02                   MsgLen                             2
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNString.X]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireUnionNString union{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireUnionNString{X: ""}`,
+		vdltest.VWireUnionNString{X: ""},
+		0x81,
+		"815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e152020000", "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(86): "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNString union{X string}]
+	// 20                   MsgLen                            32
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNString.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireUnionNString union{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireUnionNString{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string}]
+	// 02                   MsgLen                             2
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNStruct.X]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireUnionNStruct{X: ""}`,
+		vdltest.VWireUnionNStruct{X: ""},
+		0x81,
+		"815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e152020000", "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(86): "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 50, MsgN: 50, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string}]
+	// 20                   MsgLen                            32
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNStruct.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireUnionNStruct{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 49, MsgN: 49, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNArray union{X string}]
+	// 02                   MsgLen                             2
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNArray.X]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireUnionNArray union{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireUnionNArray{X: ""}`,
+		vdltest.VWireUnionNArray{X: ""},
+		0x81,
+		"815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e152020000", "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(85): "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 49, MsgN: 49, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNArray union{X string}]
+	// 20                   MsgLen                            32
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNArray.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireUnionNArray union{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireUnionNArray{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 49, MsgN: 49, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string}]
+	// 02                   MsgLen                             2
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNSlice.X]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireUnionNSlice{X: ""}`,
+		vdltest.VWireUnionNSlice{X: ""},
+		0x81,
+		"815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e152020000", "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(85): "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 49, MsgN: 49, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string}]
+	// 20                   MsgLen                            32
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNSlice.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireUnionNSlice{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(57): "5133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 33                   MsgLen                            51
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 51, MsgN: 51, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string}]
+	// 02                   MsgLen                             2
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNPointer.X]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireUnionNPointer{X: ""}`,
+		vdltest.VWireUnionNPointer{X: ""},
+		0x81,
+		"815133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e152020000", "5133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(87): "5133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 33                   MsgLen                            51
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 51, MsgN: 51, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string}]
+	// 20                   MsgLen                            32
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNPointer.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireUnionNPointer{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "5133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e152020000"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 49, MsgN: 49, Buf(4): "52020000"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}]
+	// 02                   MsgLen                             2
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNIface.X]
+	// 00                   ByteLen                            0 [string len]
+	//                      PrimValue                         "" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}{X: ""}}
+	{
+		`Zero vdltest.VWireUnionNIface{X: ""}`,
+		vdltest.VWireUnionNIface{X: ""},
+		0x81,
+		"815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e152020000", "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e1", "52020000",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(85): "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -41, MsgLen: 49, MsgN: 49, Buf(34): "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}]
+	// 20                   MsgLen                            32
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNIface.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// DumpStatus{MsgId: 41, MsgLen: 32, MsgN: 32, Value: v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}{X: "abcdeΔΘΠΣΦ王普澤世界"}}
+	{
+		`Full vdltest.VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"}`,
+		vdltest.VWireUnionNIface{X: "abcdeΔΘΠΣΦ王普澤世界"},
+		0x81,
+		"815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c", "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e1", "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(1023): "5329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 29                   MsgLen                            41
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 23                   ByteLen                           35 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNBool" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -42, MsgLen: 41, MsgN: 41, Buf(980): "552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -43, MsgLen: 43, MsgN: 43, Buf(935): "572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -44, MsgLen: 43, MsgN: 43, Buf(890): "5927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 59                   MsgId                            -45
+	//                      TypeMsg                           45
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -45, MsgLen: 39, MsgN: 39, Buf(849): "5b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 5b                   MsgId                            -46
+	//                      TypeMsg                           46
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -46, MsgLen: 42, MsgN: 42, Buf(805): "5d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 5d                   MsgId                            -47
+	//                      TypeMsg                           47
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -47, MsgLen: 42, MsgN: 42, Buf(761): "5f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 5f                   MsgId                            -48
+	//                      TypeMsg                           48
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -48, MsgLen: 45, MsgN: 45, Buf(714): "612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 61                   MsgId                            -49
+	//                      TypeMsg                           49
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -49, MsgLen: 45, MsgN: 45, Buf(667): "632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 63                   MsgId                            -50
+	//                      TypeMsg                           50
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -50, MsgLen: 46, MsgN: 46, Buf(619): "652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 65                   MsgId                            -51
+	//                      TypeMsg                           51
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -51, MsgLen: 46, MsgN: 46, Buf(571): "672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 67                   MsgId                            -52
+	//                      TypeMsg                           52
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireListNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -52, MsgLen: 43, MsgN: 43, Buf(526): "692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 69                   MsgId                            -53
+	//                      TypeMsg                           53
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireListNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -53, MsgLen: 43, MsgN: 43, Buf(481): "6b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 6b                   MsgId                            -54
+	//                      TypeMsg                           54
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -54, MsgLen: 51, MsgN: 51, Buf(428): "6d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 6d                   MsgId                            -55
+	//                      TypeMsg                           55
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -55, MsgLen: 51, MsgN: 51, Buf(375): "6f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 6f                   MsgId                            -56
+	//                      TypeMsg                           56
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -56, MsgLen: 50, MsgN: 50, Buf(323): "7132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 71                   MsgId                            -57
+	//                      TypeMsg                           57
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -57, MsgLen: 50, MsgN: 50, Buf(271): "7334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 73                   MsgId                            -58
+	//                      TypeMsg                           58
+	// 34                   MsgLen                            52
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 28                   ByteLen                           40 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -58, MsgLen: 52, MsgN: 52, Buf(217): "7532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 75                   MsgId                            -59
+	//                      TypeMsg                           59
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -59, MsgLen: 50, MsgN: 50, Buf(165): "7732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 77                   MsgId                            -60
+	//                      TypeMsg                           60
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -60, MsgLen: 50, MsgN: 50, Buf(113): "7932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 79                   MsgId                            -61
+	//                      TypeMsg                           61
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -61, MsgLen: 50, MsgN: 50, Buf(61): "7b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 7b                   MsgId                            -62
+	//                      TypeMsg                           62
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -62, MsgLen: 49, MsgN: 49, Buf(10): "7d31070025762e696f2f"}
+	// 7d                   MsgId                            -63
+	//                      TypeMsg                           63
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -63, MsgLen: 49, MsgN: 49, Buf(543): "7f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e15201e1"}
+	// 7f                   MsgId                            -64
+	//                      TypeMsg                           64
+	// 33                   MsgLen                            51
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -64, MsgLen: 51, MsgN: 51, Buf(490): "ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e15201e1"}
+	// ff81                 MsgId                            -65
+	//                      TypeMsg                           65
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -65, MsgLen: 49, MsgN: 49, Buf(438): "51fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// fe01af               MsgLen                           431
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 1d                   ByteLen                           29 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c PrimValue       "v.io/v23/vdl/vdltest.VWireAll" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 18                   ValueLen                          24 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 09                   ByteLen                            9 [string len]
+	// 426f6f6c4e426f6f6c   PrimValue                "BoolNBool" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 426f6f6c4e537472696e67 PrimValue              "BoolNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 426f6f6c4e537472756374 PrimValue              "BoolNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 07                   ByteLen                            7 [string len]
+	// 496e744e496e74       PrimValue                  "IntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2d                   PrimValue                         45 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0a                   ByteLen                           10 [string len]
+	// 496e744e537472696e67 PrimValue               "IntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2e                   PrimValue                         46 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0a                   ByteLen                           10 [string len]
+	// 496e744e537472756374 PrimValue               "IntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2f                   PrimValue                         47 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 537472696e674e537472696e67 PrimValue            "StringNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 30                   PrimValue                         48 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 537472696e674e537472756374 PrimValue            "StringNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 31                   PrimValue                         49 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 41727261794e537472696e67 PrimValue             "ArrayNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 32                   PrimValue                         50 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 41727261794e537472756374 PrimValue             "ArrayNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 33                   PrimValue                         51 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 4c6973744e537472696e67 PrimValue              "ListNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 34                   PrimValue                         52 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 4c6973744e537472756374 PrimValue              "ListNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 35                   PrimValue                         53 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 5374727563744e537472696e67 PrimValue            "StructNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 36                   PrimValue                         54 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 5374727563744e537472756374 PrimValue            "StructNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 37                   PrimValue                         55 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 5374727563744e4172726179 PrimValue             "StructNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 38                   PrimValue                         56 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 5374727563744e536c696365 PrimValue             "StructNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 39                   PrimValue                         57 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0e                   ByteLen                           14 [string len]
+	// 5374727563744e506f696e746572 PrimValue           "StructNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3a                   PrimValue                         58 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 5374727563744e4966616365 PrimValue             "StructNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3b                   PrimValue                         59 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 556e696f6e4e537472696e67 PrimValue             "UnionNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3c                   PrimValue                         60 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 556e696f6e4e537472756374 PrimValue             "UnionNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3d                   PrimValue                         61 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 556e696f6e4e4172726179 PrimValue              "UnionNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3e                   PrimValue                         62 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 556e696f6e4e536c696365 PrimValue              "UnionNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3f                   PrimValue                         63 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 556e696f6e4e506f696e746572 PrimValue            "UnionNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 40                   PrimValue                         64 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 556e696f6e4e4966616365 PrimValue              "UnionNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 41                   PrimValue                         65 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 431, MsgN: 431, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireAll struct{BoolNBool v.io/v23/vdl/vdltest.VWireBoolNBool bool;BoolNString v.io/v23/vdl/vdltest.VWireBoolNString bool;BoolNStruct v.io/v23/vdl/vdltest.VWireBoolNStruct bool;IntNInt v.io/v23/vdl/vdltest.VWireIntNInt int32;IntNString v.io/v23/vdl/vdltest.VWireIntNString int32;IntNStruct v.io/v23/vdl/vdltest.VWireIntNStruct int32;StringNString v.io/v23/vdl/vdltest.VWireStringNString string;StringNStruct v.io/v23/vdl/vdltest.VWireStringNStruct string;ArrayNString v.io/v23/vdl/vdltest.VWireArrayNString [1]string;ArrayNStruct v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string;ListNString v.io/v23/vdl/vdltest.VWireListNString []string;ListNStruct v.io/v23/vdl/vdltest.VWireListNStruct []string;StructNString v.io/v23/vdl/vdltest.VWireStructNString struct{X string};StructNStruct v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string};StructNArray v.io/v23/vdl/vdltest.VWireStructNArray struct{X string};StructNSlice v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string};StructNPointer v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string};StructNIface v.io/v23/vdl/vdltest.VWireStructNIface struct{X string};UnionNString v.io/v23/vdl/vdltest.VWireUnionNString union{X string};UnionNStruct v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string};UnionNArray v.io/v23/vdl/vdltest.VWireUnionNArray union{X string};UnionNSlice v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string};UnionNPointer v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string};UnionNIface v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireAll END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.VWireAll struct{BoolNBool v.io/v23/vdl/vdltest.VWireBoolNBool bool;BoolNString v.io/v23/vdl/vdltest.VWireBoolNString bool;BoolNStruct v.io/v23/vdl/vdltest.VWireBoolNStruct bool;IntNInt v.io/v23/vdl/vdltest.VWireIntNInt int32;IntNString v.io/v23/vdl/vdltest.VWireIntNString int32;IntNStruct v.io/v23/vdl/vdltest.VWireIntNStruct int32;StringNString v.io/v23/vdl/vdltest.VWireStringNString string;StringNStruct v.io/v23/vdl/vdltest.VWireStringNStruct string;ArrayNString v.io/v23/vdl/vdltest.VWireArrayNString [1]string;ArrayNStruct v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string;ListNString v.io/v23/vdl/vdltest.VWireListNString []string;ListNStruct v.io/v23/vdl/vdltest.VWireListNStruct []string;StructNString v.io/v23/vdl/vdltest.VWireStructNString struct{X string};StructNStruct v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string};StructNArray v.io/v23/vdl/vdltest.VWireStructNArray struct{X string};StructNSlice v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string};StructNPointer v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string};StructNIface v.io/v23/vdl/vdltest.VWireStructNIface struct{X string};UnionNString v.io/v23/vdl/vdltest.VWireUnionNString union{X string};UnionNStruct v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string};UnionNArray v.io/v23/vdl/vdltest.VWireUnionNArray union{X string};UnionNSlice v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string};UnionNPointer v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string};UnionNIface v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}}{BoolNBool: false, BoolNString: false, BoolNStruct: false, IntNInt: 0, IntNString: 0, IntNStruct: 0, StringNString: "", StringNStruct: "", ArrayNString: {""}, ArrayNStruct: {""}, ListNString: {}, ListNStruct: {}, StructNString: {X: ""}, StructNStruct: {X: ""}, StructNArray: {X: ""}, StructNSlice: {X: ""}, StructNPointer: {X: ""}, StructNIface: {X: ""}, UnionNString: {X: ""}, UnionNStruct: {X: ""}, UnionNArray: {X: ""}, UnionNSlice: {X: ""}, UnionNPointer: {X: ""}, UnionNIface: {X: ""}}}
+	{
+		`Zero vdltest.VWireAll{}`,
+		vdltest.VWireAll{},
+		0x81,
+		"815329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e15201e1", "5329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(1023): "5329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 29                   MsgLen                            41
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 23                   ByteLen                           35 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNBool" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -42, MsgLen: 41, MsgN: 41, Buf(980): "552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -43, MsgLen: 43, MsgN: 43, Buf(935): "572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 2b                   MsgLen                            43
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireBoolNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -44, MsgLen: 43, MsgN: 43, Buf(890): "5927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 59                   MsgId                            -45
+	//                      TypeMsg                           45
+	// 27                   MsgLen                            39
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 21                   ByteLen                           33 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e74 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -45, MsgLen: 39, MsgN: 39, Buf(849): "5b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 5b                   MsgId                            -46
+	//                      TypeMsg                           46
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -46, MsgLen: 42, MsgN: 42, Buf(805): "5d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 5d                   MsgId                            -47
+	//                      TypeMsg                           47
+	// 2a                   MsgLen                            42
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 24                   ByteLen                           36 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireIntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 08                   PrimValue                          8 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -47, MsgLen: 42, MsgN: 42, Buf(761): "5f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 5f                   MsgId                            -48
+	//                      TypeMsg                           48
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -48, MsgLen: 45, MsgN: 45, Buf(714): "612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 61                   MsgId                            -49
+	//                      TypeMsg                           49
+	// 2d                   MsgLen                            45
+	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
+	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStringNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
+	// DumpStatus{MsgId: -49, MsgLen: 45, MsgN: 45, Buf(667): "632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 63                   MsgId                            -50
+	//                      TypeMsg                           50
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -50, MsgLen: 46, MsgN: 46, Buf(619): "652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 65                   MsgId                            -51
+	//                      TypeMsg                           51
+	// 2e                   MsgLen                            46
+	// 02                   WireTypeIndex                      2 [v.io/v23/vom.wireArray]
+	// 00                   Index                              0 [v.io/v23/vom.wireArray.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireArrayNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireArray.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
+	// 01                   PrimValue                          1 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireArray END]
+	// DumpStatus{MsgId: -51, MsgLen: 46, MsgN: 46, Buf(571): "672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 67                   MsgId                            -52
+	//                      TypeMsg                           52
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireListNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -52, MsgLen: 43, MsgN: 43, Buf(526): "692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 69                   MsgId                            -53
+	//                      TypeMsg                           53
+	// 2b                   MsgLen                            43
+	// 03                   WireTypeIndex                      3 [v.io/v23/vom.wireList]
+	// 00                   Index                              0 [v.io/v23/vom.wireList.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireListNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireList END]
+	// DumpStatus{MsgId: -53, MsgLen: 43, MsgN: 43, Buf(481): "6b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 6b                   MsgId                            -54
+	//                      TypeMsg                           54
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -54, MsgLen: 51, MsgN: 51, Buf(428): "6d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 6d                   MsgId                            -55
+	//                      TypeMsg                           55
+	// 33                   MsgLen                            51
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -55, MsgLen: 51, MsgN: 51, Buf(375): "6f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 6f                   MsgId                            -56
+	//                      TypeMsg                           56
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -56, MsgLen: 50, MsgN: 50, Buf(323): "7132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 71                   MsgId                            -57
+	//                      TypeMsg                           57
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -57, MsgLen: 50, MsgN: 50, Buf(271): "7334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 73                   MsgId                            -58
+	//                      TypeMsg                           58
+	// 34                   MsgLen                            52
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 28                   ByteLen                           40 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -58, MsgLen: 52, MsgN: 52, Buf(217): "7532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 75                   MsgId                            -59
+	//                      TypeMsg                           59
+	// 32                   MsgLen                            50
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireStructNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -59, MsgLen: 50, MsgN: 50, Buf(165): "7732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 77                   MsgId                            -60
+	//                      TypeMsg                           60
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e67 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -60, MsgLen: 50, MsgN: 50, Buf(113): "7932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 79                   MsgId                            -61
+	//                      TypeMsg                           61
+	// 32                   MsgLen                            50
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 26                   ByteLen                           38 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472756374 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -61, MsgLen: 50, MsgN: 50, Buf(61): "7b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f"}
+	// 7b                   MsgId                            -62
+	//                      TypeMsg                           62
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4172726179 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -62, MsgLen: 49, MsgN: 49, Buf(10): "7d31070025762e696f2f"}
+	// 7d                   MsgId                            -63
+	//                      TypeMsg                           63
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c696365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -63, MsgLen: 49, MsgN: 49, Buf(978): "7f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e152fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e7"}
+	// 7f                   MsgId                            -64
+	//                      TypeMsg                           64
+	// 33                   MsgLen                            51
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 27                   ByteLen                           39 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e746572 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -64, MsgLen: 51, MsgN: 51, Buf(925): "ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e152fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e7"}
+	// ff81                 MsgId                            -65
+	//                      TypeMsg                           65
+	// 31                   MsgLen                            49
+	// 07                   WireTypeIndex                      7 [v.io/v23/vom.wireUnion]
+	// 00                   Index                              0 [v.io/v23/vom.wireUnion.Name]
+	// 25                   ByteLen                           37 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e4966616365 PrimValue       "v.io/v23/vdl/vdltest.VWireUnionNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireUnion.Fields]
+	// 01                   ValueLen                           1 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 58                   PrimValue                        "X" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 03                   PrimValue                          3 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
+	// DumpStatus{MsgId: -65, MsgLen: 49, MsgN: 49, Buf(873): "51fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e152fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e7"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// fe01af               MsgLen                           431
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 1d                   ByteLen                           29 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c PrimValue       "v.io/v23/vdl/vdltest.VWireAll" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 18                   ValueLen                          24 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 09                   ByteLen                            9 [string len]
+	// 426f6f6c4e426f6f6c   PrimValue                "BoolNBool" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 426f6f6c4e537472696e67 PrimValue              "BoolNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 426f6f6c4e537472756374 PrimValue              "BoolNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 07                   ByteLen                            7 [string len]
+	// 496e744e496e74       PrimValue                  "IntNInt" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2d                   PrimValue                         45 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0a                   ByteLen                           10 [string len]
+	// 496e744e537472696e67 PrimValue               "IntNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2e                   PrimValue                         46 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0a                   ByteLen                           10 [string len]
+	// 496e744e537472756374 PrimValue               "IntNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2f                   PrimValue                         47 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 537472696e674e537472696e67 PrimValue            "StringNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 30                   PrimValue                         48 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 537472696e674e537472756374 PrimValue            "StringNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 31                   PrimValue                         49 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 41727261794e537472696e67 PrimValue             "ArrayNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 32                   PrimValue                         50 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 41727261794e537472756374 PrimValue             "ArrayNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 33                   PrimValue                         51 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 4c6973744e537472696e67 PrimValue              "ListNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 34                   PrimValue                         52 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 4c6973744e537472756374 PrimValue              "ListNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 35                   PrimValue                         53 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 5374727563744e537472696e67 PrimValue            "StructNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 36                   PrimValue                         54 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 5374727563744e537472756374 PrimValue            "StructNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 37                   PrimValue                         55 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 5374727563744e4172726179 PrimValue             "StructNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 38                   PrimValue                         56 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 5374727563744e536c696365 PrimValue             "StructNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 39                   PrimValue                         57 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0e                   ByteLen                           14 [string len]
+	// 5374727563744e506f696e746572 PrimValue           "StructNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3a                   PrimValue                         58 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 5374727563744e4966616365 PrimValue             "StructNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3b                   PrimValue                         59 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 556e696f6e4e537472696e67 PrimValue             "UnionNString" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3c                   PrimValue                         60 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0c                   ByteLen                           12 [string len]
+	// 556e696f6e4e537472756374 PrimValue             "UnionNStruct" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3d                   PrimValue                         61 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 556e696f6e4e4172726179 PrimValue              "UnionNArray" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3e                   PrimValue                         62 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 556e696f6e4e536c696365 PrimValue              "UnionNSlice" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 3f                   PrimValue                         63 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0d                   ByteLen                           13 [string len]
+	// 556e696f6e4e506f696e746572 PrimValue            "UnionNPointer" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 40                   PrimValue                         64 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 0b                   ByteLen                           11 [string len]
+	// 556e696f6e4e4966616365 PrimValue              "UnionNIface" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 41                   PrimValue                         65 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 431, MsgN: 431, Buf(438): "52fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e7"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.VWireAll struct{BoolNBool v.io/v23/vdl/vdltest.VWireBoolNBool bool;BoolNString v.io/v23/vdl/vdltest.VWireBoolNString bool;BoolNStruct v.io/v23/vdl/vdltest.VWireBoolNStruct bool;IntNInt v.io/v23/vdl/vdltest.VWireIntNInt int32;IntNString v.io/v23/vdl/vdltest.VWireIntNString int32;IntNStruct v.io/v23/vdl/vdltest.VWireIntNStruct int32;StringNString v.io/v23/vdl/vdltest.VWireStringNString string;StringNStruct v.io/v23/vdl/vdltest.VWireStringNStruct string;ArrayNString v.io/v23/vdl/vdltest.VWireArrayNString [1]string;ArrayNStruct v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string;ListNString v.io/v23/vdl/vdltest.VWireListNString []string;ListNStruct v.io/v23/vdl/vdltest.VWireListNStruct []string;StructNString v.io/v23/vdl/vdltest.VWireStructNString struct{X string};StructNStruct v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string};StructNArray v.io/v23/vdl/vdltest.VWireStructNArray struct{X string};StructNSlice v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string};StructNPointer v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string};StructNIface v.io/v23/vdl/vdltest.VWireStructNIface struct{X string};UnionNString v.io/v23/vdl/vdltest.VWireUnionNString union{X string};UnionNStruct v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string};UnionNArray v.io/v23/vdl/vdltest.VWireUnionNArray union{X string};UnionNSlice v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string};UnionNPointer v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string};UnionNIface v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}}]
+	// fe0266               MsgLen                           614
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireAll.BoolNBool]
+	// 01                   PrimValue                       true [bool]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.VWireAll.BoolNString]
+	// 01                   PrimValue                       true [bool]
+	// 02                   Index                              2 [v.io/v23/vdl/vdltest.VWireAll.BoolNStruct]
+	// 01                   PrimValue                       true [bool]
+	// 03                   Index                              3 [v.io/v23/vdl/vdltest.VWireAll.IntNInt]
+	// fff5                 PrimValue                       -123 [int]
+	// 04                   Index                              4 [v.io/v23/vdl/vdltest.VWireAll.IntNString]
+	// fff5                 PrimValue                       -123 [int]
+	// 05                   Index                              5 [v.io/v23/vdl/vdltest.VWireAll.IntNStruct]
+	// fff5                 PrimValue                       -123 [int]
+	// 06                   Index                              6 [v.io/v23/vdl/vdltest.VWireAll.StringNString]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 07                   Index                              7 [v.io/v23/vdl/vdltest.VWireAll.StringNStruct]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 08                   Index                              8 [v.io/v23/vdl/vdltest.VWireAll.ArrayNString]
+	// 00                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 09                   Index                              9 [v.io/v23/vdl/vdltest.VWireAll.ArrayNStruct]
+	// 00                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 0a                   Index                             10 [v.io/v23/vdl/vdltest.VWireAll.ListNString]
+	// 01                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 0b                   Index                             11 [v.io/v23/vdl/vdltest.VWireAll.ListNStruct]
+	// 01                   ValueLen                           1 [list len]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 0c                   Index                             12 [v.io/v23/vdl/vdltest.VWireAll.StructNString]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNString.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNString END]
+	// 0d                   Index                             13 [v.io/v23/vdl/vdltest.VWireAll.StructNStruct]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNStruct.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNStruct END]
+	// 0e                   Index                             14 [v.io/v23/vdl/vdltest.VWireAll.StructNArray]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNArray.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNArray END]
+	// 0f                   Index                             15 [v.io/v23/vdl/vdltest.VWireAll.StructNSlice]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNSlice.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNSlice END]
+	// 10                   Index                             16 [v.io/v23/vdl/vdltest.VWireAll.StructNPointer]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNPointer.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNPointer END]
+	// 11                   Index                             17 [v.io/v23/vdl/vdltest.VWireAll.StructNIface]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireStructNIface.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireStructNIface END]
+	// 12                   Index                             18 [v.io/v23/vdl/vdltest.VWireAll.UnionNString]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNString.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 13                   Index                             19 [v.io/v23/vdl/vdltest.VWireAll.UnionNStruct]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNStruct.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 14                   Index                             20 [v.io/v23/vdl/vdltest.VWireAll.UnionNArray]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNArray.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 15                   Index                             21 [v.io/v23/vdl/vdltest.VWireAll.UnionNSlice]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNSlice.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 16                   Index                             22 [v.io/v23/vdl/vdltest.VWireAll.UnionNPointer]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNPointer.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// 17                   Index                             23 [v.io/v23/vdl/vdltest.VWireAll.UnionNIface]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.VWireUnionNIface.X]
+	// 1e                   ByteLen                           30 [string len]
+	// 6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c PrimValue          "abcdeΔΘΠΣΦ王普澤世界" [string]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.VWireAll END]
+	// DumpStatus{MsgId: 41, MsgLen: 614, MsgN: 614, Value: v.io/v23/vdl/vdltest.VWireAll struct{BoolNBool v.io/v23/vdl/vdltest.VWireBoolNBool bool;BoolNString v.io/v23/vdl/vdltest.VWireBoolNString bool;BoolNStruct v.io/v23/vdl/vdltest.VWireBoolNStruct bool;IntNInt v.io/v23/vdl/vdltest.VWireIntNInt int32;IntNString v.io/v23/vdl/vdltest.VWireIntNString int32;IntNStruct v.io/v23/vdl/vdltest.VWireIntNStruct int32;StringNString v.io/v23/vdl/vdltest.VWireStringNString string;StringNStruct v.io/v23/vdl/vdltest.VWireStringNStruct string;ArrayNString v.io/v23/vdl/vdltest.VWireArrayNString [1]string;ArrayNStruct v.io/v23/vdl/vdltest.VWireArrayNStruct [1]string;ListNString v.io/v23/vdl/vdltest.VWireListNString []string;ListNStruct v.io/v23/vdl/vdltest.VWireListNStruct []string;StructNString v.io/v23/vdl/vdltest.VWireStructNString struct{X string};StructNStruct v.io/v23/vdl/vdltest.VWireStructNStruct struct{X string};StructNArray v.io/v23/vdl/vdltest.VWireStructNArray struct{X string};StructNSlice v.io/v23/vdl/vdltest.VWireStructNSlice struct{X string};StructNPointer v.io/v23/vdl/vdltest.VWireStructNPointer struct{X string};StructNIface v.io/v23/vdl/vdltest.VWireStructNIface struct{X string};UnionNString v.io/v23/vdl/vdltest.VWireUnionNString union{X string};UnionNStruct v.io/v23/vdl/vdltest.VWireUnionNStruct union{X string};UnionNArray v.io/v23/vdl/vdltest.VWireUnionNArray union{X string};UnionNSlice v.io/v23/vdl/vdltest.VWireUnionNSlice union{X string};UnionNPointer v.io/v23/vdl/vdltest.VWireUnionNPointer union{X string};UnionNIface v.io/v23/vdl/vdltest.VWireUnionNIface union{X string}}{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}}}
+	{
+		`Full vdltest.VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}}`,
+		vdltest.VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: "abcdeΔΘΠΣΦ王普澤世界", StringNStruct: "abcdeΔΘΠΣΦ王普澤世界", ArrayNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ArrayNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNString: {"abcdeΔΘΠΣΦ王普澤世界"}, ListNStruct: {"abcdeΔΘΠΣΦ王普澤世界"}, StructNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, StructNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNString: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNStruct: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNArray: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNSlice: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNPointer: {X: "abcdeΔΘΠΣΦ王普澤世界"}, UnionNIface: {X: "abcdeΔΘΠΣΦ王普澤世界"}},
+		0x81,
+		"815329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e152fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c13001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c14001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c15001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c16001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c17001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1", "5329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e1", "52fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c13001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c14001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c15001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c16001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c17001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(36): "512000001a762e696f2f7632332f76646c2f76646c746573742e58426f6f6c0101e15200"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -142458,4 +145629,448 @@
 		0x81,
 		"81592901001d762e696f2f7632332f76646c2f76646c746573742e58456e756d4263640103014201430144e1570404012de15531020029762e696f2f7632332f76646c2f76646c746573742e584172726179315f5365745f58456e756d426364012c0201e15344060037762e696f2f7632332f76646c2f76646c746573742e585374727563744465707468335f584172726179315f5365745f58456e756d426364010100024630012be1e1510408012ae1520500000102e1", "592901001d762e696f2f7632332f76646c2f76646c746573742e58456e756d4263640103014201430144e1570404012de15531020029762e696f2f7632332f76646c2f76646c746573742e584172726179315f5365745f58456e756d426364012c0201e15344060037762e696f2f7632332f76646c2f76646c746573742e585374727563744465707468335f584172726179315f5365745f58456e756d426364010100024630012be1e1510408012ae1", "520500000102e1",
 	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(67): "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(60): "513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 1f                   ByteLen                           31 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c65 PrimValue       "v.io/v23/vdl/vdltest.XSelfCycle" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 4e657874             PrimValue                     "Next" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.XSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.XSelfCycle}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XSelfCycle END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.XSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.XSelfCycle}{Data: 0, Next: nil}}
+	{
+		`Zero vdltest.XSelfCycle{}`,
+		vdltest.XSelfCycle{},
+		0x81,
+		"81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e15201e1", "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(85): "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(78): "513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 1f                   ByteLen                           31 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c65 PrimValue       "v.io/v23/vdl/vdltest.XSelfCycle" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 4e657874             PrimValue                     "Next" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(21): "521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.XSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.XSelfCycle}]
+	// 13                   MsgLen                            19
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XSelfCycle.Next]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XSelfCycle.Next]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XSelfCycle.Next]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XSelfCycle.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XSelfCycle END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XSelfCycle END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XSelfCycle END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XSelfCycle END]
+	// DumpStatus{MsgId: 41, MsgLen: 19, MsgN: 19, Value: v.io/v23/vdl/vdltest.XSelfCycle struct{Data int64;Next ?v.io/v23/vdl/vdltest.XSelfCycle}{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123, Next: nil}}}}}
+	{
+		`Full vdltest.XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}`,
+		vdltest.XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}},
+		0x81,
+		"81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1", "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1", "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(132): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(125): "e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(67): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(60): "5137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB}}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleB END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB}}{Data: 0, A: nil}}
+	{
+		`Zero vdltest.XMutualCycleB{}`,
+		vdltest.XMutualCycleB{},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(150): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(143): "e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(85): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(78): "5137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(21): "521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB}}]
+	// 13                   MsgLen                            19
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XMutualCycleB.A]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XMutualCycleA.B]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XMutualCycleB.A]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleA END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleB END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleA END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleB END]
+	// DumpStatus{MsgId: 41, MsgLen: 19, MsgN: 19, Value: v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB}}{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123, B: nil}}}}}
+	{
+		`Full vdltest.XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}`,
+		vdltest.XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1", "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(132): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(125): "e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(67): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(60): "5137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(3): "5201e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA}}]
+	// 01                   MsgLen                             1
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleA END]
+	// DumpStatus{MsgId: 41, MsgLen: 1, MsgN: 1, Value: v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA}}{Data: 0, B: nil}}
+	{
+		`Zero vdltest.XMutualCycleA{}`,
+		vdltest.XMutualCycleA{},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1", "5201e1",
+	},
+	// 81                   Version                          129 [vom version 81]
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(150): "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 57                   MsgId                            -44
+	//                      TypeMsg                           44
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 29                   PrimValue                         41 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -44, MsgLen: 4, MsgN: 4, Buf(143): "e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 55                   MsgId                            -43
+	//                      TypeMsg                           43
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6542 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleB" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 41                   PrimValue                        "A" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2c                   PrimValue                         44 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -43, MsgLen: 55, MsgN: 55, Buf(85): "e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// e2                   Control               IncompleteType [incomplete type]
+	// 53                   MsgId                            -42
+	//                      TypeMsg                           42
+	// 04                   MsgLen                             4
+	// 08                   WireTypeIndex                      8 [v.io/v23/vom.wireOptional]
+	// 01                   Index                              1 [v.io/v23/vom.wireOptional.Elem]
+	// 2b                   PrimValue                         43 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireOptional END]
+	// DumpStatus{MsgId: -42, MsgLen: 4, MsgN: 4, Buf(78): "5137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 51                   MsgId                            -41
+	//                      TypeMsg                           41
+	// 37                   MsgLen                            55
+	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
+	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
+	// 22                   ByteLen                           34 [string len]
+	// 762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c6541 PrimValue       "v.io/v23/vdl/vdltest.XMutualCycleA" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
+	// 02                   ValueLen                           2 [list len]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 04                   ByteLen                            4 [string len]
+	// 44617461             PrimValue                     "Data" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 09                   PrimValue                          9 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
+	// 01                   ByteLen                            1 [string len]
+	// 42                   PrimValue                        "B" [string]
+	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
+	// 2a                   PrimValue                         42 [uint]
+	// e1                   Control                          End [v.io/v23/vom.wireField END]
+	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
+	// DumpStatus{MsgId: -41, MsgLen: 55, MsgN: 55, Buf(21): "521300fff50100fff50100fff50100fff5e1e1e1e1"}
+	// 52                   MsgId                             41
+	//                      ValueMsg                          41 [v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA}}]
+	// 13                   MsgLen                            19
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XMutualCycleA.B]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XMutualCycleB.A]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleA.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// 01                   Index                              1 [v.io/v23/vdl/vdltest.XMutualCycleA.B]
+	// 00                   Index                              0 [v.io/v23/vdl/vdltest.XMutualCycleB.Data]
+	// fff5                 PrimValue                       -123 [int]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleB END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleA END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleB END]
+	// e1                   Control                          End [v.io/v23/vdl/vdltest.XMutualCycleA END]
+	// DumpStatus{MsgId: 41, MsgLen: 19, MsgN: 19, Value: v.io/v23/vdl/vdltest.XMutualCycleA struct{Data int64;B ?v.io/v23/vdl/vdltest.XMutualCycleB struct{Data int64;A ?v.io/v23/vdl/vdltest.XMutualCycleA}}{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123, A: nil}}}}}
+	{
+		`Full vdltest.XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}`,
+		vdltest.XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}},
+		0x81,
+		"81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1", "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1", "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
 }
diff --git a/vom/vomtest/internal/vomtestgen/doc.go b/vom/vomtest/internal/vomtestgen/doc.go
index e07b085..7b8dfab 100644
--- a/vom/vomtest/internal/vomtestgen/doc.go
+++ b/vom/vomtest/internal/vomtestgen/doc.go
@@ -14,17 +14,12 @@
 This tool does not run the vdl tool on the generated *.vdl files; you must do
 that yourself, typically via "jiri go install".
 
-Instead of running this tool manually, it is typically invoked via:
-
+Do not run this tool manually.  Instead invoke it via:
    $ jiri run go generate v.io/v23/vom/vomtest
 
 Usage:
    vomtestgen [flags]
 
-The vomtestgen flags are:
- -data81=data81_gen.vdl
-   Name of the generated data file for version 81.
-
 The global flags are:
  -metadata=<just specify -metadata to activate>
    Displays metadata for the program and exits.
diff --git a/vom/vomtest/internal/vomtestgen/main.go b/vom/vomtest/internal/vomtestgen/main.go
index bc58fd5..d641c39 100644
--- a/vom/vomtest/internal/vomtestgen/main.go
+++ b/vom/vomtest/internal/vomtestgen/main.go
@@ -36,26 +36,24 @@
 This tool does not run the vdl tool on the generated *.vdl files; you must do
 that yourself, typically via "jiri go install".
 
-Instead of running this tool manually, it is typically invoked via:
-
+Do not run this tool manually.  Instead invoke it via:
    $ jiri run go generate v.io/v23/vom/vomtest
 `,
 }
 
 func main() {
-	cmdGen.Flags.StringVar(&flagData81, "data81", "data81_gen.vdl", "Name of the generated data file for version 81.")
 	cmdline.Main(cmdGen)
 }
 
-var (
-	flagData81 string
+const (
+	dataFileSuffix = "_gen.vdl"
 )
 
 func runGen(_ *cmdline.Env, _ []string) error {
 	allCanonical := vdltest.AllPassFunc(func(e vdltest.Entry) bool {
 		return e.IsCanonical
 	})
-	writeFileVomTest(flagData81, "data81", vdltest.ToEntryValues(allCanonical))
+	writeFileVomTest("data81", vdltest.ToEntryValues(allCanonical))
 	return nil
 }
 
@@ -92,8 +90,9 @@
 `)
 }
 
-func writeFileVomTest(fileName, constName string, entries []vdltest.EntryValue) {
+func writeFileVomTest(constName string, entries []vdltest.EntryValue) {
 	const version vom.Version = vom.Version81
+	fileName := constName + dataFileSuffix
 	// We skip all random entries for now, since they may contain multiple set and
 	// map elements, which would cause non-deterministic output.
 	//
diff --git a/vom/vomtest/vomtest.vdl.go b/vom/vomtest/vomtest.vdl.go
index b0e386f..f857f53 100644
--- a/vom/vomtest/vomtest.vdl.go
+++ b/vom/vomtest/vomtest.vdl.go
@@ -8098,6 +8098,1015 @@
 		HexValue: "520500000102e1",
 	},
 	{
+		Name:     "Zero vdltest.VSelfCycle{}",
+		Value:    vdltest.VSelfCycle{},
+		Version:  129,
+		Hex:      "81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e15201e1",
+		HexType:  "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}",
+		Value: vdltest.VSelfCycle{
+			Data: -123,
+			Next: &vdltest.VSelfCycle{
+				Data: -123,
+				Next: &vdltest.VSelfCycle{
+					Data: -123,
+					Next: &vdltest.VSelfCycle{
+						Data: -123,
+					},
+				},
+			},
+		},
+		Version:  129,
+		Hex:      "81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1",
+		HexType:  "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5653656c664379636c6501020004446174610109e100044e657874012ae1e1",
+		HexValue: "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	{
+		Name:     "Zero vdltest.VMutualCycleB{}",
+		Value:    vdltest.VMutualCycleB{},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}",
+		Value: vdltest.VMutualCycleB{
+			Data: -123,
+			A: &vdltest.VMutualCycleA{
+				Data: -123,
+				B: &vdltest.VMutualCycleB{
+					Data: -123,
+					A: &vdltest.VMutualCycleA{
+						Data: -123,
+					},
+				},
+			},
+		},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ae1e1",
+		HexValue: "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	{
+		Name:     "Zero vdltest.VMutualCycleA{}",
+		Value:    vdltest.VMutualCycleA{},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}",
+		Value: vdltest.VMutualCycleA{
+			Data: -123,
+			B: &vdltest.VMutualCycleB{
+				Data: -123,
+				A: &vdltest.VMutualCycleA{
+					Data: -123,
+					B: &vdltest.VMutualCycleB{
+						Data: -123,
+					},
+				},
+			},
+		},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e564d757475616c4379636c654101020004446174610109e1000142012ae1e1",
+		HexValue: "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	{
+		Name:     "Zero vdltest.VWireBoolNBool(false)",
+		Value:    vdltest.VNativeWireBoolNBool(false),
+		Version:  129,
+		Hex:      "815129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e15200",
+		HexType:  "5129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "Full vdltest.VWireBoolNBool(true)",
+		Value: func() vdltest.VNativeWireBoolNBool {
+			var native vdltest.VNativeWireBoolNBool
+			wire := vdltest.VWireBoolNBool(true)
+			if err := vdltest.VWireBoolNBoolToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e15201",
+		HexType:  "5129000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1",
+		HexValue: "5201",
+	},
+	{
+		Name:     "Zero vdltest.VWireBoolNString(false)",
+		Value:    vdltest.VNativeWireBoolNString(""),
+		Version:  129,
+		Hex:      "81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e15200",
+		HexType:  "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "Full vdltest.VWireBoolNString(true)",
+		Value: func() vdltest.VNativeWireBoolNString {
+			var native vdltest.VNativeWireBoolNString
+			wire := vdltest.VWireBoolNString(true)
+			if err := vdltest.VWireBoolNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e15201",
+		HexType:  "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1",
+		HexValue: "5201",
+	},
+	{
+		Name:     "Zero vdltest.VWireBoolNStruct(false)",
+		Value:    vdltest.VNativeWireBoolNStruct{},
+		Version:  129,
+		Hex:      "81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15200",
+		HexType:  "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "Full vdltest.VWireBoolNStruct(true)",
+		Value: func() vdltest.VNativeWireBoolNStruct {
+			var native vdltest.VNativeWireBoolNStruct
+			wire := vdltest.VWireBoolNStruct(true)
+			if err := vdltest.VWireBoolNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15201",
+		HexType:  "512b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e1",
+		HexValue: "5201",
+	},
+	{
+		Name:     "Zero vdltest.VWireIntNInt(0)",
+		Value:    vdltest.VNativeWireIntNInt(0),
+		Version:  129,
+		Hex:      "815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15200",
+		HexType:  "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "+Max vdltest.VWireIntNInt(2147483647)",
+		Value: func() vdltest.VNativeWireIntNInt {
+			var native vdltest.VNativeWireIntNInt
+			wire := vdltest.VWireIntNInt(2147483647)
+			if err := vdltest.VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fcfffffffe",
+		HexType:  "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1",
+		HexValue: "52fcfffffffe",
+	},
+	{
+		Name: "+Min vdltest.VWireIntNInt(1)",
+		Value: func() vdltest.VNativeWireIntNInt {
+			var native vdltest.VNativeWireIntNInt
+			wire := vdltest.VWireIntNInt(1)
+			if err := vdltest.VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15202",
+		HexType:  "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1",
+		HexValue: "5202",
+	},
+	{
+		Name: "-Max vdltest.VWireIntNInt(-2147483648)",
+		Value: func() vdltest.VNativeWireIntNInt {
+			var native vdltest.VNativeWireIntNInt
+			wire := vdltest.VWireIntNInt(-2147483648)
+			if err := vdltest.VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fcffffffff",
+		HexType:  "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1",
+		HexValue: "52fcffffffff",
+	},
+	{
+		Name: "-Min vdltest.VWireIntNInt(-1)",
+		Value: func() vdltest.VNativeWireIntNInt {
+			var native vdltest.VNativeWireIntNInt
+			wire := vdltest.VWireIntNInt(-1)
+			if err := vdltest.VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15201",
+		HexType:  "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1",
+		HexValue: "5201",
+	},
+	{
+		Name: "Full vdltest.VWireIntNInt(-123)",
+		Value: func() vdltest.VNativeWireIntNInt {
+			var native vdltest.VNativeWireIntNInt
+			wire := vdltest.VWireIntNInt(-123)
+			if err := vdltest.VWireIntNIntToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e152fff5",
+		HexType:  "5127000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e1",
+		HexValue: "52fff5",
+	},
+	{
+		Name:     "Zero vdltest.VWireIntNString(0)",
+		Value:    vdltest.VNativeWireIntNString(""),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15200",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "+Max vdltest.VWireIntNString(2147483647)",
+		Value: func() vdltest.VNativeWireIntNString {
+			var native vdltest.VNativeWireIntNString
+			wire := vdltest.VWireIntNString(2147483647)
+			if err := vdltest.VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fcfffffffe",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1",
+		HexValue: "52fcfffffffe",
+	},
+	{
+		Name: "+Min vdltest.VWireIntNString(1)",
+		Value: func() vdltest.VNativeWireIntNString {
+			var native vdltest.VNativeWireIntNString
+			wire := vdltest.VWireIntNString(1)
+			if err := vdltest.VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15202",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1",
+		HexValue: "5202",
+	},
+	{
+		Name: "-Max vdltest.VWireIntNString(-2147483648)",
+		Value: func() vdltest.VNativeWireIntNString {
+			var native vdltest.VNativeWireIntNString
+			wire := vdltest.VWireIntNString(-2147483648)
+			if err := vdltest.VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fcffffffff",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1",
+		HexValue: "52fcffffffff",
+	},
+	{
+		Name: "-Min vdltest.VWireIntNString(-1)",
+		Value: func() vdltest.VNativeWireIntNString {
+			var native vdltest.VNativeWireIntNString
+			wire := vdltest.VWireIntNString(-1)
+			if err := vdltest.VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15201",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1",
+		HexValue: "5201",
+	},
+	{
+		Name: "Full vdltest.VWireIntNString(-123)",
+		Value: func() vdltest.VNativeWireIntNString {
+			var native vdltest.VNativeWireIntNString
+			wire := vdltest.VWireIntNString(-123)
+			if err := vdltest.VWireIntNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e152fff5",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e1",
+		HexValue: "52fff5",
+	},
+	{
+		Name:     "Zero vdltest.VWireIntNStruct(0)",
+		Value:    vdltest.VNativeWireIntNStruct{},
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15200",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "+Max vdltest.VWireIntNStruct(2147483647)",
+		Value: func() vdltest.VNativeWireIntNStruct {
+			var native vdltest.VNativeWireIntNStruct
+			wire := vdltest.VWireIntNStruct(2147483647)
+			if err := vdltest.VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fcfffffffe",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1",
+		HexValue: "52fcfffffffe",
+	},
+	{
+		Name: "+Min vdltest.VWireIntNStruct(1)",
+		Value: func() vdltest.VNativeWireIntNStruct {
+			var native vdltest.VNativeWireIntNStruct
+			wire := vdltest.VWireIntNStruct(1)
+			if err := vdltest.VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15202",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1",
+		HexValue: "5202",
+	},
+	{
+		Name: "-Max vdltest.VWireIntNStruct(-2147483648)",
+		Value: func() vdltest.VNativeWireIntNStruct {
+			var native vdltest.VNativeWireIntNStruct
+			wire := vdltest.VWireIntNStruct(-2147483648)
+			if err := vdltest.VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fcffffffff",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1",
+		HexValue: "52fcffffffff",
+	},
+	{
+		Name: "-Min vdltest.VWireIntNStruct(-1)",
+		Value: func() vdltest.VNativeWireIntNStruct {
+			var native vdltest.VNativeWireIntNStruct
+			wire := vdltest.VWireIntNStruct(-1)
+			if err := vdltest.VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15201",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1",
+		HexValue: "5201",
+	},
+	{
+		Name: "Full vdltest.VWireIntNStruct(-123)",
+		Value: func() vdltest.VNativeWireIntNStruct {
+			var native vdltest.VNativeWireIntNStruct
+			wire := vdltest.VWireIntNStruct(-123)
+			if err := vdltest.VWireIntNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e152fff5",
+		HexType:  "512a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e1",
+		HexValue: "52fff5",
+	},
+	{
+		Name:     "Zero vdltest.VWireStringNString(\"\")",
+		Value:    vdltest.VNativeWireStringNString(""),
+		Version:  129,
+		Hex:      "81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e15200",
+		HexType:  "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "Full vdltest.VWireStringNString(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Value: func() vdltest.VNativeWireStringNString {
+			var native vdltest.VNativeWireStringNString
+			wire := vdltest.VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+			if err := vdltest.VWireStringNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1",
+		HexValue: "521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireStringNStruct(\"\")",
+		Value:    vdltest.VNativeWireStringNStruct{},
+		Version:  129,
+		Hex:      "81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e15200",
+		HexType:  "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1",
+		HexValue: "5200",
+	},
+	{
+		Name: "Full vdltest.VWireStringNStruct(\"abcdeΔΘΠΣΦ王普澤世界\")",
+		Value: func() vdltest.VNativeWireStringNStruct {
+			var native vdltest.VNativeWireStringNStruct
+			wire := vdltest.VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+			if err := vdltest.VWireStringNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "512d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1",
+		HexValue: "521e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireArrayNString{}",
+		Value:    vdltest.VNativeWireArrayNString(""),
+		Version:  129,
+		Hex:      "81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e152020000",
+		HexType:  "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1",
+		HexValue: "52020000",
+	},
+	{
+		Name: "Full vdltest.VWireArrayNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireArrayNString {
+			var native vdltest.VNativeWireArrayNString
+			wire := vdltest.VWireArrayNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireArrayNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireArrayNStruct{}",
+		Value:    vdltest.VNativeWireArrayNStruct{},
+		Version:  129,
+		Hex:      "81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e152020000",
+		HexType:  "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1",
+		HexValue: "52020000",
+	},
+	{
+		Name: "Full vdltest.VWireArrayNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireArrayNStruct {
+			var native vdltest.VNativeWireArrayNStruct
+			wire := vdltest.VWireArrayNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireArrayNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "512e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireListNString{}",
+		Value:    vdltest.VNativeWireListNString(""),
+		Version:  129,
+		Hex:      "81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1520100",
+		HexType:  "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1",
+		HexValue: "520100",
+	},
+	{
+		Name: "Full vdltest.VWireListNString{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireListNString {
+			var native vdltest.VNativeWireListNString
+			wire := vdltest.VWireListNString{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireListNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e15220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1",
+		HexValue: "5220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireListNStruct{}",
+		Value:    vdltest.VNativeWireListNStruct{},
+		Version:  129,
+		Hex:      "81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1520100",
+		HexType:  "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1",
+		HexValue: "520100",
+	},
+	{
+		Name: "Full vdltest.VWireListNStruct{\"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireListNStruct {
+			var native vdltest.VNativeWireListNStruct
+			wire := vdltest.VWireListNStruct{
+				"abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireListNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "81512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e15220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "512b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e1",
+		HexValue: "5220011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireStructNString{}",
+		Value:    vdltest.VNativeWireStructNString(""),
+		Version:  129,
+		Hex:      "815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e15201e1",
+		HexType:  "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireStructNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireStructNString {
+			var native vdltest.VNativeWireStructNString
+			wire := vdltest.VWireStructNString{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireStructNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e1",
+		HexValue: "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
+		Name:     "Zero vdltest.VWireStructNStruct{}",
+		Value:    vdltest.VNativeWireStructNStruct{},
+		Version:  129,
+		Hex:      "815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e15201e1",
+		HexType:  "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireStructNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireStructNStruct {
+			var native vdltest.VNativeWireStructNStruct
+			wire := vdltest.VWireStructNStruct{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireStructNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5133060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e1",
+		HexValue: "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
+		Name:     "Zero vdltest.VWireStructNArray{}",
+		Value:    vdltest.VNativeWireStructNArray{},
+		Version:  129,
+		Hex:      "815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e15201e1",
+		HexType:  "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireStructNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireStructNArray {
+			var native vdltest.VNativeWireStructNArray
+			wire := vdltest.VWireStructNArray{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireStructNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e1",
+		HexValue: "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
+		Name:     "Zero vdltest.VWireStructNSlice{}",
+		Value:    vdltest.VNativeWireStructNSlice(nil),
+		Version:  129,
+		Hex:      "815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e15201e1",
+		HexType:  "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireStructNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireStructNSlice {
+			var native vdltest.VNativeWireStructNSlice
+			wire := vdltest.VWireStructNSlice{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			}
+			if err := vdltest.VWireStructNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e1",
+		HexValue: "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
+		Name:     "Zero vdltest.VWireStructNPointer{}",
+		Value:    vdltest.VWireStructNPointer{},
+		Version:  129,
+		Hex:      "815134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e15201e1",
+		HexType:  "5134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireStructNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: vdltest.VWireStructNPointer{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+		Version:  129,
+		Hex:      "815134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5134060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e1",
+		HexValue: "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
+		Name:     "Zero vdltest.VWireStructNIface{}",
+		Value:    vdltest.VWireStructNIface{},
+		Version:  129,
+		Hex:      "815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e15201e1",
+		HexType:  "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireStructNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: vdltest.VWireStructNIface{
+			X: "abcdeΔΘΠΣΦ王普澤世界",
+		},
+		Version:  129,
+		Hex:      "815132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e15221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e1",
+		HexValue: "5221001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
+		Name:     "Zero vdltest.VWireUnionNString{X: \"\"}",
+		Value:    vdltest.VNativeWireUnionNString(""),
+		Version:  129,
+		Hex:      "815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e152020000",
+		HexType:  "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e1",
+		HexValue: "52020000",
+	},
+	{
+		Name: "Full vdltest.VWireUnionNString{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireUnionNString {
+			var native vdltest.VNativeWireUnionNString
+			wire := vdltest.VWireUnionNString(vdltest.VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := vdltest.VWireUnionNStringToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireUnionNStruct{X: \"\"}",
+		Value:    vdltest.VNativeWireUnionNStruct{},
+		Version:  129,
+		Hex:      "815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e152020000",
+		HexType:  "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e1",
+		HexValue: "52020000",
+	},
+	{
+		Name: "Full vdltest.VWireUnionNStruct{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireUnionNStruct {
+			var native vdltest.VNativeWireUnionNStruct
+			wire := vdltest.VWireUnionNStruct(vdltest.VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := vdltest.VWireUnionNStructToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "5132070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireUnionNArray{X: \"\"}",
+		Value:    vdltest.VNativeWireUnionNArray{},
+		Version:  129,
+		Hex:      "815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e152020000",
+		HexType:  "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e1",
+		HexValue: "52020000",
+	},
+	{
+		Name: "Full vdltest.VWireUnionNArray{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireUnionNArray {
+			var native vdltest.VNativeWireUnionNArray
+			wire := vdltest.VWireUnionNArray(vdltest.VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := vdltest.VWireUnionNArrayToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireUnionNSlice{X: \"\"}",
+		Value:    vdltest.VNativeWireUnionNSlice(nil),
+		Version:  129,
+		Hex:      "815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e152020000",
+		HexType:  "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e1",
+		HexValue: "52020000",
+	},
+	{
+		Name: "Full vdltest.VWireUnionNSlice{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value: func() vdltest.VNativeWireUnionNSlice {
+			var native vdltest.VNativeWireUnionNSlice
+			wire := vdltest.VWireUnionNSlice(vdltest.VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+			if err := vdltest.VWireUnionNSliceToNative(wire, &native); err != nil {
+				panic(err)
+			}
+			return native
+		}(),
+		Version:  129,
+		Hex:      "815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireUnionNPointer{X: \"\"}",
+		Value:    vdltest.VWireUnionNPointer(vdltest.VWireUnionNPointerX{}),
+		Version:  129,
+		Hex:      "815133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e152020000",
+		HexType:  "5133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1",
+		HexValue: "52020000",
+	},
+	{
+		Name:     "Full vdltest.VWireUnionNPointer{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value:    vdltest.VWireUnionNPointer(vdltest.VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"}),
+		Version:  129,
+		Hex:      "815133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "5133070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name:     "Zero vdltest.VWireUnionNIface{X: \"\"}",
+		Value:    vdltest.VWireUnionNIface(vdltest.VWireUnionNIfaceX{}),
+		Version:  129,
+		Hex:      "815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e152020000",
+		HexType:  "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e1",
+		HexValue: "52020000",
+	},
+	{
+		Name:     "Full vdltest.VWireUnionNIface{X: \"abcdeΔΘΠΣΦ王普澤世界\"}",
+		Value:    vdltest.VWireUnionNIface(vdltest.VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"}),
+		Version:  129,
+		Hex:      "815131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e15220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+		HexType:  "5131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e1",
+		HexValue: "5220001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c",
+	},
+	{
+		Name: "Zero vdltest.VWireAll{}",
+		Value: vdltest.VWireAll{
+			UnionNPointer: vdltest.VWireUnionNPointerX{},
+			UnionNIface:   vdltest.VWireUnionNIfaceX{},
+		},
+		Version:  129,
+		Hex:      "815329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e15201e1",
+		HexType:  "5329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.VWireAll{BoolNBool: true, BoolNString: true, BoolNStruct: true, IntNInt: -123, IntNString: -123, IntNStruct: -123, StringNString: \"abcdeΔΘΠΣΦ王普澤世界\", StringNStruct: \"abcdeΔΘΠΣΦ王普澤世界\", ArrayNString: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ArrayNStruct: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ListNString: {\"abcdeΔΘΠΣΦ王普澤世界\"}, ListNStruct: {\"abcdeΔΘΠΣΦ王普澤世界\"}, StructNString: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNStruct: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNArray: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNSlice: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNPointer: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, StructNIface: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNString: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNStruct: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNArray: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNSlice: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNPointer: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}, UnionNIface: {X: \"abcdeΔΘΠΣΦ王普澤世界\"}}",
+		Value: vdltest.VWireAll{
+			BoolNBool: func() vdltest.VNativeWireBoolNBool {
+				var native vdltest.VNativeWireBoolNBool
+				wire := vdltest.VWireBoolNBool(true)
+				if err := vdltest.VWireBoolNBoolToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			BoolNString: func() vdltest.VNativeWireBoolNString {
+				var native vdltest.VNativeWireBoolNString
+				wire := vdltest.VWireBoolNString(true)
+				if err := vdltest.VWireBoolNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			BoolNStruct: func() vdltest.VNativeWireBoolNStruct {
+				var native vdltest.VNativeWireBoolNStruct
+				wire := vdltest.VWireBoolNStruct(true)
+				if err := vdltest.VWireBoolNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNInt: func() vdltest.VNativeWireIntNInt {
+				var native vdltest.VNativeWireIntNInt
+				wire := vdltest.VWireIntNInt(-123)
+				if err := vdltest.VWireIntNIntToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNString: func() vdltest.VNativeWireIntNString {
+				var native vdltest.VNativeWireIntNString
+				wire := vdltest.VWireIntNString(-123)
+				if err := vdltest.VWireIntNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			IntNStruct: func() vdltest.VNativeWireIntNStruct {
+				var native vdltest.VNativeWireIntNStruct
+				wire := vdltest.VWireIntNStruct(-123)
+				if err := vdltest.VWireIntNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNString: func() vdltest.VNativeWireStringNString {
+				var native vdltest.VNativeWireStringNString
+				wire := vdltest.VWireStringNString("abcdeΔΘΠΣΦ王普澤世界")
+				if err := vdltest.VWireStringNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StringNStruct: func() vdltest.VNativeWireStringNStruct {
+				var native vdltest.VNativeWireStringNStruct
+				wire := vdltest.VWireStringNStruct("abcdeΔΘΠΣΦ王普澤世界")
+				if err := vdltest.VWireStringNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNString: func() vdltest.VNativeWireArrayNString {
+				var native vdltest.VNativeWireArrayNString
+				wire := vdltest.VWireArrayNString{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireArrayNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ArrayNStruct: func() vdltest.VNativeWireArrayNStruct {
+				var native vdltest.VNativeWireArrayNStruct
+				wire := vdltest.VWireArrayNStruct{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireArrayNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNString: func() vdltest.VNativeWireListNString {
+				var native vdltest.VNativeWireListNString
+				wire := vdltest.VWireListNString{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireListNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			ListNStruct: func() vdltest.VNativeWireListNStruct {
+				var native vdltest.VNativeWireListNStruct
+				wire := vdltest.VWireListNStruct{
+					"abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireListNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNString: func() vdltest.VNativeWireStructNString {
+				var native vdltest.VNativeWireStructNString
+				wire := vdltest.VWireStructNString{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireStructNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNStruct: func() vdltest.VNativeWireStructNStruct {
+				var native vdltest.VNativeWireStructNStruct
+				wire := vdltest.VWireStructNStruct{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireStructNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNArray: func() vdltest.VNativeWireStructNArray {
+				var native vdltest.VNativeWireStructNArray
+				wire := vdltest.VWireStructNArray{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireStructNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNSlice: func() vdltest.VNativeWireStructNSlice {
+				var native vdltest.VNativeWireStructNSlice
+				wire := vdltest.VWireStructNSlice{
+					X: "abcdeΔΘΠΣΦ王普澤世界",
+				}
+				if err := vdltest.VWireStructNSliceToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			StructNPointer: vdltest.VWireStructNPointer{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			},
+			StructNIface: vdltest.VWireStructNIface{
+				X: "abcdeΔΘΠΣΦ王普澤世界",
+			},
+			UnionNString: func() vdltest.VNativeWireUnionNString {
+				var native vdltest.VNativeWireUnionNString
+				wire := vdltest.VWireUnionNString(vdltest.VWireUnionNStringX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := vdltest.VWireUnionNStringToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNStruct: func() vdltest.VNativeWireUnionNStruct {
+				var native vdltest.VNativeWireUnionNStruct
+				wire := vdltest.VWireUnionNStruct(vdltest.VWireUnionNStructX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := vdltest.VWireUnionNStructToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNArray: func() vdltest.VNativeWireUnionNArray {
+				var native vdltest.VNativeWireUnionNArray
+				wire := vdltest.VWireUnionNArray(vdltest.VWireUnionNArrayX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := vdltest.VWireUnionNArrayToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNSlice: func() vdltest.VNativeWireUnionNSlice {
+				var native vdltest.VNativeWireUnionNSlice
+				wire := vdltest.VWireUnionNSlice(vdltest.VWireUnionNSliceX{"abcdeΔΘΠΣΦ王普澤世界"})
+				if err := vdltest.VWireUnionNSliceToNative(wire, &native); err != nil {
+					panic(err)
+				}
+				return native
+			}(),
+			UnionNPointer: vdltest.VWireUnionNPointerX{"abcdeΔΘΠΣΦ王普澤世界"},
+			UnionNIface:   vdltest.VWireUnionNIfaceX{"abcdeΔΘΠΣΦ王普澤世界"},
+		},
+		Version:  129,
+		Hex:      "815329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e152fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c13001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c14001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c15001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c16001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c17001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+		HexType:  "5329000023762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e426f6f6c0101e1552b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e537472696e670101e1572b000025762e696f2f7632332f76646c2f76646c746573742e5657697265426f6f6c4e5374727563740101e15927000021762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e496e740108e15b2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e537472696e670108e15d2a000024762e696f2f7632332f76646c2f76646c746573742e5657697265496e744e5374727563740108e15f2d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e537472696e670103e1612d000027762e696f2f7632332f76646c2f76646c746573742e5657697265537472696e674e5374727563740103e1632e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e537472696e6701030201e1652e020026762e696f2f7632332f76646c2f76646c746573742e565769726541727261794e53747275637401030201e1672b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e537472696e670103e1692b030025762e696f2f7632332f76646c2f76646c746573742e56576972654c6973744e5374727563740103e16b33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e537472696e6701010001580103e1e16d33060027762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e53747275637401010001580103e1e16f32060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e417272617901010001580103e1e17132060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e536c69636501010001580103e1e17334060028762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e506f696e74657201010001580103e1e17532060026762e696f2f7632332f76646c2f76646c746573742e56576972655374727563744e496661636501010001580103e1e17732070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e537472696e6701010001580103e1e17932070026762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e53747275637401010001580103e1e17b31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e417272617901010001580103e1e17d31070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e536c69636501010001580103e1e17f33070027762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e506f696e74657201010001580103e1e1ff8131070025762e696f2f7632332f76646c2f76646c746573742e5657697265556e696f6e4e496661636501010001580103e1e151fe01af06001d762e696f2f7632332f76646c2f76646c746573742e5657697265416c6c01180009426f6f6c4e426f6f6c012ae1000b426f6f6c4e537472696e67012be1000b426f6f6c4e537472756374012ce10007496e744e496e74012de1000a496e744e537472696e67012ee1000a496e744e537472756374012fe1000d537472696e674e537472696e670130e1000d537472696e674e5374727563740131e1000c41727261794e537472696e670132e1000c41727261794e5374727563740133e1000b4c6973744e537472696e670134e1000b4c6973744e5374727563740135e1000d5374727563744e537472696e670136e1000d5374727563744e5374727563740137e1000c5374727563744e41727261790138e1000c5374727563744e536c6963650139e1000e5374727563744e506f696e746572013ae1000c5374727563744e4966616365013be1000c556e696f6e4e537472696e67013ce1000c556e696f6e4e537472756374013de1000b556e696f6e4e4172726179013ee1000b556e696f6e4e536c696365013fe1000d556e696f6e4e506f696e7465720140e1000b556e696f6e4e49666163650141e1e1",
+		HexValue: "52fe026600010101020103fff504fff505fff5061e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c071e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c08001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c09001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0a011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0b011e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c0c001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10d001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10e001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce10f001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce110001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce111001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce112001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c13001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c14001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c15001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c16001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958c17001e6162636465ce94ce98cea0cea3cea6e78e8be699aee6bea4e4b896e7958ce1",
+	},
+	{
 		Name:     "Zero vdltest.XBool(false)",
 		Value:    vdltest.XBool(false),
 		Version:  129,
@@ -15016,6 +16025,87 @@
 		HexType:  "592901001d762e696f2f7632332f76646c2f76646c746573742e58456e756d4263640103014201430144e1570404012de15531020029762e696f2f7632332f76646c2f76646c746573742e584172726179315f5365745f58456e756d426364012c0201e15344060037762e696f2f7632332f76646c2f76646c746573742e585374727563744465707468335f584172726179315f5365745f58456e756d426364010100024630012be1e1510408012ae1",
 		HexValue: "520500000102e1",
 	},
+	{
+		Name:     "Zero vdltest.XSelfCycle{}",
+		Value:    vdltest.XSelfCycle{},
+		Version:  129,
+		Hex:      "81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e15201e1",
+		HexType:  "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.XSelfCycle{Data: -123, Next: {Data: -123, Next: {Data: -123, Next: {Data: -123}}}}",
+		Value: vdltest.XSelfCycle{
+			Data: -123,
+			Next: &vdltest.XSelfCycle{
+				Data: -123,
+				Next: &vdltest.XSelfCycle{
+					Data: -123,
+					Next: &vdltest.XSelfCycle{
+						Data: -123,
+					},
+				},
+			},
+		},
+		Version:  129,
+		Hex:      "81e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1",
+		HexType:  "e25304080129e1513706001f762e696f2f7632332f76646c2f76646c746573742e5853656c664379636c6501020004446174610109e100044e657874012ae1e1",
+		HexValue: "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	{
+		Name:     "Zero vdltest.XMutualCycleB{}",
+		Value:    vdltest.XMutualCycleB{},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e15201e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.XMutualCycleB{Data: -123, A: {Data: -123, B: {Data: -123, A: {Data: -123}}}}",
+		Value: vdltest.XMutualCycleB{
+			Data: -123,
+			A: &vdltest.XMutualCycleA{
+				Data: -123,
+				B: &vdltest.XMutualCycleB{
+					Data: -123,
+					A: &vdltest.XMutualCycleA{
+						Data: -123,
+					},
+				},
+			},
+		},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ae1e1",
+		HexValue: "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
+	{
+		Name:     "Zero vdltest.XMutualCycleA{}",
+		Value:    vdltest.XMutualCycleA{},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e15201e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1",
+		HexValue: "5201e1",
+	},
+	{
+		Name: "Full vdltest.XMutualCycleA{Data: -123, B: {Data: -123, A: {Data: -123, B: {Data: -123}}}}",
+		Value: vdltest.XMutualCycleA{
+			Data: -123,
+			B: &vdltest.XMutualCycleB{
+				Data: -123,
+				A: &vdltest.XMutualCycleA{
+					Data: -123,
+					B: &vdltest.XMutualCycleB{
+						Data: -123,
+					},
+				},
+			},
+		},
+		Version:  129,
+		Hex:      "81e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1521300fff50100fff50100fff50100fff5e1e1e1e1",
+		HexType:  "e25704080129e1e25537060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654201020004446174610109e1000141012ce1e1e2530408012be15137060022762e696f2f7632332f76646c2f76646c746573742e584d757475616c4379636c654101020004446174610109e1000142012ae1e1",
+		HexValue: "521300fff50100fff50100fff50100fff5e1e1e1e1",
+	},
 }
 
 var __VDLInitCalled bool