v23: remove complex

MultiPart: 2/5
Change-Id: Id9c49c41c4516d3ec54f5d6c59d83bbc803a45dd
diff --git a/naming/.api b/naming/.api
index 5b55297..46e8919 100644
--- a/naming/.api
+++ b/naming/.api
@@ -43,7 +43,6 @@
 pkg naming, method (*MountEntryTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg naming, method (*MountFlag) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg naming, method (*MountFlag) MakeVDLTarget() vdl.Target
-pkg naming, method (*MountFlagTarget) FromComplex(complex128, *vdl.Type) error
 pkg naming, method (*MountFlagTarget) FromFloat(float64, *vdl.Type) error
 pkg naming, method (*MountFlagTarget) FromInt(int64, *vdl.Type) error
 pkg naming, method (*MountFlagTarget) FromUint(uint64, *vdl.Type) error
@@ -162,9 +161,9 @@
 pkg naming, type RouteOpt string
 pkg naming, type RoutingID struct
 pkg naming, type ServesMountTable bool
-pkg naming, var ErrNameExists verror.IDAction
-pkg naming, var ErrNoMountTable verror.IDAction
-pkg naming, var ErrNoSuchName verror.IDAction
-pkg naming, var ErrNoSuchNameRoot verror.IDAction
-pkg naming, var ErrResolutionDepthExceeded verror.IDAction
+pkg naming, var ErrNameExists unknown-type
+pkg naming, var ErrNoMountTable unknown-type
+pkg naming, var ErrNoSuchName unknown-type
+pkg naming, var ErrNoSuchNameRoot unknown-type
+pkg naming, var ErrResolutionDepthExceeded unknown-type
 pkg naming, var NullRoutingID RoutingID
diff --git a/naming/naming.vdl.go b/naming/naming.vdl.go
index fa06e8d..3ea123e 100644
--- a/naming/naming.vdl.go
+++ b/naming/naming.vdl.go
@@ -74,16 +74,6 @@
 
 	return nil
 }
-func (t *MountFlagTarget) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToUint32(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = MountFlag(val)
-
-	return nil
-}
 
 // MountedServer represents a server mounted on a specific name.
 type MountedServer struct {
diff --git a/query/engine/internal/conversions/conversions.go b/query/engine/internal/conversions/conversions.go
index 959e4f1..24f00de 100644
--- a/query/engine/internal/conversions/conversions.go
+++ b/query/engine/internal/conversions/conversions.go
@@ -37,24 +37,6 @@
 	}
 }
 
-func ConvertValueToComplex(o *query_parser.Operand) (*query_parser.Operand, error) {
-	var c query_parser.Operand
-	c.Type = query_parser.TypComplex
-	switch o.Type {
-	case query_parser.TypComplex:
-		return o, nil
-	case query_parser.TypFloat:
-		c.Complex = complex(o.Float, 0.0i)
-	case query_parser.TypInt:
-		c.Complex = complex(float64(o.Int), 0.0i)
-	case query_parser.TypUint:
-		c.Complex = complex(float64(o.Uint), 0.0i)
-	default:
-		return nil, errors.New("Cannot convert operand to Complex.")
-	}
-	return &c, nil
-}
-
 func ConvertValueToBigRat(o *query_parser.Operand) (*query_parser.Operand, error) {
 	// operand cannot be string literal.
 	var c query_parser.Operand
diff --git a/query/engine/internal/eval.go b/query/engine/internal/eval.go
index 0dc1262..852c88d 100644
--- a/query/engine/internal/eval.go
+++ b/query/engine/internal/eval.go
@@ -71,8 +71,6 @@
 		return compareBigRats(lhsValue, rhsValue, e.Operator)
 	case query_parser.TypBool:
 		return compareBools(lhsValue, rhsValue, e.Operator)
-	case query_parser.TypComplex:
-		return compareComplex(lhsValue, rhsValue, e.Operator)
 	case query_parser.TypFloat:
 		return compareFloats(lhsValue, rhsValue, e.Operator)
 	case query_parser.TypInt:
@@ -102,22 +100,6 @@
 		}
 		return lhsValue, rhsValue, nil
 	}
-	// If either operand is Complex, promote numerics to Complex.
-	// Comparing complex to string is handled above.
-	if lhsValue.Type == query_parser.TypComplex || rhsValue.Type == query_parser.TypComplex {
-		// If both complex, just return them.
-		if lhsValue.Type == query_parser.TypComplex && rhsValue.Type == query_parser.TypComplex {
-			return lhsValue, rhsValue, nil
-		}
-		var err error
-		if lhsValue, err = conversions.ConvertValueToComplex(lhsValue); err != nil {
-			return nil, nil, err
-		}
-		if rhsValue, err = conversions.ConvertValueToComplex(rhsValue); err != nil {
-			return nil, nil, err
-		}
-		return lhsValue, rhsValue, nil
-	}
 	// If either operand is a big rat, convert both to a big rat.
 	// Also, if one operand is a float and the other is a big int,
 	// convert both to big rats.
@@ -231,18 +213,6 @@
 	}
 }
 
-func compareComplex(lhsValue, rhsValue *query_parser.Operand, oper *query_parser.BinaryOperator) bool {
-	switch oper.Type {
-	case query_parser.Equal:
-		return lhsValue.Complex == rhsValue.Complex
-	case query_parser.NotEqual:
-		return lhsValue.Complex != rhsValue.Complex
-	default:
-		// Complex values are not ordered.  All other operands return false.
-		return false
-	}
-}
-
 func compareFloats(lhsValue, rhsValue *query_parser.Operand, oper *query_parser.BinaryOperator) bool {
 	switch oper.Type {
 	case query_parser.Equal:
@@ -485,8 +455,6 @@
 		return o.BigRat
 	case query_parser.TypBool:
 		return o.Bool
-	case query_parser.TypComplex:
-		return o.Complex
 	case query_parser.TypFloat:
 		return o.Float
 	case query_parser.TypInt:
diff --git a/query/engine/internal/query.go b/query/engine/internal/query.go
index bc217f3..ff109ff 100644
--- a/query/engine/internal/query.go
+++ b/query/engine/internal/query.go
@@ -5,7 +5,6 @@
 package internal
 
 import (
-	"fmt"
 	"reflect"
 	"strconv"
 	"sync"
@@ -203,8 +202,6 @@
 		val += segKey.BigInt.String()
 	case query_parser.TypBigRat:
 		val += segKey.BigRat.String()
-	case query_parser.TypComplex:
-		val += fmt.Sprintf("%g", segKey.Complex)
 	case query_parser.TypField:
 		sep := ""
 		for _, segment := range segKey.Column.Segments {
diff --git a/query/engine/internal/query_checker/query_checker.go b/query/engine/internal/query_checker/query_checker.go
index b964e71..a4bf7b1 100644
--- a/query/engine/internal/query_checker/query_checker.go
+++ b/query/engine/internal/query_checker/query_checker.go
@@ -410,7 +410,6 @@
 	return o.Type == query_parser.TypBigInt ||
 		o.Type == query_parser.TypBigRat || // currently, no way to specify as literal
 		o.Type == query_parser.TypBool ||
-		o.Type == query_parser.TypComplex || // currently, no way to specify as literal ||
 		o.Type == query_parser.TypFloat ||
 		o.Type == query_parser.TypInt ||
 		o.Type == query_parser.TypStr ||
diff --git a/query/engine/internal/query_functions/date_funcs.go b/query/engine/internal/query_functions/date_funcs.go
index e394d40..98c38e2 100644
--- a/query/engine/internal/query_functions/date_funcs.go
+++ b/query/engine/internal/query_functions/date_funcs.go
@@ -21,7 +21,7 @@
 	var locStr *query_parser.Operand
 	var err error
 	switch arg.Type {
-	case query_parser.TypBigInt, query_parser.TypBigRat, query_parser.TypBool, query_parser.TypComplex, query_parser.TypFloat, query_parser.TypInt, query_parser.TypStr, query_parser.TypTime, query_parser.TypUint:
+	case query_parser.TypBigInt, query_parser.TypBigRat, query_parser.TypBool, query_parser.TypFloat, query_parser.TypInt, query_parser.TypStr, query_parser.TypTime, query_parser.TypUint:
 		if locStr, err = conversions.ConvertValueToString(arg); err != nil {
 			if err != nil {
 				return syncql.NewErrLocationConversionError(db.GetContext(), arg.Off, err)
diff --git a/query/engine/internal/query_functions/math_funcs.go b/query/engine/internal/query_functions/math_funcs.go
index 9236542..5ec84d8 100644
--- a/query/engine/internal/query_functions/math_funcs.go
+++ b/query/engine/internal/query_functions/math_funcs.go
@@ -149,26 +149,3 @@
 
 	return makeFloatOp(off, math.Remainder(x.Float, y.Float)), nil
 }
-
-func complexFunc(db ds.Database, off int64, args []*query_parser.Operand) (*query_parser.Operand, error) {
-	r, err := conversions.ConvertValueToFloat(args[0])
-	if err != nil {
-		return nil, err
-	}
-
-	i, err := conversions.ConvertValueToFloat(args[1])
-	if err != nil {
-		return nil, err
-	}
-
-	return makeComplexOp(off, complex(r.Float, i.Float)), nil
-}
-
-func realFunc(db ds.Database, off int64, args []*query_parser.Operand) (*query_parser.Operand, error) {
-	c, err := conversions.ConvertValueToComplex(args[0])
-	if err != nil {
-		return nil, err
-	}
-
-	return makeFloatOp(off, real(c.Complex)), nil
-}
diff --git a/query/engine/internal/query_functions/query_functions.go b/query/engine/internal/query_functions/query_functions.go
index dc998c2..0b65b44 100644
--- a/query/engine/internal/query_functions/query_functions.go
+++ b/query/engine/internal/query_functions/query_functions.go
@@ -68,7 +68,6 @@
 
 	// Math functions
 	functions["Ceiling"] = function{[]query_parser.OperandType{query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypFloat, ceilingFunc, nil}
-	functions["Complex"] = function{[]query_parser.OperandType{query_parser.TypFloat, query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypComplex, complexFunc, nil}
 	functions["Floor"] = function{[]query_parser.OperandType{query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypFloat, floorFunc, nil}
 	functions["Inf"] = function{[]query_parser.OperandType{query_parser.TypInt}, false, query_parser.TypNil, query_parser.TypFloat, infFunc, nil}
 	functions["IsInf"] = function{[]query_parser.OperandType{query_parser.TypFloat, query_parser.TypInt}, false, query_parser.TypNil, query_parser.TypBool, isInfFunc, nil}
@@ -79,7 +78,6 @@
 	functions["Pow"] = function{[]query_parser.OperandType{query_parser.TypFloat, query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypFloat, powFunc, nil}
 	functions["Pow10"] = function{[]query_parser.OperandType{query_parser.TypInt}, false, query_parser.TypNil, query_parser.TypFloat, pow10Func, nil}
 	functions["Mod"] = function{[]query_parser.OperandType{query_parser.TypFloat, query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypFloat, modFunc, nil}
-	functions["Real"] = function{[]query_parser.OperandType{query_parser.TypComplex}, false, query_parser.TypNil, query_parser.TypFloat, realFunc, nil}
 	functions["Truncate"] = function{[]query_parser.OperandType{query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypFloat, truncateFunc, nil}
 	functions["Remainder"] = function{[]query_parser.OperandType{query_parser.TypFloat, query_parser.TypFloat}, false, query_parser.TypNil, query_parser.TypFloat, remainderFunc, nil}
 
@@ -121,7 +119,7 @@
 		okToExecuteNow := true
 		for _, arg := range f.Args {
 			switch arg.Type {
-			case query_parser.TypBigInt, query_parser.TypBigRat, query_parser.TypBool, query_parser.TypComplex, query_parser.TypFloat, query_parser.TypInt, query_parser.TypStr, query_parser.TypTime, query_parser.TypUint:
+			case query_parser.TypBigInt, query_parser.TypBigRat, query_parser.TypBool, query_parser.TypFloat, query_parser.TypInt, query_parser.TypStr, query_parser.TypTime, query_parser.TypUint:
 				// do nothing
 			case query_parser.TypFunction:
 				if !arg.Function.Computed {
@@ -198,8 +196,6 @@
 	switch o.Type {
 	case query_parser.TypBool:
 		return vom.RawBytesOf(o.Bool)
-	case query_parser.TypComplex:
-		return vom.RawBytesOf(o.Complex)
 	case query_parser.TypFloat:
 		return vom.RawBytesOf(o.Float)
 	case query_parser.TypInt:
@@ -236,14 +232,6 @@
 	return &o
 }
 
-func makeComplexOp(off int64, c complex128) *query_parser.Operand {
-	var o query_parser.Operand
-	o.Off = off
-	o.Type = query_parser.TypComplex
-	o.Complex = c
-	return &o
-}
-
 func makeIntOp(off int64, i int64) *query_parser.Operand {
 	var o query_parser.Operand
 	o.Off = off
@@ -264,7 +252,7 @@
 	// We can't check unless the arg is a literal or an already computed function,
 	var operandToConvert *query_parser.Operand
 	switch arg.Type {
-	case query_parser.TypBigInt, query_parser.TypBigRat, query_parser.TypBool, query_parser.TypComplex, query_parser.TypFloat, query_parser.TypInt, query_parser.TypStr, query_parser.TypTime, query_parser.TypUint:
+	case query_parser.TypBigInt, query_parser.TypBigRat, query_parser.TypBool, query_parser.TypFloat, query_parser.TypInt, query_parser.TypStr, query_parser.TypTime, query_parser.TypUint:
 		operandToConvert = arg
 	case query_parser.TypFunction:
 		if arg.Function.Computed {
@@ -293,11 +281,6 @@
 		if err != nil {
 			err = syncql.NewErrBoolConversionError(db.GetContext(), arg.Off, err)
 		}
-	case query_parser.TypComplex:
-		_, err = conversions.ConvertValueToComplex(operandToConvert)
-		if err != nil {
-			err = syncql.NewErrComplexConversionError(db.GetContext(), arg.Off, err)
-		}
 	case query_parser.TypFloat:
 		_, err = conversions.ConvertValueToFloat(operandToConvert)
 		if err != nil {
diff --git a/query/engine/internal/query_functions/str_funcs.go b/query/engine/internal/query_functions/str_funcs.go
index f4e2386..c940145 100644
--- a/query/engine/internal/query_functions/str_funcs.go
+++ b/query/engine/internal/query_functions/str_funcs.go
@@ -35,8 +35,6 @@
 			c.Str = o.BigRat.String()
 		case query_parser.TypBool:
 			c.Str = strconv.FormatBool(o.Bool)
-		case query_parser.TypComplex:
-			c.Str = fmt.Sprintf("%g", o.Complex)
 		case query_parser.TypFloat:
 			c.Str = strconv.FormatFloat(o.Float, 'f', -1, 64)
 		case query_parser.TypInt:
@@ -174,8 +172,6 @@
 			sprintfArgs = append(sprintfArgs, arg.BigRat)
 		case query_parser.TypBool:
 			sprintfArgs = append(sprintfArgs, arg.Bool)
-		case query_parser.TypComplex:
-			sprintfArgs = append(sprintfArgs, arg.Complex)
 		case query_parser.TypFloat:
 			sprintfArgs = append(sprintfArgs, arg.Float)
 		case query_parser.TypInt:
diff --git a/query/engine/internal/query_parser/query_parser.go b/query/engine/internal/query_parser/query_parser.go
index e26c745..2b242b5 100644
--- a/query/engine/internal/query_parser/query_parser.go
+++ b/query/engine/internal/query_parser/query_parser.go
@@ -101,7 +101,6 @@
 	TypBigInt OperandType = 1 + iota // Only as a result of Resolve/Coerce Operand
 	TypBigRat                        // Only as a result of Resolve/Coerce Operand
 	TypBool
-	TypComplex
 	TypExpr
 	TypField
 	TypFloat
@@ -120,7 +119,6 @@
 	BigInt    *big.Int
 	BigRat    *big.Rat
 	Bool      bool
-	Complex   complex128
 	Column    *Field
 	Float     float64
 	Function  *Function
@@ -1243,9 +1241,6 @@
 	case TypBigRat:
 		val += "(BigRat)"
 		val += o.BigRat.String()
-	case TypComplex:
-		val += "(Complex)"
-		val += fmt.Sprintf("%g", o.Complex)
 	case TypField:
 		val += "(field)"
 		val += o.Column.String()
@@ -1443,9 +1438,6 @@
 	case vdl.String:
 		op.Type = TypStr
 		op.Str = value.RawString()
-	case vdl.Complex64, vdl.Complex128:
-		op.Type = TypComplex
-		op.Complex = value.Complex()
 	default: // OpObject for structs, arrays, maps, ...
 		if value.Kind() == vdl.Struct && value.Type().Name() == "time.Time" {
 			op.Type = TypTime
diff --git a/query/engine/internal/query_test.go b/query/engine/internal/query_test.go
index 3382b7f..f5b032d 100644
--- a/query/engine/internal/query_test.go
+++ b/query/engine/internal/query_test.go
@@ -258,15 +258,15 @@
 	numTable.rows = []kv{
 		kv{
 			"001",
-			vom.RawBytesOf(td.Numbers{byte(12), uint16(1234), uint32(5678), uint64(999888777666), int16(9876), int32(876543), int64(128), float32(3.14159), float64(2.71828182846), complex64(123.0 + 7.0i), complex128(456.789 + 10.1112i)}),
+			vom.RawBytesOf(td.Numbers{byte(12), uint16(1234), uint32(5678), uint64(999888777666), int16(9876), int32(876543), int64(128), float32(3.14159), float64(2.71828182846)}),
 		},
 		kv{
 			"002",
-			vom.RawBytesOf(td.Numbers{byte(9), uint16(99), uint32(999), uint64(9999999), int16(9), int32(99), int64(88), float32(1.41421356237), float64(1.73205080757), complex64(9.87 + 7.65i), complex128(4.32 + 1.0i)}),
+			vom.RawBytesOf(td.Numbers{byte(9), uint16(99), uint32(999), uint64(9999999), int16(9), int32(99), int64(88), float32(1.41421356237), float64(1.73205080757)}),
 		},
 		kv{
 			"003",
-			vom.RawBytesOf(td.Numbers{byte(210), uint16(210), uint32(210), uint64(210), int16(210), int32(210), int64(210), float32(210.0), float64(210.0), complex64(210.0 + 0.0i), complex128(210.0 + 0.0i)}),
+			vom.RawBytesOf(td.Numbers{byte(210), uint16(210), uint32(210), uint64(210), int16(210), int32(210), int64(210), float32(210.0), float64(210.0)}),
 		},
 	}
 	db.tables = append(db.tables, &numTable)
@@ -382,10 +382,7 @@
 				map[int32]string{33: "it was the season of Light,"},
 				map[int64]string{65: "it was the season of Darkness,"},
 				map[float32]string{32.1: "it was the spring of hope,"},
-				map[float64]string{64.2: "it was the winter of despair,"},
-				map[complex64]string{(456.789 + 10.1112i): "we had everything before us,"},
-				map[complex128]string{(123.456 + 11.2223i): "we had nothing before us,"},
-				map[string]string{"Dickens": "we are all going direct to Heaven,"},
+				map[float64]string{64.2: "it was the winter of despair,"}, map[string]string{"Dickens": "we are all going direct to Heaven,"},
 				map[string]map[string]string{
 					"Charles": map[string]string{"Dickens": "we are all going direct to Heaven,"},
 				},
@@ -410,8 +407,6 @@
 				map[int64]struct{}{65: {}},
 				map[float32]struct{}{32.1: {}},
 				map[float64]struct{}{64.2: {}},
-				map[complex64]struct{}{(456.789 + 10.1112i): {}},
-				map[complex128]struct{}{(123.456 + 11.2223i): {}},
 				map[string]struct{}{"Dickens": {}},
 				map[time.Time]struct{}{t2015_07_01_01_23_45: {}},
 			}),
@@ -1667,8 +1662,8 @@
 		},
 		// Test lots of types as map keys
 		{
-			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.C64[Complex(456.789, 10.1112)], v.C128[Complex(123.456, 11.2223)], v.S[\"Dickens\"], v.Ms[\"Charles\"][\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManyMaps",
-			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.C64[Complex]", "v.C128[Complex]", "v.S[Dickens]", "v.Ms[Charles][Dickens]", "v.T[Time]"},
+			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.S[\"Dickens\"], v.Ms[\"Charles\"][\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManyMaps",
+			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.S[Dickens]", "v.Ms[Charles][Dickens]", "v.T[Time]"},
 			[][]*vom.RawBytes{
 				[]*vom.RawBytes{
 					vom.RawBytesOf("It was the best of times,"),
@@ -1681,8 +1676,6 @@
 					vom.RawBytesOf("it was the season of Darkness,"),
 					vom.RawBytesOf("it was the spring of hope,"),
 					vom.RawBytesOf("it was the winter of despair,"),
-					vom.RawBytesOf("we had everything before us,"),
-					vom.RawBytesOf("we had nothing before us,"),
 					vom.RawBytesOf("we are all going direct to Heaven,"),
 					vom.RawBytesOf("we are all going direct to Heaven,"),
 					vom.RawBytesOf("we are all going direct the other way"),
@@ -1691,8 +1684,8 @@
 		},
 		// Test lots of types as set keys
 		{
-			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.C64[Complex(456.789, 10.1112)], v.C128[Complex(123.456, 11.2223)], v.S[\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManySets",
-			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.C64[Complex]", "v.C128[Complex]", "v.S[Dickens]", "v.T[Time]"},
+			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.S[\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManySets",
+			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.S[Dickens]", "v.T[Time]"},
 			[][]*vom.RawBytes{
 				[]*vom.RawBytes{
 					vom.RawBytesOf(true),
@@ -1707,8 +1700,6 @@
 					vom.RawBytesOf(true),
 					vom.RawBytesOf(true),
 					vom.RawBytesOf(true),
-					vom.RawBytesOf(true),
-					vom.RawBytesOf(true),
 				},
 			},
 		},
@@ -2084,22 +2075,6 @@
 			},
 		},
 		{
-			// Real
-			"select k, Real(v.C64) from Numbers where v.C64 = Complex(123, 7)",
-			[]string{"k", "Real"},
-			[][]*vom.RawBytes{
-				{vom.RawBytesOf("001"), vom.RawBytesOf(float64(123.0))},
-			},
-		},
-		{
-			// Real
-			"select k, Real(v.C128) from Numbers where v.C128 = Complex(456.789, 10.1112)",
-			[]string{"k", "Real"},
-			[][]*vom.RawBytes{
-				{vom.RawBytesOf("001"), vom.RawBytesOf(float64(456.789))},
-			},
-		},
-		{
 			// Ceiling
 			"select k, Ceiling(v.F64) from Numbers where k = \"001\"",
 			[]string{"k", "Ceiling"},
@@ -2189,10 +2164,10 @@
 		},
 		{
 			// Sprintf
-			"select Sprintf(\"%d, %d, %d, %d, %d, %d, %d, %g, %g, %g, %g\", v.B, v.Ui16, v.Ui32, v.Ui64, v.I16, v.I32, v.I64, v.F32, v.F64, v.C64, v.C128) from Numbers where k = \"001\"",
+			"select Sprintf(\"%d, %d, %d, %d, %d, %d, %d, %g, %g\", v.B, v.Ui16, v.Ui32, v.Ui64, v.I16, v.I32, v.I64, v.F32, v.F64) from Numbers where k = \"001\"",
 			[]string{"Sprintf"},
 			[][]*vom.RawBytes{
-				{vom.RawBytesOf("12, 1234, 5678, 999888777666, 9876, 876543, 128, 3.141590118408203, 2.71828182846, (123+7i), (456.789+10.1112i)")},
+				{vom.RawBytesOf("12, 1234, 5678, 999888777666, 9876, 876543, 128, 3.141590118408203, 2.71828182846")},
 			},
 		},
 		{
@@ -2304,7 +2279,7 @@
 				rbs = append(rbs, rs.Result())
 			}
 			if got, want := vdl.ValueOf(rbs), vdl.ValueOf(test.r); !vdl.EqualValue(got, want) {
-				t.Errorf("query: %s; got %#v, want %#v", test.query, got, want)
+				t.Errorf("query: %s; got %v, want %v", test.query, got, want)
 			}
 			if !reflect.DeepEqual(test.headers, headers) {
 				t.Errorf("query: %s; got %#v, want %#v", test.query, headers, test.headers)
@@ -3012,22 +2987,6 @@
 			numTable.rows[0].key, numTable.rows[0].value, true,
 		},
 		{
-			"select k, v from Numbers where Str(v.C64) = \"(123+7i)\"",
-			numTable.rows[0].key, numTable.rows[0].value, true,
-		},
-		{
-			"select k, v from Numbers where v.C64 = Complex(123, 7)",
-			numTable.rows[0].key, numTable.rows[0].value, true,
-		},
-		{
-			"select k, v from Numbers where Str(v.C128) = \"(456.789+10.1112i)\"",
-			numTable.rows[0].key, numTable.rows[0].value, true,
-		},
-		{
-			"select k, v from Numbers where v.C128 = Complex(456.789, 10.1112)",
-			numTable.rows[0].key, numTable.rows[0].value, true,
-		},
-		{
 			"select k, v from Numbers where v.Ui16 = 1234",
 			numTable.rows[0].key, numTable.rows[0].value, true,
 		},
@@ -3070,54 +3029,34 @@
 		},
 		{
 			// Test that numeric types can compare to a float64
-			"select v from Numbers where v.F64 = v.B and v.F64 = v.Ui16 and v.F64 = v.Ui32 and v.F64 = v.Ui64 and v.F64 = v.I16 and v.F64 = v.I32 and v.F64 = v.I64 and v.F64 = v.F32 and v.F64 = v.C64 and v.F64 = v.C128",
+			"select v from Numbers where v.F64 = v.B and v.F64 = v.Ui16 and v.F64 = v.Ui32 and v.F64 = v.Ui64 and v.F64 = v.I16 and v.F64 = v.I32 and v.F64 = v.I64 and v.F64 = v.F32",
 			numTable.rows[2].key, numTable.rows[2].value, true,
 		},
 		{
 			// Test that all numeric types can compare to an int32
-			"select v from Numbers where v.I32 = v.B and v.I32 = v.Ui16 and v.I32 = v.Ui32 and v.I32 = v.Ui64 and v.I32 = v.I16 and v.I32 = v.F64 and v.I32 = v.I64 and v.I32 = v.F32 and v.I32 = v.C64 and v.I32 = v.C128",
+			"select v from Numbers where v.I32 = v.B and v.I32 = v.Ui16 and v.I32 = v.Ui32 and v.I32 = v.Ui64 and v.I32 = v.I16 and v.I32 = v.F64 and v.I32 = v.I64 and v.I32 = v.F32",
 			numTable.rows[2].key, numTable.rows[2].value, true,
 		},
 		{
 			// Test that all numeric types can compare to an int16
-			"select v from Numbers where v.I16 = v.B and v.I16 = v.Ui16 and v.I16 = v.Ui32 and v.I16 = v.Ui64 and v.I16 = v.F64 and v.I16 = v.I32 and v.I16 = v.I64 and v.I16 = v.F32 and v.I16 = v.C64 and v.I16 = v.C128",
+			"select v from Numbers where v.I16 = v.B and v.I16 = v.Ui16 and v.I16 = v.Ui32 and v.I16 = v.Ui64 and v.I16 = v.F64 and v.I16 = v.I32 and v.I16 = v.I64 and v.I16 = v.F32",
 			numTable.rows[2].key, numTable.rows[2].value, true,
 		},
 		{
 			// Test that all numeric types can compare to an uint64
-			"select v from Numbers where v.Ui64 = v.B and v.Ui64 = v.Ui16 and v.Ui64 = v.Ui32 and v.Ui64 = v.F64 and v.Ui64 = v.I16 and v.Ui64 = v.I32 and v.Ui64 = v.I64 and v.Ui64 = v.F32 and v.Ui64 = v.C64 and v.Ui64 = v.C128",
+			"select v from Numbers where v.Ui64 = v.B and v.Ui64 = v.Ui16 and v.Ui64 = v.Ui32 and v.Ui64 = v.F64 and v.Ui64 = v.I16 and v.Ui64 = v.I32 and v.Ui64 = v.I64 and v.Ui64 = v.F32",
 			numTable.rows[2].key, numTable.rows[2].value, true,
 		},
 		{
 			// Test that all numeric types can compare to an uint32
-			"select v from Numbers where v.Ui32 = v.B and v.Ui32 = v.Ui16 and v.Ui32 = v.F64 and v.Ui32 = v.Ui64 and v.Ui32 = v.I16 and v.Ui32 = v.I32 and v.Ui32 = v.I64 and v.Ui32 = v.F32 and v.Ui32 = v.C64 and v.Ui32 = v.C128",
+			"select v from Numbers where v.Ui32 = v.B and v.Ui32 = v.Ui16 and v.Ui32 = v.F64 and v.Ui32 = v.Ui64 and v.Ui32 = v.I16 and v.Ui32 = v.I32 and v.Ui32 = v.I64 and v.Ui32 = v.F32",
 			numTable.rows[2].key, numTable.rows[2].value, true,
 		},
 		{
 			// Test that all numeric types can compare to an uint16
-			"select v from Numbers where v.Ui16 = v.B and v.Ui16 = v.F64 and v.Ui16 = v.Ui32 and v.Ui16 = v.Ui64 and v.Ui16 = v.I16 and v.Ui16 = v.I32 and v.Ui16 = v.I64 and v.Ui16 = v.F32 and v.Ui16 = v.C64 and v.Ui16 = v.C128",
+			"select v from Numbers where v.Ui16 = v.B and v.Ui16 = v.F64 and v.Ui16 = v.Ui32 and v.Ui16 = v.Ui64 and v.Ui16 = v.I16 and v.Ui16 = v.I32 and v.Ui16 = v.I64 and v.Ui16 = v.F32",
 			numTable.rows[2].key, numTable.rows[2].value, true,
 		},
-		{
-			// Test C64 = C128
-			"select v from Numbers where v.C64 = v.C128",
-			numTable.rows[2].key, numTable.rows[2].value, true,
-		},
-		{
-			// Test C64 <> C128
-			"select v from Numbers where v.C64 <> v.C128",
-			numTable.rows[0].key, numTable.rows[0].value, true,
-		},
-		{
-			// Complex integers can only compare to themselves and other numerics.
-			// Compare to integer
-			"select v from Numbers where v.C128 <> false",
-			numTable.rows[0].key, numTable.rows[0].value, false,
-		},
-		{
-			"select v from Numbers where Str(v.C128) = \"(456.789+10.1112i)\"",
-			numTable.rows[0].key, numTable.rows[0].value, true,
-		},
 	}
 
 	for _, test := range basic {
@@ -3397,10 +3336,6 @@
 			syncql.NewErrDidYouMeanFunction(db.GetContext(), 7, "Split"),
 		},
 		{
-			"select comPLex(1.0, 2.0) from Customer",
-			syncql.NewErrDidYouMeanFunction(db.GetContext(), 7, "Complex"),
-		},
-		{
 			"select len(\"foo\") from Customer",
 			syncql.NewErrDidYouMeanFunction(db.GetContext(), 7, "Len"),
 		},
@@ -3409,18 +3344,6 @@
 			syncql.NewErrIntConversionError(db.GetContext(), 24, errors.New("Cannot convert operand to int64.")),
 		},
 		{
-			"select Complex(23, \"foo\") from Customer",
-			syncql.NewErrFloatConversionError(db.GetContext(), 19, errors.New("Cannot convert operand to float64.")),
-		},
-		{
-			"select Complex(\"foo\", 42) from Customer",
-			syncql.NewErrFloatConversionError(db.GetContext(), 15, errors.New("Cannot convert operand to float64.")),
-		},
-		{
-			"select Complex(42.0) from Customer",
-			syncql.NewErrFunctionArgCount(db.GetContext(), 7, "Complex", 2, 1),
-		},
-		{
 			"select StrCat(v.Address.City, 42) from Customer",
 			syncql.NewErrStringConversionError(db.GetContext(), 30, errors.New("Cannot convert operand to string.")),
 		},
diff --git a/query/engine/internal/testdata/db_objects.vdl b/query/engine/internal/testdata/db_objects.vdl
index 97196d2..6525de8 100644
--- a/query/engine/internal/testdata/db_objects.vdl
+++ b/query/engine/internal/testdata/db_objects.vdl
@@ -86,8 +86,6 @@
 	I64  int64
 	F32  float32
 	F64  float64
-	C64  complex64
-	C128 complex128
 }
 
 type FooType struct {
@@ -140,8 +138,6 @@
 	I64  map[int64]string
 	F32  map[float32]string
 	F64  map[float64]string
-	C64  map[complex64]string
-	C128 map[complex128]string
 	S    map[string]string
 	Ms   map[string]map[string]string
 	T    map[time.Time]string
@@ -158,8 +154,6 @@
 	I64  set[int64]
 	F32  set[float32]
 	F64  set[float64]
-	C64  set[complex64]
-	C128 set[complex128]
 	S    set[string]
 	T    set[time.Time]
 }
diff --git a/query/engine/internal/testdata/testdata.vdl.go b/query/engine/internal/testdata/testdata.vdl.go
index 5669e3b..d52fde0 100644
--- a/query/engine/internal/testdata/testdata.vdl.go
+++ b/query/engine/internal/testdata/testdata.vdl.go
@@ -1510,8 +1510,6 @@
 	I64  int64
 	F32  float32
 	F64  float64
-	C64  complex64
-	C128 complex128
 }
 
 func (Numbers) __VDLReflect(struct {
@@ -1633,30 +1631,6 @@
 			return err
 		}
 	}
-	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("C64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget21.FromComplex(complex128(m.C64), tt.NonOptional().Field(9).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
-			return err
-		}
-	}
-	keyTarget22, fieldTarget23, err := fieldsTarget1.StartField("C128")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget23.FromComplex(complex128(m.C128), tt.NonOptional().Field(10).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget22, fieldTarget23); err != nil {
-			return err
-		}
-	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -1678,8 +1652,6 @@
 	i64Target  vdl.Int64Target
 	f32Target  vdl.Float32Target
 	f64Target  vdl.Float64Target
-	c64Target  vdl.Complex64Target
-	c128Target vdl.Complex128Target
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -1729,14 +1701,6 @@
 		t.f64Target.Value = &t.Value.F64
 		target, err := &t.f64Target, error(nil)
 		return nil, target, err
-	case "C64":
-		t.c64Target.Value = &t.Value.C64
-		target, err := &t.c64Target, error(nil)
-		return nil, target, err
-	case "C128":
-		t.c128Target.Value = &t.Value.C128
-		target, err := &t.c128Target, error(nil)
-		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/query/engine/internal/testdata.Numbers", name)
 	}
@@ -2737,21 +2701,19 @@
 }
 
 type ManyMaps struct {
-	B    map[bool]string
-	By   map[byte]string
-	U16  map[uint16]string
-	U32  map[uint32]string
-	U64  map[uint64]string
-	I16  map[int16]string
-	I32  map[int32]string
-	I64  map[int64]string
-	F32  map[float32]string
-	F64  map[float64]string
-	C64  map[complex64]string
-	C128 map[complex128]string
-	S    map[string]string
-	Ms   map[string]map[string]string
-	T    map[time.Time]string
+	B   map[bool]string
+	By  map[byte]string
+	U16 map[uint16]string
+	U32 map[uint32]string
+	U64 map[uint64]string
+	I16 map[int16]string
+	I32 map[int32]string
+	I64 map[int64]string
+	F32 map[float32]string
+	F64 map[float64]string
+	S   map[string]string
+	Ms  map[string]map[string]string
+	T   map[time.Time]string
 }
 
 func (ManyMaps) __VDLReflect(struct {
@@ -3125,22 +3087,22 @@
 			return err
 		}
 	}
-	keyTarget72, fieldTarget73, err := fieldsTarget1.StartField("C64")
+	keyTarget72, fieldTarget73, err := fieldsTarget1.StartField("S")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget74, err := fieldTarget73.StartMap(tt.NonOptional().Field(10).Type, len(m.C64))
+		mapTarget74, err := fieldTarget73.StartMap(tt.NonOptional().Field(10).Type, len(m.S))
 		if err != nil {
 			return err
 		}
-		for key76, value78 := range m.C64 {
+		for key76, value78 := range m.S {
 			keyTarget75, err := mapTarget74.StartKey()
 			if err != nil {
 				return err
 			}
-			if err := keyTarget75.FromComplex(complex128(key76), tt.NonOptional().Field(10).Type.Key()); err != nil {
+			if err := keyTarget75.FromString(string(key76), tt.NonOptional().Field(10).Type.Key()); err != nil {
 				return err
 			}
 			valueTarget77, err := mapTarget74.FinishKeyStartField(keyTarget75)
@@ -3161,29 +3123,53 @@
 			return err
 		}
 	}
-	keyTarget79, fieldTarget80, err := fieldsTarget1.StartField("C128")
+	keyTarget79, fieldTarget80, err := fieldsTarget1.StartField("Ms")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget81, err := fieldTarget80.StartMap(tt.NonOptional().Field(11).Type, len(m.C128))
+		mapTarget81, err := fieldTarget80.StartMap(tt.NonOptional().Field(11).Type, len(m.Ms))
 		if err != nil {
 			return err
 		}
-		for key83, value85 := range m.C128 {
+		for key83, value85 := range m.Ms {
 			keyTarget82, err := mapTarget81.StartKey()
 			if err != nil {
 				return err
 			}
-			if err := keyTarget82.FromComplex(complex128(key83), tt.NonOptional().Field(11).Type.Key()); err != nil {
+			if err := keyTarget82.FromString(string(key83), tt.NonOptional().Field(11).Type.Key()); err != nil {
 				return err
 			}
 			valueTarget84, err := mapTarget81.FinishKeyStartField(keyTarget82)
 			if err != nil {
 				return err
 			}
-			if err := valueTarget84.FromString(string(value85), tt.NonOptional().Field(11).Type.Elem()); err != nil {
+
+			mapTarget86, err := valueTarget84.StartMap(tt.NonOptional().Field(11).Type.Elem(), len(value85))
+			if err != nil {
+				return err
+			}
+			for key88, value90 := range value85 {
+				keyTarget87, err := mapTarget86.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget87.FromString(string(key88), tt.NonOptional().Field(11).Type.Elem().Key()); err != nil {
+					return err
+				}
+				valueTarget89, err := mapTarget86.FinishKeyStartField(keyTarget87)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget89.FromString(string(value90), tt.NonOptional().Field(11).Type.Elem().Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget86.FinishField(keyTarget87, valueTarget89); err != nil {
+					return err
+				}
+			}
+			if err := valueTarget84.FinishMap(mapTarget86); err != nil {
 				return err
 			}
 			if err := mapTarget81.FinishField(keyTarget82, valueTarget84); err != nil {
@@ -3197,141 +3183,45 @@
 			return err
 		}
 	}
-	keyTarget86, fieldTarget87, err := fieldsTarget1.StartField("S")
+	keyTarget91, fieldTarget92, err := fieldsTarget1.StartField("T")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget88, err := fieldTarget87.StartMap(tt.NonOptional().Field(12).Type, len(m.S))
+		mapTarget93, err := fieldTarget92.StartMap(tt.NonOptional().Field(12).Type, len(m.T))
 		if err != nil {
 			return err
 		}
-		for key90, value92 := range m.S {
-			keyTarget89, err := mapTarget88.StartKey()
-			if err != nil {
-				return err
-			}
-			if err := keyTarget89.FromString(string(key90), tt.NonOptional().Field(12).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget91, err := mapTarget88.FinishKeyStartField(keyTarget89)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget91.FromString(string(value92), tt.NonOptional().Field(12).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget88.FinishField(keyTarget89, valueTarget91); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget87.FinishMap(mapTarget88); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget86, fieldTarget87); err != nil {
-			return err
-		}
-	}
-	keyTarget93, fieldTarget94, err := fieldsTarget1.StartField("Ms")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		mapTarget95, err := fieldTarget94.StartMap(tt.NonOptional().Field(13).Type, len(m.Ms))
-		if err != nil {
-			return err
-		}
-		for key97, value99 := range m.Ms {
-			keyTarget96, err := mapTarget95.StartKey()
-			if err != nil {
-				return err
-			}
-			if err := keyTarget96.FromString(string(key97), tt.NonOptional().Field(13).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget98, err := mapTarget95.FinishKeyStartField(keyTarget96)
+		for key95, value97 := range m.T {
+			keyTarget94, err := mapTarget93.StartKey()
 			if err != nil {
 				return err
 			}
 
-			mapTarget100, err := valueTarget98.StartMap(tt.NonOptional().Field(13).Type.Elem(), len(value99))
-			if err != nil {
-				return err
-			}
-			for key102, value104 := range value99 {
-				keyTarget101, err := mapTarget100.StartKey()
-				if err != nil {
-					return err
-				}
-				if err := keyTarget101.FromString(string(key102), tt.NonOptional().Field(13).Type.Elem().Key()); err != nil {
-					return err
-				}
-				valueTarget103, err := mapTarget100.FinishKeyStartField(keyTarget101)
-				if err != nil {
-					return err
-				}
-				if err := valueTarget103.FromString(string(value104), tt.NonOptional().Field(13).Type.Elem().Elem()); err != nil {
-					return err
-				}
-				if err := mapTarget100.FinishField(keyTarget101, valueTarget103); err != nil {
-					return err
-				}
-			}
-			if err := valueTarget98.FinishMap(mapTarget100); err != nil {
-				return err
-			}
-			if err := mapTarget95.FinishField(keyTarget96, valueTarget98); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget94.FinishMap(mapTarget95); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget93, fieldTarget94); err != nil {
-			return err
-		}
-	}
-	keyTarget105, fieldTarget106, err := fieldsTarget1.StartField("T")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		mapTarget107, err := fieldTarget106.StartMap(tt.NonOptional().Field(14).Type, len(m.T))
-		if err != nil {
-			return err
-		}
-		for key109, value111 := range m.T {
-			keyTarget108, err := mapTarget107.StartKey()
-			if err != nil {
+			var wireValue98 time_2.Time
+			if err := time_2.TimeFromNative(&wireValue98, key95); err != nil {
 				return err
 			}
 
-			var wireValue112 time_2.Time
-			if err := time_2.TimeFromNative(&wireValue112, key109); err != nil {
+			if err := wireValue98.FillVDLTarget(keyTarget94, tt.NonOptional().Field(12).Type.Key()); err != nil {
 				return err
 			}
-
-			if err := wireValue112.FillVDLTarget(keyTarget108, tt.NonOptional().Field(14).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget110, err := mapTarget107.FinishKeyStartField(keyTarget108)
+			valueTarget96, err := mapTarget93.FinishKeyStartField(keyTarget94)
 			if err != nil {
 				return err
 			}
-			if err := valueTarget110.FromString(string(value111), tt.NonOptional().Field(14).Type.Elem()); err != nil {
+			if err := valueTarget96.FromString(string(value97), tt.NonOptional().Field(12).Type.Elem()); err != nil {
 				return err
 			}
-			if err := mapTarget107.FinishField(keyTarget108, valueTarget110); err != nil {
+			if err := mapTarget93.FinishField(keyTarget94, valueTarget96); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget106.FinishMap(mapTarget107); err != nil {
+		if err := fieldTarget92.FinishMap(mapTarget93); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget105, fieldTarget106); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget91, fieldTarget92); err != nil {
 			return err
 		}
 	}
@@ -3346,22 +3236,20 @@
 }
 
 type ManyMapsTarget struct {
-	Value      *ManyMaps
-	bTarget    __VDLTarget8_map
-	byTarget   __VDLTarget9_map
-	u16Target  __VDLTarget10_map
-	u32Target  __VDLTarget11_map
-	u64Target  __VDLTarget12_map
-	i16Target  __VDLTarget13_map
-	i32Target  __VDLTarget14_map
-	i64Target  __VDLTarget15_map
-	f32Target  __VDLTarget16_map
-	f64Target  __VDLTarget17_map
-	c64Target  __VDLTarget18_map
-	c128Target __VDLTarget19_map
-	sTarget    __VDLTarget20_map
-	msTarget   __VDLTarget21_map
-	tTarget    __VDLTarget22_map
+	Value     *ManyMaps
+	bTarget   __VDLTarget8_map
+	byTarget  __VDLTarget9_map
+	u16Target __VDLTarget10_map
+	u32Target __VDLTarget11_map
+	u64Target __VDLTarget12_map
+	i16Target __VDLTarget13_map
+	i32Target __VDLTarget14_map
+	i64Target __VDLTarget15_map
+	f32Target __VDLTarget16_map
+	f64Target __VDLTarget17_map
+	sTarget   __VDLTarget18_map
+	msTarget  __VDLTarget19_map
+	tTarget   __VDLTarget20_map
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -3415,14 +3303,6 @@
 		t.f64Target.Value = &t.Value.F64
 		target, err := &t.f64Target, error(nil)
 		return nil, target, err
-	case "C64":
-		t.c64Target.Value = &t.Value.C64
-		target, err := &t.c64Target, error(nil)
-		return nil, target, err
-	case "C128":
-		t.c128Target.Value = &t.Value.C128
-		target, err := &t.c128Target, error(nil)
-		return nil, target, err
 	case "S":
 		t.sTarget.Value = &t.Value.S
 		target, err := &t.sTarget, error(nil)
@@ -3877,12 +3757,12 @@
 	return nil
 }
 
-// map[complex64]string
+// map[string]string
 type __VDLTarget18_map struct {
-	Value      *map[complex64]string
-	currKey    complex64
+	Value      *map[string]string
+	currKey    string
 	currElem   string
-	keyTarget  vdl.Complex64Target
+	keyTarget  vdl.StringTarget
 	elemTarget vdl.StringTarget
 	vdl.TargetBase
 	vdl.MapTargetBase
@@ -3890,14 +3770,14 @@
 
 func (t *__VDLTarget18_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[complex64]string)(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[string]string)(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[complex64]string)
+	*t.Value = make(map[string]string)
 	return t, nil
 }
 func (t *__VDLTarget18_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = complex64(0)
+	t.currKey = ""
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -3920,33 +3800,33 @@
 	return nil
 }
 
-// map[complex128]string
+// map[string]map[string]string
 type __VDLTarget19_map struct {
-	Value      *map[complex128]string
-	currKey    complex128
-	currElem   string
-	keyTarget  vdl.Complex128Target
-	elemTarget vdl.StringTarget
+	Value      *map[string]map[string]string
+	currKey    string
+	currElem   map[string]string
+	keyTarget  vdl.StringTarget
+	elemTarget __VDLTarget18_map
 	vdl.TargetBase
 	vdl.MapTargetBase
 }
 
 func (t *__VDLTarget19_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[complex128]string)(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[string]map[string]string)(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[complex128]string)
+	*t.Value = make(map[string]map[string]string)
 	return t, nil
 }
 func (t *__VDLTarget19_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = complex128(0)
+	t.currKey = ""
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
 }
 func (t *__VDLTarget19_map) FinishKeyStartField(key vdl.Target) (field vdl.Target, _ error) {
-	t.currElem = ""
+	t.currElem = map[string]string(nil)
 	t.elemTarget.Value = &t.currElem
 	target, err := &t.elemTarget, error(nil)
 	return target, err
@@ -3963,12 +3843,12 @@
 	return nil
 }
 
-// map[string]string
+// map[time.Time]string
 type __VDLTarget20_map struct {
-	Value      *map[string]string
-	currKey    string
+	Value      *map[time.Time]string
+	currKey    time.Time
 	currElem   string
-	keyTarget  vdl.StringTarget
+	keyTarget  time_2.TimeTarget
 	elemTarget vdl.StringTarget
 	vdl.TargetBase
 	vdl.MapTargetBase
@@ -3976,14 +3856,14 @@
 
 func (t *__VDLTarget20_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[string]string)(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[time.Time]string)(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[string]string)
+	*t.Value = make(map[time.Time]string)
 	return t, nil
 }
 func (t *__VDLTarget20_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = ""
+	t.currKey = reflect.Zero(reflect.TypeOf(t.currKey)).Interface().(time.Time)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4006,107 +3886,19 @@
 	return nil
 }
 
-// map[string]map[string]string
-type __VDLTarget21_map struct {
-	Value      *map[string]map[string]string
-	currKey    string
-	currElem   map[string]string
-	keyTarget  vdl.StringTarget
-	elemTarget __VDLTarget20_map
-	vdl.TargetBase
-	vdl.MapTargetBase
-}
-
-func (t *__VDLTarget21_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[string]map[string]string)(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[string]map[string]string)
-	return t, nil
-}
-func (t *__VDLTarget21_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = ""
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget21_map) FinishKeyStartField(key vdl.Target) (field vdl.Target, _ error) {
-	t.currElem = map[string]string(nil)
-	t.elemTarget.Value = &t.currElem
-	target, err := &t.elemTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget21_map) FinishField(key, field vdl.Target) error {
-	(*t.Value)[t.currKey] = t.currElem
-	return nil
-}
-func (t *__VDLTarget21_map) FinishMap(elem vdl.MapTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
-// map[time.Time]string
-type __VDLTarget22_map struct {
-	Value      *map[time.Time]string
-	currKey    time.Time
-	currElem   string
-	keyTarget  time_2.TimeTarget
-	elemTarget vdl.StringTarget
-	vdl.TargetBase
-	vdl.MapTargetBase
-}
-
-func (t *__VDLTarget22_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[time.Time]string)(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[time.Time]string)
-	return t, nil
-}
-func (t *__VDLTarget22_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = reflect.Zero(reflect.TypeOf(t.currKey)).Interface().(time.Time)
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget22_map) FinishKeyStartField(key vdl.Target) (field vdl.Target, _ error) {
-	t.currElem = ""
-	t.elemTarget.Value = &t.currElem
-	target, err := &t.elemTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget22_map) FinishField(key, field vdl.Target) error {
-	(*t.Value)[t.currKey] = t.currElem
-	return nil
-}
-func (t *__VDLTarget22_map) FinishMap(elem vdl.MapTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
 type ManySets struct {
-	B    map[bool]struct{}
-	By   map[byte]struct{}
-	U16  map[uint16]struct{}
-	U32  map[uint32]struct{}
-	U64  map[uint64]struct{}
-	I16  map[int16]struct{}
-	I32  map[int32]struct{}
-	I64  map[int64]struct{}
-	F32  map[float32]struct{}
-	F64  map[float64]struct{}
-	C64  map[complex64]struct{}
-	C128 map[complex128]struct{}
-	S    map[string]struct{}
-	T    map[time.Time]struct{}
+	B   map[bool]struct{}
+	By  map[byte]struct{}
+	U16 map[uint16]struct{}
+	U32 map[uint32]struct{}
+	U64 map[uint64]struct{}
+	I16 map[int16]struct{}
+	I32 map[int32]struct{}
+	I64 map[int64]struct{}
+	F32 map[float32]struct{}
+	F64 map[float64]struct{}
+	S   map[string]struct{}
+	T   map[time.Time]struct{}
 }
 
 func (ManySets) __VDLReflect(struct {
@@ -4410,22 +4202,22 @@
 			return err
 		}
 	}
-	keyTarget52, fieldTarget53, err := fieldsTarget1.StartField("C64")
+	keyTarget52, fieldTarget53, err := fieldsTarget1.StartField("S")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget54, err := fieldTarget53.StartSet(tt.NonOptional().Field(10).Type, len(m.C64))
+		setTarget54, err := fieldTarget53.StartSet(tt.NonOptional().Field(10).Type, len(m.S))
 		if err != nil {
 			return err
 		}
-		for key56 := range m.C64 {
+		for key56 := range m.S {
 			keyTarget55, err := setTarget54.StartKey()
 			if err != nil {
 				return err
 			}
-			if err := keyTarget55.FromComplex(complex128(key56), tt.NonOptional().Field(10).Type.Key()); err != nil {
+			if err := keyTarget55.FromString(string(key56), tt.NonOptional().Field(10).Type.Key()); err != nil {
 				return err
 			}
 			if err := setTarget54.FinishKey(keyTarget55); err != nil {
@@ -4439,22 +4231,28 @@
 			return err
 		}
 	}
-	keyTarget57, fieldTarget58, err := fieldsTarget1.StartField("C128")
+	keyTarget57, fieldTarget58, err := fieldsTarget1.StartField("T")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget59, err := fieldTarget58.StartSet(tt.NonOptional().Field(11).Type, len(m.C128))
+		setTarget59, err := fieldTarget58.StartSet(tt.NonOptional().Field(11).Type, len(m.T))
 		if err != nil {
 			return err
 		}
-		for key61 := range m.C128 {
+		for key61 := range m.T {
 			keyTarget60, err := setTarget59.StartKey()
 			if err != nil {
 				return err
 			}
-			if err := keyTarget60.FromComplex(complex128(key61), tt.NonOptional().Field(11).Type.Key()); err != nil {
+
+			var wireValue62 time_2.Time
+			if err := time_2.TimeFromNative(&wireValue62, key61); err != nil {
+				return err
+			}
+
+			if err := wireValue62.FillVDLTarget(keyTarget60, tt.NonOptional().Field(11).Type.Key()); err != nil {
 				return err
 			}
 			if err := setTarget59.FinishKey(keyTarget60); err != nil {
@@ -4468,70 +4266,6 @@
 			return err
 		}
 	}
-	keyTarget62, fieldTarget63, err := fieldsTarget1.StartField("S")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		setTarget64, err := fieldTarget63.StartSet(tt.NonOptional().Field(12).Type, len(m.S))
-		if err != nil {
-			return err
-		}
-		for key66 := range m.S {
-			keyTarget65, err := setTarget64.StartKey()
-			if err != nil {
-				return err
-			}
-			if err := keyTarget65.FromString(string(key66), tt.NonOptional().Field(12).Type.Key()); err != nil {
-				return err
-			}
-			if err := setTarget64.FinishKey(keyTarget65); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget63.FinishSet(setTarget64); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget62, fieldTarget63); err != nil {
-			return err
-		}
-	}
-	keyTarget67, fieldTarget68, err := fieldsTarget1.StartField("T")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		setTarget69, err := fieldTarget68.StartSet(tt.NonOptional().Field(13).Type, len(m.T))
-		if err != nil {
-			return err
-		}
-		for key71 := range m.T {
-			keyTarget70, err := setTarget69.StartKey()
-			if err != nil {
-				return err
-			}
-
-			var wireValue72 time_2.Time
-			if err := time_2.TimeFromNative(&wireValue72, key71); err != nil {
-				return err
-			}
-
-			if err := wireValue72.FillVDLTarget(keyTarget70, tt.NonOptional().Field(13).Type.Key()); err != nil {
-				return err
-			}
-			if err := setTarget69.FinishKey(keyTarget70); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget68.FinishSet(setTarget69); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget67, fieldTarget68); err != nil {
-			return err
-		}
-	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -4543,21 +4277,19 @@
 }
 
 type ManySetsTarget struct {
-	Value      *ManySets
-	bTarget    __VDLTarget23_set
-	byTarget   __VDLTarget24_set
-	u16Target  __VDLTarget25_set
-	u32Target  __VDLTarget26_set
-	u64Target  __VDLTarget27_set
-	i16Target  __VDLTarget28_set
-	i32Target  __VDLTarget29_set
-	i64Target  __VDLTarget30_set
-	f32Target  __VDLTarget31_set
-	f64Target  __VDLTarget32_set
-	c64Target  __VDLTarget33_set
-	c128Target __VDLTarget34_set
-	sTarget    __VDLTarget7_set
-	tTarget    __VDLTarget35_set
+	Value     *ManySets
+	bTarget   __VDLTarget21_set
+	byTarget  __VDLTarget22_set
+	u16Target __VDLTarget23_set
+	u32Target __VDLTarget24_set
+	u64Target __VDLTarget25_set
+	i16Target __VDLTarget26_set
+	i32Target __VDLTarget27_set
+	i64Target __VDLTarget28_set
+	f32Target __VDLTarget29_set
+	f64Target __VDLTarget30_set
+	sTarget   __VDLTarget7_set
+	tTarget   __VDLTarget31_set
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -4611,14 +4343,6 @@
 		t.f64Target.Value = &t.Value.F64
 		target, err := &t.f64Target, error(nil)
 		return nil, target, err
-	case "C64":
-		t.c64Target.Value = &t.Value.C64
-		target, err := &t.c64Target, error(nil)
-		return nil, target, err
-	case "C128":
-		t.c128Target.Value = &t.Value.C128
-		target, err := &t.c128Target, error(nil)
-		return nil, target, err
 	case "S":
 		t.sTarget.Value = &t.Value.S
 		target, err := &t.sTarget, error(nil)
@@ -4640,7 +4364,7 @@
 }
 
 // map[bool]struct{}
-type __VDLTarget23_set struct {
+type __VDLTarget21_set struct {
 	Value     *map[bool]struct{}
 	currKey   bool
 	keyTarget vdl.BoolTarget
@@ -4648,7 +4372,7 @@
 	vdl.SetTargetBase
 }
 
-func (t *__VDLTarget23_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
+func (t *__VDLTarget21_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
 	if ttWant := vdl.TypeOf((*map[bool]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
@@ -4656,12 +4380,82 @@
 	*t.Value = make(map[bool]struct{})
 	return t, nil
 }
-func (t *__VDLTarget23_set) StartKey() (key vdl.Target, _ error) {
+func (t *__VDLTarget21_set) StartKey() (key vdl.Target, _ error) {
 	t.currKey = false
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
 }
+func (t *__VDLTarget21_set) FinishKey(key vdl.Target) error {
+	(*t.Value)[t.currKey] = struct{}{}
+	return nil
+}
+func (t *__VDLTarget21_set) FinishSet(list vdl.SetTarget) error {
+	if len(*t.Value) == 0 {
+		*t.Value = nil
+	}
+
+	return nil
+}
+
+// map[byte]struct{}
+type __VDLTarget22_set struct {
+	Value     *map[byte]struct{}
+	currKey   byte
+	keyTarget vdl.ByteTarget
+	vdl.TargetBase
+	vdl.SetTargetBase
+}
+
+func (t *__VDLTarget22_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
+
+	if ttWant := vdl.TypeOf((*map[byte]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	*t.Value = make(map[byte]struct{})
+	return t, nil
+}
+func (t *__VDLTarget22_set) StartKey() (key vdl.Target, _ error) {
+	t.currKey = byte(0)
+	t.keyTarget.Value = &t.currKey
+	target, err := &t.keyTarget, error(nil)
+	return target, err
+}
+func (t *__VDLTarget22_set) FinishKey(key vdl.Target) error {
+	(*t.Value)[t.currKey] = struct{}{}
+	return nil
+}
+func (t *__VDLTarget22_set) FinishSet(list vdl.SetTarget) error {
+	if len(*t.Value) == 0 {
+		*t.Value = nil
+	}
+
+	return nil
+}
+
+// map[uint16]struct{}
+type __VDLTarget23_set struct {
+	Value     *map[uint16]struct{}
+	currKey   uint16
+	keyTarget vdl.Uint16Target
+	vdl.TargetBase
+	vdl.SetTargetBase
+}
+
+func (t *__VDLTarget23_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
+
+	if ttWant := vdl.TypeOf((*map[uint16]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	*t.Value = make(map[uint16]struct{})
+	return t, nil
+}
+func (t *__VDLTarget23_set) StartKey() (key vdl.Target, _ error) {
+	t.currKey = uint16(0)
+	t.keyTarget.Value = &t.currKey
+	target, err := &t.keyTarget, error(nil)
+	return target, err
+}
 func (t *__VDLTarget23_set) FinishKey(key vdl.Target) error {
 	(*t.Value)[t.currKey] = struct{}{}
 	return nil
@@ -4674,25 +4468,25 @@
 	return nil
 }
 
-// map[byte]struct{}
+// map[uint32]struct{}
 type __VDLTarget24_set struct {
-	Value     *map[byte]struct{}
-	currKey   byte
-	keyTarget vdl.ByteTarget
+	Value     *map[uint32]struct{}
+	currKey   uint32
+	keyTarget vdl.Uint32Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget24_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[byte]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[uint32]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[byte]struct{})
+	*t.Value = make(map[uint32]struct{})
 	return t, nil
 }
 func (t *__VDLTarget24_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = byte(0)
+	t.currKey = uint32(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4709,25 +4503,25 @@
 	return nil
 }
 
-// map[uint16]struct{}
+// map[uint64]struct{}
 type __VDLTarget25_set struct {
-	Value     *map[uint16]struct{}
-	currKey   uint16
-	keyTarget vdl.Uint16Target
+	Value     *map[uint64]struct{}
+	currKey   uint64
+	keyTarget vdl.Uint64Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget25_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[uint16]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[uint64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[uint16]struct{})
+	*t.Value = make(map[uint64]struct{})
 	return t, nil
 }
 func (t *__VDLTarget25_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = uint16(0)
+	t.currKey = uint64(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4744,25 +4538,25 @@
 	return nil
 }
 
-// map[uint32]struct{}
+// map[int16]struct{}
 type __VDLTarget26_set struct {
-	Value     *map[uint32]struct{}
-	currKey   uint32
-	keyTarget vdl.Uint32Target
+	Value     *map[int16]struct{}
+	currKey   int16
+	keyTarget vdl.Int16Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget26_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[uint32]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[int16]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[uint32]struct{})
+	*t.Value = make(map[int16]struct{})
 	return t, nil
 }
 func (t *__VDLTarget26_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = uint32(0)
+	t.currKey = int16(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4779,25 +4573,25 @@
 	return nil
 }
 
-// map[uint64]struct{}
+// map[int32]struct{}
 type __VDLTarget27_set struct {
-	Value     *map[uint64]struct{}
-	currKey   uint64
-	keyTarget vdl.Uint64Target
+	Value     *map[int32]struct{}
+	currKey   int32
+	keyTarget vdl.Int32Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget27_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[uint64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[int32]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[uint64]struct{})
+	*t.Value = make(map[int32]struct{})
 	return t, nil
 }
 func (t *__VDLTarget27_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = uint64(0)
+	t.currKey = int32(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4814,25 +4608,25 @@
 	return nil
 }
 
-// map[int16]struct{}
+// map[int64]struct{}
 type __VDLTarget28_set struct {
-	Value     *map[int16]struct{}
-	currKey   int16
-	keyTarget vdl.Int16Target
+	Value     *map[int64]struct{}
+	currKey   int64
+	keyTarget vdl.Int64Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget28_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[int16]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[int64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[int16]struct{})
+	*t.Value = make(map[int64]struct{})
 	return t, nil
 }
 func (t *__VDLTarget28_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = int16(0)
+	t.currKey = int64(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4849,25 +4643,25 @@
 	return nil
 }
 
-// map[int32]struct{}
+// map[float32]struct{}
 type __VDLTarget29_set struct {
-	Value     *map[int32]struct{}
-	currKey   int32
-	keyTarget vdl.Int32Target
+	Value     *map[float32]struct{}
+	currKey   float32
+	keyTarget vdl.Float32Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget29_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[int32]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[float32]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[int32]struct{})
+	*t.Value = make(map[float32]struct{})
 	return t, nil
 }
 func (t *__VDLTarget29_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = int32(0)
+	t.currKey = float32(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4884,25 +4678,25 @@
 	return nil
 }
 
-// map[int64]struct{}
+// map[float64]struct{}
 type __VDLTarget30_set struct {
-	Value     *map[int64]struct{}
-	currKey   int64
-	keyTarget vdl.Int64Target
+	Value     *map[float64]struct{}
+	currKey   float64
+	keyTarget vdl.Float64Target
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget30_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[int64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[float64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[int64]struct{})
+	*t.Value = make(map[float64]struct{})
 	return t, nil
 }
 func (t *__VDLTarget30_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = int64(0)
+	t.currKey = float64(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4919,25 +4713,25 @@
 	return nil
 }
 
-// map[float32]struct{}
+// map[time.Time]struct{}
 type __VDLTarget31_set struct {
-	Value     *map[float32]struct{}
-	currKey   float32
-	keyTarget vdl.Float32Target
+	Value     *map[time.Time]struct{}
+	currKey   time.Time
+	keyTarget time_2.TimeTarget
 	vdl.TargetBase
 	vdl.SetTargetBase
 }
 
 func (t *__VDLTarget31_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[float32]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[time.Time]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[float32]struct{})
+	*t.Value = make(map[time.Time]struct{})
 	return t, nil
 }
 func (t *__VDLTarget31_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = float32(0)
+	t.currKey = reflect.Zero(reflect.TypeOf(t.currKey)).Interface().(time.Time)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
@@ -4954,146 +4748,6 @@
 	return nil
 }
 
-// map[float64]struct{}
-type __VDLTarget32_set struct {
-	Value     *map[float64]struct{}
-	currKey   float64
-	keyTarget vdl.Float64Target
-	vdl.TargetBase
-	vdl.SetTargetBase
-}
-
-func (t *__VDLTarget32_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[float64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[float64]struct{})
-	return t, nil
-}
-func (t *__VDLTarget32_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = float64(0)
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget32_set) FinishKey(key vdl.Target) error {
-	(*t.Value)[t.currKey] = struct{}{}
-	return nil
-}
-func (t *__VDLTarget32_set) FinishSet(list vdl.SetTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
-// map[complex64]struct{}
-type __VDLTarget33_set struct {
-	Value     *map[complex64]struct{}
-	currKey   complex64
-	keyTarget vdl.Complex64Target
-	vdl.TargetBase
-	vdl.SetTargetBase
-}
-
-func (t *__VDLTarget33_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[complex64]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[complex64]struct{})
-	return t, nil
-}
-func (t *__VDLTarget33_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = complex64(0)
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget33_set) FinishKey(key vdl.Target) error {
-	(*t.Value)[t.currKey] = struct{}{}
-	return nil
-}
-func (t *__VDLTarget33_set) FinishSet(list vdl.SetTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
-// map[complex128]struct{}
-type __VDLTarget34_set struct {
-	Value     *map[complex128]struct{}
-	currKey   complex128
-	keyTarget vdl.Complex128Target
-	vdl.TargetBase
-	vdl.SetTargetBase
-}
-
-func (t *__VDLTarget34_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[complex128]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[complex128]struct{})
-	return t, nil
-}
-func (t *__VDLTarget34_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = complex128(0)
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget34_set) FinishKey(key vdl.Target) error {
-	(*t.Value)[t.currKey] = struct{}{}
-	return nil
-}
-func (t *__VDLTarget34_set) FinishSet(list vdl.SetTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
-// map[time.Time]struct{}
-type __VDLTarget35_set struct {
-	Value     *map[time.Time]struct{}
-	currKey   time.Time
-	keyTarget time_2.TimeTarget
-	vdl.TargetBase
-	vdl.SetTargetBase
-}
-
-func (t *__VDLTarget35_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[time.Time]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[time.Time]struct{})
-	return t, nil
-}
-func (t *__VDLTarget35_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = reflect.Zero(reflect.TypeOf(t.currKey)).Interface().(time.Time)
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget35_set) FinishKey(key vdl.Target) error {
-	(*t.Value)[t.currKey] = struct{}{}
-	return nil
-}
-func (t *__VDLTarget35_set) FinishSet(list vdl.SetTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
 type BigData struct {
 	Key string // A dup of the key stored in the value.
 }
diff --git a/query/engine/query_test.go b/query/engine/query_test.go
index c7ca9b3..e9519c3 100644
--- a/query/engine/query_test.go
+++ b/query/engine/query_test.go
@@ -309,15 +309,15 @@
 	numTable.rows = []kv{
 		kv{
 			"001",
-			vom.RawBytesOf(td.Numbers{byte(12), uint16(1234), uint32(5678), uint64(999888777666), int16(9876), int32(876543), int64(128), float32(3.14159), float64(2.71828182846), complex64(123.0 + 7.0i), complex128(456.789 + 10.1112i)}),
+			vom.RawBytesOf(td.Numbers{byte(12), uint16(1234), uint32(5678), uint64(999888777666), int16(9876), int32(876543), int64(128), float32(3.14159), float64(2.71828182846)}),
 		},
 		kv{
 			"002",
-			vom.RawBytesOf(td.Numbers{byte(9), uint16(99), uint32(999), uint64(9999999), int16(9), int32(99), int64(88), float32(1.41421356237), float64(1.73205080757), complex64(9.87 + 7.65i), complex128(4.32 + 1.0i)}),
+			vom.RawBytesOf(td.Numbers{byte(9), uint16(99), uint32(999), uint64(9999999), int16(9), int32(99), int64(88), float32(1.41421356237), float64(1.73205080757)}),
 		},
 		kv{
 			"003",
-			vom.RawBytesOf(td.Numbers{byte(210), uint16(210), uint32(210), uint64(210), int16(210), int32(210), int64(210), float32(210.0), float64(210.0), complex64(210.0 + 0.0i), complex128(210.0 + 0.0i)}),
+			vom.RawBytesOf(td.Numbers{byte(210), uint16(210), uint32(210), uint64(210), int16(210), int32(210), int64(210), float32(210.0), float64(210.0)}),
 		},
 	}
 	db.tables = append(db.tables, &numTable)
@@ -433,10 +433,7 @@
 				map[int32]string{33: "it was the season of Light,"},
 				map[int64]string{65: "it was the season of Darkness,"},
 				map[float32]string{32.1: "it was the spring of hope,"},
-				map[float64]string{64.2: "it was the winter of despair,"},
-				map[complex64]string{(456.789 + 10.1112i): "we had everything before us,"},
-				map[complex128]string{(123.456 + 11.2223i): "we had nothing before us,"},
-				map[string]string{"Dickens": "we are all going direct to Heaven,"},
+				map[float64]string{64.2: "it was the winter of despair,"}, map[string]string{"Dickens": "we are all going direct to Heaven,"},
 				map[string]map[string]string{
 					"Charles": map[string]string{"Dickens": "we are all going direct to Heaven,"},
 				},
@@ -461,8 +458,6 @@
 				map[int64]struct{}{65: {}},
 				map[float32]struct{}{32.1: {}},
 				map[float64]struct{}{64.2: {}},
-				map[complex64]struct{}{(456.789 + 10.1112i): {}},
-				map[complex128]struct{}{(123.456 + 11.2223i): {}},
 				map[string]struct{}{"Dickens": {}},
 				map[time.Time]struct{}{t2015_07_01_01_23_45: {}},
 			}),
@@ -1654,8 +1649,8 @@
 		},
 		// Test lots of types as map keys
 		{
-			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.C64[Complex(456.789, 10.1112)], v.C128[Complex(123.456, 11.2223)], v.S[\"Dickens\"], v.Ms[\"Charles\"][\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManyMaps",
-			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.C64[Complex]", "v.C128[Complex]", "v.S[Dickens]", "v.Ms[Charles][Dickens]", "v.T[Time]"},
+			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.S[\"Dickens\"], v.Ms[\"Charles\"][\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManyMaps",
+			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.S[Dickens]", "v.Ms[Charles][Dickens]", "v.T[Time]"},
 			[][]*vom.RawBytes{
 				[]*vom.RawBytes{
 					vom.RawBytesOf("It was the best of times,"),
@@ -1668,8 +1663,6 @@
 					vom.RawBytesOf("it was the season of Darkness,"),
 					vom.RawBytesOf("it was the spring of hope,"),
 					vom.RawBytesOf("it was the winter of despair,"),
-					vom.RawBytesOf("we had everything before us,"),
-					vom.RawBytesOf("we had nothing before us,"),
 					vom.RawBytesOf("we are all going direct to Heaven,"),
 					vom.RawBytesOf("we are all going direct to Heaven,"),
 					vom.RawBytesOf("we are all going direct the other way"),
@@ -1678,8 +1671,8 @@
 		},
 		// Test lots of types as set keys
 		{
-			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.C64[Complex(456.789, 10.1112)], v.C128[Complex(123.456, 11.2223)], v.S[\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManySets",
-			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.C64[Complex]", "v.C128[Complex]", "v.S[Dickens]", "v.T[Time]"},
+			"select v.B[true], v.By[10], v.U16[16], v.U32[32], v.U64[64], v.I16[17], v.I32[33], v.I64[65], v.F32[32.1], v.F64[64.2], v.S[\"Dickens\"], v.T[Time(\"2006-01-02 15:04:05 MST\", \"2015-07-01 01:23:45 PDT\")] from ManySets",
+			[]string{"v.B[true]", "v.By[10]", "v.U16[16]", "v.U32[32]", "v.U64[64]", "v.I16[17]", "v.I32[33]", "v.I64[65]", "v.F32[32.1]", "v.F64[64.2]", "v.S[Dickens]", "v.T[Time]"},
 			[][]*vom.RawBytes{
 				[]*vom.RawBytes{
 					vom.RawBytesOf(true),
@@ -1694,8 +1687,6 @@
 					vom.RawBytesOf(true),
 					vom.RawBytesOf(true),
 					vom.RawBytesOf(true),
-					vom.RawBytesOf(true),
-					vom.RawBytesOf(true),
 				},
 			},
 		},
@@ -2071,22 +2062,6 @@
 			},
 		},
 		{
-			// Real
-			"select k, Real(v.C64) from Numbers where v.C64 = Complex(123, 7)",
-			[]string{"k", "Real"},
-			[][]*vom.RawBytes{
-				{vom.RawBytesOf("001"), vom.RawBytesOf(float64(123.0))},
-			},
-		},
-		{
-			// Real
-			"select k, Real(v.C128) from Numbers where v.C128 = Complex(456.789, 10.1112)",
-			[]string{"k", "Real"},
-			[][]*vom.RawBytes{
-				{vom.RawBytesOf("001"), vom.RawBytesOf(float64(456.789))},
-			},
-		},
-		{
 			// Ceiling
 			"select k, Ceiling(v.F64) from Numbers where k = \"001\"",
 			[]string{"k", "Ceiling"},
@@ -2160,10 +2135,10 @@
 		},
 		{
 			// Sprintf
-			"select Sprintf(\"%d, %d, %d, %d, %d, %d, %d, %g, %g, %g, %g\", v.B, v.Ui16, v.Ui32, v.Ui64, v.I16, v.I32, v.I64, v.F32, v.F64, v.C64, v.C128) from Numbers where k = \"001\"",
+			"select Sprintf(\"%d, %d, %d, %d, %d, %d, %d, %g, %g\", v.B, v.Ui16, v.Ui32, v.Ui64, v.I16, v.I32, v.I64, v.F32, v.F64) from Numbers where k = \"001\"",
 			[]string{"Sprintf"},
 			[][]*vom.RawBytes{
-				{vom.RawBytesOf("12, 1234, 5678, 999888777666, 9876, 876543, 128, 3.141590118408203, 2.71828182846, (123+7i), (456.789+10.1112i)")},
+				{vom.RawBytesOf("12, 1234, 5678, 999888777666, 9876, 876543, 128, 3.141590118408203, 2.71828182846")},
 			},
 		},
 		{
@@ -3178,10 +3153,6 @@
 			syncql.NewErrDidYouMeanFunction(db.GetContext(), 7, "Split"),
 		},
 		{
-			"select comPLex(1.0, 2.0) from Customer",
-			syncql.NewErrDidYouMeanFunction(db.GetContext(), 7, "Complex"),
-		},
-		{
 			"select len(\"foo\") from Customer",
 			syncql.NewErrDidYouMeanFunction(db.GetContext(), 7, "Len"),
 		},
@@ -3190,18 +3161,6 @@
 			syncql.NewErrIntConversionError(db.GetContext(), 24, errors.New("Cannot convert operand to int64.")),
 		},
 		{
-			"select Complex(23, \"foo\") from Customer",
-			syncql.NewErrFloatConversionError(db.GetContext(), 19, errors.New("Cannot convert operand to float64.")),
-		},
-		{
-			"select Complex(\"foo\", 42) from Customer",
-			syncql.NewErrFloatConversionError(db.GetContext(), 15, errors.New("Cannot convert operand to float64.")),
-		},
-		{
-			"select Complex(42.0) from Customer",
-			syncql.NewErrFunctionArgCount(db.GetContext(), 7, "Complex", 2, 1),
-		},
-		{
 			"select StrCat(v.Address.City, 42) from Customer",
 			syncql.NewErrStringConversionError(db.GetContext(), 30, errors.New("Cannot convert operand to string.")),
 		},
diff --git a/syncbase/.api b/syncbase/.api
index afa06af..e6a9b8c 100644
--- a/syncbase/.api
+++ b/syncbase/.api
@@ -58,16 +58,14 @@
 pkg syncbase, method (*ValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*WatchChange) Value(interface{}) error
-pkg syncbase, type App interface { Create, Database, Destroy, Exists, FullName, GetPermissions, ListDatabases, Name, SetPermissions }
 pkg syncbase, type App interface, Create(*context.T, access.Permissions) error
 pkg syncbase, type App interface, Database(string, *Schema) Database
 pkg syncbase, type App interface, Destroy(*context.T) error
 pkg syncbase, type App interface, Exists(*context.T) (bool, error)
 pkg syncbase, type App interface, FullName() string
-pkg syncbase, type App interface, GetPermissions(*context.T) (access.Permissions, string, error)
 pkg syncbase, type App interface, ListDatabases(*context.T) ([]string, error)
 pkg syncbase, type App interface, Name() string
-pkg syncbase, type App interface, SetPermissions(*context.T, access.Permissions, string) error
+pkg syncbase, type App interface, unexported methods
 pkg syncbase, type BatchDatabase interface { Abort, Close, Commit, Exec, FullName, GetResumeMarker, ListTables, Name, Table }
 pkg syncbase, type BatchDatabase interface, Abort(*context.T) error
 pkg syncbase, type BatchDatabase interface, Close()
@@ -137,7 +135,6 @@
 pkg syncbase, type ConflictTarget struct, Value *Conflict
 pkg syncbase, type ConflictTarget struct, embedded vdl.FieldsTargetBase
 pkg syncbase, type ConflictTarget struct, embedded vdl.TargetBase
-pkg syncbase, type Database interface { BeginBatch, Blob, Close, Create, CreateBlob, Destroy, EnforceSchema, Exec, Exists, FullName, GetPermissions, GetResumeMarker, GetSyncgroupNames, ListTables, Name, PauseSync, ResumeSync, SetPermissions, Syncgroup, Table, Watch }
 pkg syncbase, type Database interface, BeginBatch(*context.T, wire.BatchOptions) (BatchDatabase, error)
 pkg syncbase, type Database interface, Blob(wire.BlobRef) Blob
 pkg syncbase, type Database interface, Close()
@@ -148,17 +145,16 @@
 pkg syncbase, type Database interface, Exec(*context.T, string, ...interface{}) ([]string, ResultStream, error)
 pkg syncbase, type Database interface, Exists(*context.T) (bool, error)
 pkg syncbase, type Database interface, FullName() string
-pkg syncbase, type Database interface, GetPermissions(*context.T) (access.Permissions, string, error)
 pkg syncbase, type Database interface, GetResumeMarker(*context.T) (watch.ResumeMarker, error)
 pkg syncbase, type Database interface, GetSyncgroupNames(*context.T) ([]string, error)
 pkg syncbase, type Database interface, ListTables(*context.T) ([]string, error)
 pkg syncbase, type Database interface, Name() string
 pkg syncbase, type Database interface, PauseSync(*context.T) error
 pkg syncbase, type Database interface, ResumeSync(*context.T) error
-pkg syncbase, type Database interface, SetPermissions(*context.T, access.Permissions, string) error
 pkg syncbase, type Database interface, Syncgroup(string) Syncgroup
 pkg syncbase, type Database interface, Table(string) Table
 pkg syncbase, type Database interface, Watch(*context.T, string, string, watch.ResumeMarker) (WatchStream, error)
+pkg syncbase, type Database interface, unexported methods
 pkg syncbase, type DatabaseHandle interface { Close, Exec, FullName, GetResumeMarker, ListTables, Name, Table }
 pkg syncbase, type DatabaseHandle interface, Close()
 pkg syncbase, type DatabaseHandle interface, Exec(*context.T, string, ...interface{}) ([]string, ResultStream, error)
@@ -213,12 +209,10 @@
 pkg syncbase, type Schema struct
 pkg syncbase, type Schema struct, Metadata wire.SchemaMetadata
 pkg syncbase, type Schema struct, Resolver ConflictResolver
-pkg syncbase, type Service interface { App, FullName, GetPermissions, ListApps, SetPermissions }
 pkg syncbase, type Service interface, App(string) App
 pkg syncbase, type Service interface, FullName() string
-pkg syncbase, type Service interface, GetPermissions(*context.T) (access.Permissions, string, error)
 pkg syncbase, type Service interface, ListApps(*context.T) ([]string, error)
-pkg syncbase, type Service interface, SetPermissions(*context.T, access.Permissions, string) error
+pkg syncbase, type Service interface, unexported methods
 pkg syncbase, type Stream interface { Advance, Cancel, Err }
 pkg syncbase, type Stream interface, Advance() bool
 pkg syncbase, type Stream interface, Cancel()
diff --git a/syncbase/exec_test.go b/syncbase/exec_test.go
index c956e2d..d0b1619 100644
--- a/syncbase/exec_test.go
+++ b/syncbase/exec_test.go
@@ -162,21 +162,21 @@
 	}
 
 	k = "001"
-	n := testdata.Numbers{byte(12), uint16(1234), uint32(5678), uint64(999888777666), int16(9876), int32(876543), int64(128), float32(3.14159), float64(2.71828182846), complex64(123.0 + 7.0i), complex128(456.789 + 10.1112i)}
+	n := testdata.Numbers{byte(12), uint16(1234), uint32(5678), uint64(999888777666), int16(9876), int32(876543), int64(128), float32(3.14159), float64(2.71828182846)}
 	numbersEntries = append(numbersEntries, kv{k, vdl.ValueOf(n)})
 	if err := numbersTable.Put(ctx, k, n); err != nil {
 		t.Fatalf("numbersTable.Put() failed: %v", err)
 	}
 
 	k = "002"
-	n = testdata.Numbers{byte(9), uint16(99), uint32(999), uint64(9999999), int16(9), int32(99), int64(88), float32(1.41421356237), float64(1.73205080757), complex64(9.87 + 7.65i), complex128(4.32 + 1.0i)}
+	n = testdata.Numbers{byte(9), uint16(99), uint32(999), uint64(9999999), int16(9), int32(99), int64(88), float32(1.41421356237), float64(1.73205080757)}
 	numbersEntries = append(numbersEntries, kv{k, vdl.ValueOf(n)})
 	if err := numbersTable.Put(ctx, k, n); err != nil {
 		t.Fatalf("numbersTable.Put() failed: %v", err)
 	}
 
 	k = "003"
-	n = testdata.Numbers{byte(210), uint16(210), uint32(210), uint64(210), int16(210), int32(210), int64(210), float32(210.0), float64(210.0), complex64(210.0 + 0.0i), complex128(210.0 + 0.0i)}
+	n = testdata.Numbers{byte(210), uint16(210), uint32(210), uint64(210), int16(210), int32(210), int64(210), float32(210.0), float64(210.0)}
 	numbersEntries = append(numbersEntries, kv{k, vdl.ValueOf(n)})
 	if err := numbersTable.Put(ctx, k, n); err != nil {
 		t.Fatalf("numbersTable.Put() failed: %v", err)
@@ -200,7 +200,7 @@
 	kid := testdata.KeyIndexData{
 		[4]string{"Fee", "Fi", "Fo", "Fum"},
 		[]string{"I", "smell", "the", "blood", "of", "an", "Englishman"},
-		map[complex128]string{complex(1.1, 2.2): "Be he living, or be he dead"},
+		map[int64]string{6: "six", 7: "seven"},
 		map[string]struct{}{"I’ll grind his bones to mix my bread": {}},
 	}
 	keyIndexDataEntries = append(keyIndexDataEntries, kv{k, vdl.ValueOf(kid)})
@@ -963,7 +963,7 @@
 		},
 		{
 			// Test that all numeric types can compare to an uint64
-			"select v from Numbers where v.Ui64 = v.B and v.Ui64 = v.Ui16 and v.Ui64 = v.Ui32 and v.Ui64 = v.F64 and v.Ui64 = v.I16 and v.Ui64 = v.I32 and v.Ui64 = v.I64 and v.Ui64 = v.F32 and v.Ui64 = v.C64 and v.Ui64 = v.C128",
+			"select v from Numbers where v.Ui64 = v.B and v.Ui64 = v.Ui16 and v.Ui64 = v.Ui32 and v.Ui64 = v.F64 and v.Ui64 = v.I16 and v.Ui64 = v.I32 and v.Ui64 = v.I64 and v.Ui64 = v.F32",
 			[]string{"v"},
 			[][]*vdl.Value{
 				[]*vdl.Value{numbersEntries[2].value},
@@ -971,12 +971,12 @@
 		},
 		{
 			// array, list, map, set
-			"select v.A[2], v.L[6], v.M[Complex(1.1, 2.2)], v.S[\"I’ll grind his bones to mix my bread\"] from KeyIndexData",
-			[]string{"v.A[2]", "v.L[6]", "v.M[Complex]", "v.S[I’ll grind his bones to mix my bread]"},
+			"select v.A[2], v.L[6], v.M[7], v.S[\"I’ll grind his bones to mix my bread\"] from KeyIndexData",
+			[]string{"v.A[2]", "v.L[6]", "v.M[7]", "v.S[I’ll grind his bones to mix my bread]"},
 			[][]*vdl.Value{[]*vdl.Value{
 				vdl.ValueOf("Fo"),
 				vdl.ValueOf("Englishman"),
-				vdl.ValueOf("Be he living, or be he dead"),
+				vdl.ValueOf("seven"),
 				vdl.ValueOf(true),
 			}},
 		},
@@ -1611,8 +1611,8 @@
 	basic := []execSelectTest{
 		{
 			// Select numeric types
-			"select v.B, v.Ui16, v.Ui32, v.Ui64, v.I16, v.I32, v.I64, v.F32, v.F64, v.C64, v.C128 from Numbers where k = \"001\"",
-			[]string{"v.B", "v.Ui16", "v.Ui32", "v.Ui64", "v.I16", "v.I32", "v.I64", "v.F32", "v.F64", "v.C64", "v.C128"},
+			"select v.B, v.Ui16, v.Ui32, v.Ui64, v.I16, v.I32, v.I64, v.F32, v.F64 from Numbers where k = \"001\"",
+			[]string{"v.B", "v.Ui16", "v.Ui32", "v.Ui64", "v.I16", "v.I32", "v.I64", "v.F32", "v.F64"},
 			[][]*vdl.Value{
 				[]*vdl.Value{
 					vdl.ValueOf(byte(12)),
@@ -1624,8 +1624,6 @@
 					vdl.ValueOf(int64(128)),
 					vdl.ValueOf(float32(3.14159)),
 					vdl.ValueOf(float64(2.71828182846)),
-					vdl.ValueOf(complex64(123.0 + 7.0i)),
-					vdl.ValueOf(complex128(456.789 + 10.1112i)),
 				},
 			},
 		},
@@ -1645,13 +1643,13 @@
 		},
 		{
 			// Select array, list, set, map
-			"select v.A[1], v.L[6], v.M[Complex(1.1,2.2)], v.S[\"I’ll grind his bones to mix my bread\"] from KeyIndexData where k = \"aaa\"",
-			[]string{"v.A[1]", "v.L[6]", "v.M[Complex]", "v.S[I’ll grind his bones to mix my bread]"},
+			"select v.A[1], v.L[6], v.M[7], v.S[\"I’ll grind his bones to mix my bread\"] from KeyIndexData where k = \"aaa\"",
+			[]string{"v.A[1]", "v.L[6]", "v.M[7]", "v.S[I’ll grind his bones to mix my bread]"},
 			[][]*vdl.Value{
 				[]*vdl.Value{
 					vdl.ValueOf("Fi"),
 					vdl.ValueOf("Englishman"),
-					vdl.ValueOf("Be he living, or be he dead"),
+					vdl.ValueOf("seven"),
 					vdl.ValueOf(true),
 				},
 			},
@@ -1707,13 +1705,12 @@
 		},
 		{
 			// Math Functions
-			"select Ceiling(10.1), Ceiling(-10.1), Complex(1.1, 2.2), Floor(10.1), Floor(-10.1), IsInf(100, 1), IsInf(-100, -1), IsInf(Inf(1), 1), IsInf(Inf(-1), -1), IsNaN(100.0), IsNaN(NaN()), Log(2.3), Log10(3.1), Pow(4.3, 10.1), Pow10(12), Mod(12.6, 4.4), Real(Complex(1.1, 2.2)), Truncate(16.9), Truncate(-16.9), Remainder(16.9, 7.1) from Numbers where k = \"001\"",
-			[]string{"Ceiling", "Ceiling", "Complex", "Floor", "Floor", "IsInf", "IsInf", "IsInf", "IsInf", "IsNaN", "IsNaN", "Log", "Log10", "Pow", "Pow10", "Mod", "Real", "Truncate", "Truncate", "Remainder"},
+			"select Ceiling(10.1), Ceiling(-10.1), Floor(10.1), Floor(-10.1), IsInf(100, 1), IsInf(-100, -1), IsInf(Inf(1), 1), IsInf(Inf(-1), -1), IsNaN(100.0), IsNaN(NaN()), Log(2.3), Log10(3.1), Pow(4.3, 10.1), Pow10(12), Mod(12.6, 4.4), Truncate(16.9), Truncate(-16.9), Remainder(16.9, 7.1) from Numbers where k = \"001\"",
+			[]string{"Ceiling", "Ceiling", "Floor", "Floor", "IsInf", "IsInf", "IsInf", "IsInf", "IsNaN", "IsNaN", "Log", "Log10", "Pow", "Pow10", "Mod", "Truncate", "Truncate", "Remainder"},
 			[][]*vdl.Value{
 				[]*vdl.Value{
 					vdl.ValueOf(float64(11)),                     // Ceiling(10.1)
 					vdl.ValueOf(float64(-10)),                    // Ceiling(-10.1)
-					vdl.ValueOf(complex128(1.1 + 2.2i)),          // Complex(1.1, 1.2)
 					vdl.ValueOf(float64(10)),                     // Floor(10.1)
 					vdl.ValueOf(float64(-11)),                    // Floor(-10.1)
 					vdl.ValueOf(false),                           // IsInf(100, 1)
@@ -1727,7 +1724,6 @@
 					vdl.ValueOf(float64(2.5005261539265467e+06)), // Pow(4.3, 10.1)
 					vdl.ValueOf(float64(1e+12)),                  // Pow10(12)
 					vdl.ValueOf(float64(3.799999999999999)),      // Mod(12.6, 4.4)
-					vdl.ValueOf(float64(1.1)),                    // Real(Complex(1.1, 2.2))
 					vdl.ValueOf(float64(16)),                     // Truncate((16.9)
 					vdl.ValueOf(float64(-16)),                    // Truncate((-16.9)
 					vdl.ValueOf(float64(2.6999999999999993)),     // Remainder(16.9, 7.1)
@@ -1744,7 +1740,7 @@
 					vdl.ValueOf(int64(13)), // Len("Hello, 世界")
 					vdl.ValueOf(int64(4)),  // Len(v.A)
 					vdl.ValueOf(int64(7)),  // Len(v.L)
-					vdl.ValueOf(int64(1)),  // Len(v.M)
+					vdl.ValueOf(int64(2)),  // Len(v.M)
 					vdl.ValueOf(int64(1)),  // Len(v.S)
 				},
 			},
@@ -1799,7 +1795,7 @@
 		{
 			// Select on numeric comparisons with equals
 			// (except, allow a range for F32 as the literal is interpreted as a float64.
-			"select k, v from Numbers where v.B = 12 and v.Ui16 = 1234 and v.Ui32 = 5678 and v.Ui64 = 999888777666 and v.I16 = 9876 and v.I32 = 876543 and v.I64 = 128 and v.F32 > 3.14158 and v.F32 < 3.1416 and v.F64 = 2.71828182846 and v.C64 = Complex(123.0, 7.0) and v.C128 = Complex(456.789, 10.1112) and k = \"001\"",
+			"select k, v from Numbers where v.B = 12 and v.Ui16 = 1234 and v.Ui32 = 5678 and v.Ui64 = 999888777666 and v.I16 = 9876 and v.I32 = 876543 and v.I64 = 128 and v.F32 > 3.14158 and v.F32 < 3.1416 and v.F64 = 2.71828182846 and k = \"001\"",
 			[]string{"k", "v"},
 			[][]*vdl.Value{
 				[]*vdl.Value{
@@ -1810,7 +1806,6 @@
 		},
 		{
 			// Select on numeric comparisons with >=
-			// Note: Complex does not support >=
 			"select k, v from Numbers where v.B >= 12 and v.Ui16 >= 1234 and v.Ui32 >= 5678 and v.Ui64 >= 999888777666 and v.I16 >= 9876 and v.I32 >= 876543 and v.I64 >= 128 and v.F32 >= 3.14159 and v.F64 >= 2.71828182846 and k = \"001\"",
 			[]string{"k", "v"},
 			[][]*vdl.Value{
@@ -1822,7 +1817,6 @@
 		},
 		{
 			// Select on numeric comparisons with <=
-			// Note: Complex does not support <=
 			"select k, v from Numbers where v.B <= 12 and v.Ui16 <= 1234 and v.Ui32 <= 5678 and v.Ui64 <= 999888777666 and v.I16 <= 9876 and v.I32 <= 876543 and v.I64 <= 128 and v.F32 <= 3.14160 and v.F64 <= 2.71828182846 and k = \"001\"",
 			[]string{"k", "v"},
 			[][]*vdl.Value{
@@ -1906,22 +1900,6 @@
 				[]*vdl.Value{vdl.ValueOf("003")},
 			},
 		},
-		{
-			"select k from Numbers where v.C64 <> Complex(123.0, 7.0)",
-			[]string{"k"},
-			[][]*vdl.Value{
-				[]*vdl.Value{vdl.ValueOf("002")},
-				[]*vdl.Value{vdl.ValueOf("003")},
-			},
-		},
-		{
-			"select k from Numbers where v.C128 <> Complex(456.789, 10.1112)",
-			[]string{"k"},
-			[][]*vdl.Value{
-				[]*vdl.Value{vdl.ValueOf("002")},
-				[]*vdl.Value{vdl.ValueOf("003")},
-			},
-		},
 		// bool =, <>
 		{
 			"select k from Customer where v.Active = true",
@@ -2019,7 +1997,7 @@
 		},
 		// inspect into array, list, set and map in where clause
 		{
-			"select k from KeyIndexData where v.A[1] = \"Fi\" and v.L[3] = \"blood\" and v.M[Complex(1.1,2.2)] = \"Be he living, or be he dead\" and v.S[\"I’ll grind his bones to mix my bread\"] = true",
+			"select k from KeyIndexData where v.A[1] = \"Fi\" and v.L[3] = \"blood\" and v.M[7]=\"seven\" and v.S[\"I’ll grind his bones to mix my bread\"] = true",
 			[]string{"k"},
 			[][]*vdl.Value{
 				[]*vdl.Value{vdl.ValueOf("aaa")},
@@ -2046,7 +2024,7 @@
 		},
 		{
 			// Use math functions in where clause.
-			"select k from Numbers where Ceiling(v.F64) = 2.0 and v.C128 = Complex(4.32, 1.0) and Floor(v.F64) = 1.0 and IsInf(v.F64, 1) = false and IsInf(Inf(1), 1) = true and IsInf(Inf(-1), -1) = true and IsNaN(v.F64) = false and IsNaN(NaN()) = true and Log(v.F64) = 0.5493061443347032 and Log10(v.F64) = 0.23856062736011277 and Pow(v.F64, 3.2) = 5.799546134807319 and Pow10(v.B) = 1e+09 and Pow10(v.Ui32) = Inf(1) and Mod(v.F64, v.F32) = 0.31783726940013923 and Real(v.C128) = 4.32 and Truncate(v.F64) = 1.0 and Remainder(v.F64, v.F32) = 0.31783726940013923",
+			"select k from Numbers where Ceiling(v.F64) = 2.0 and Floor(v.F64) = 1.0 and IsInf(v.F64, 1) = false and IsInf(Inf(1), 1) = true and IsInf(Inf(-1), -1) = true and IsNaN(v.F64) = false and IsNaN(NaN()) = true and Log(v.F64) = 0.5493061443347032 and Log10(v.F64) = 0.23856062736011277 and Pow(v.F64, 3.2) = 5.799546134807319 and Pow10(v.B) = 1e+09 and Pow10(v.Ui32) = Inf(1) and Mod(v.F64, v.F32) = 0.31783726940013923 and Truncate(v.F64) = 1.0 and Remainder(v.F64, v.F32) = 0.31783726940013923",
 			[]string{"k"},
 			[][]*vdl.Value{
 				[]*vdl.Value{vdl.ValueOf("002")},
@@ -2054,7 +2032,7 @@
 		},
 		{
 			// Use Len on string, array, list and set-- in where clause.
-			"select k from KeyIndexData where Len(v.A[0]) = 3 and Len(v.A) = 4 and Len(v.L) = 7 and Len(v.M) = 1 and Len(v.S) = 1",
+			"select k from KeyIndexData where Len(v.A[0]) = 3 and Len(v.A) = 4 and Len(v.L) = 7 and Len(v.M) = 2 and Len(v.S) = 1",
 			[]string{"k"},
 			[][]*vdl.Value{
 				[]*vdl.Value{vdl.ValueOf("aaa")},
@@ -2435,10 +2413,6 @@
 		// *BigIntConversionError isn't produced as vdl doesn't have big ints
 		// *BigRatConversionError isn't produced as vdl doesn't have big rats
 		// *BoolConversionError isn't currently produced as no functions take a bool arg.
-		{
-			"select Real(\"abc\") from Customer",
-			syncql.NewErrComplexConversionError(ctx, 12, errors.New("Cannot convert operand to Complex.")),
-		},
 		// *UintConversionError isn't currently produced as no functions take a uint arg.
 		{
 			"select Year(\"abc\", \"America/Los_Angeles\") from Customer",
@@ -2450,7 +2424,7 @@
 			syncql.NewErrStringConversionError(ctx, 17, errors.New("Cannot convert operand to string.")),
 		},
 		{
-			"select Complex(\"abc\", 3.1) from Customer",
+			"select Ceiling(\"abc\") from Customer",
 			syncql.NewErrFloatConversionError(ctx, 15, errors.New("Cannot convert operand to float64.")),
 		},
 		{
@@ -2746,7 +2720,7 @@
 				"I’ll grind his bones to mix my bread",
 				42,
 			},
-			[]string{"v.A[2]", "v.L[6]", "v.M[Complex]", "v.S[I’ll grind his bones to mix my bread]"},
+			[]string{"v.A[2]", "v.L[6]", "v.S[I’ll grind his bones to mix my bread]"},
 			[][]*vdl.Value{
 				[]*vdl.Value{
 					vdl.ValueOf("Fo"),
diff --git a/syncbase/testdata/db_objects.vdl b/syncbase/testdata/db_objects.vdl
index c171e8f..151320d 100644
--- a/syncbase/testdata/db_objects.vdl
+++ b/syncbase/testdata/db_objects.vdl
@@ -73,8 +73,6 @@
 	I64  int64
 	F32  float32
 	F64  float64
-	C64  complex64
-	C128 complex128
 }
 
 type FooType struct {
@@ -100,7 +98,7 @@
 type KeyIndexData struct {
 	A ArrayOfFour
 	L []string
-	M map[complex128]string
+	M map[int64]string
 	S set[string]
 }
 
diff --git a/syncbase/testdata/testdata.vdl.go b/syncbase/testdata/testdata.vdl.go
index b357b8d..23e532c 100644
--- a/syncbase/testdata/testdata.vdl.go
+++ b/syncbase/testdata/testdata.vdl.go
@@ -1096,8 +1096,6 @@
 	I64  int64
 	F32  float32
 	F64  float64
-	C64  complex64
-	C128 complex128
 }
 
 func (Numbers) __VDLReflect(struct {
@@ -1219,30 +1217,6 @@
 			return err
 		}
 	}
-	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("C64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget21.FromComplex(complex128(m.C64), tt.NonOptional().Field(9).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
-			return err
-		}
-	}
-	keyTarget22, fieldTarget23, err := fieldsTarget1.StartField("C128")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget23.FromComplex(complex128(m.C128), tt.NonOptional().Field(10).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget22, fieldTarget23); err != nil {
-			return err
-		}
-	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -1264,8 +1238,6 @@
 	i64Target  vdl.Int64Target
 	f32Target  vdl.Float32Target
 	f64Target  vdl.Float64Target
-	c64Target  vdl.Complex64Target
-	c128Target vdl.Complex128Target
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -1315,14 +1287,6 @@
 		t.f64Target.Value = &t.Value.F64
 		target, err := &t.f64Target, error(nil)
 		return nil, target, err
-	case "C64":
-		t.c64Target.Value = &t.Value.C64
-		target, err := &t.c64Target, error(nil)
-		return nil, target, err
-	case "C128":
-		t.c128Target.Value = &t.Value.C128
-		target, err := &t.c128Target, error(nil)
-		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/syncbase/testdata.Numbers", name)
 	}
@@ -1774,7 +1738,7 @@
 type KeyIndexData struct {
 	A ArrayOfFour
 	L []string
-	M map[complex128]string
+	M map[int64]string
 	S map[string]struct{}
 }
 
@@ -1846,7 +1810,7 @@
 			if err != nil {
 				return err
 			}
-			if err := keyTarget12.FromComplex(complex128(key13), tt.NonOptional().Field(2).Type.Key()); err != nil {
+			if err := keyTarget12.FromInt(int64(key13), tt.NonOptional().Field(2).Type.Key()); err != nil {
 				return err
 			}
 			valueTarget14, err := mapTarget11.FinishKeyStartField(keyTarget12)
@@ -1953,12 +1917,12 @@
 	return nil
 }
 
-// map[complex128]string
+// map[int64]string
 type __VDLTarget1_map struct {
-	Value      *map[complex128]string
-	currKey    complex128
+	Value      *map[int64]string
+	currKey    int64
 	currElem   string
-	keyTarget  vdl.Complex128Target
+	keyTarget  vdl.Int64Target
 	elemTarget vdl.StringTarget
 	vdl.TargetBase
 	vdl.MapTargetBase
@@ -1966,14 +1930,14 @@
 
 func (t *__VDLTarget1_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
 
-	if ttWant := vdl.TypeOf((*map[complex128]string)(nil)); !vdl.Compatible(tt, ttWant) {
+	if ttWant := vdl.TypeOf((*map[int64]string)(nil)); !vdl.Compatible(tt, ttWant) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
 	}
-	*t.Value = make(map[complex128]string)
+	*t.Value = make(map[int64]string)
 	return t, nil
 }
 func (t *__VDLTarget1_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = complex128(0)
+	t.currKey = int64(0)
 	t.keyTarget.Value = &t.currKey
 	target, err := &t.keyTarget, error(nil)
 	return target, err
diff --git a/vdl/.api b/vdl/.api
index fa44766..80b81cf 100644
--- a/vdl/.api
+++ b/vdl/.api
@@ -2,8 +2,6 @@
 pkg vdl, const Array Kind
 pkg vdl, const Bool Kind
 pkg vdl, const Byte Kind
-pkg vdl, const Complex128 Kind
-pkg vdl, const Complex64 Kind
 pkg vdl, const Enum Kind
 pkg vdl, const Float32 Kind
 pkg vdl, const Float64 Kind
@@ -34,8 +32,6 @@
 pkg vdl, func ByteValue(byte) *Value
 pkg vdl, func BytesValue([]byte) *Value
 pkg vdl, func Compatible(*Type, *Type) bool
-pkg vdl, func Complex128Value(complex128) *Value
-pkg vdl, func Complex64Value(complex64) *Value
 pkg vdl, func Convert(interface{}, interface{}) error
 pkg vdl, func CopyValue(*Value) *Value
 pkg vdl, func EnumType(...string) *Type
@@ -129,42 +125,6 @@
 pkg vdl, method (*BytesTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*BytesTarget) StartMap(*Type, int) (MapTarget, error)
 pkg vdl, method (*BytesTarget) StartSet(*Type, int) (SetTarget, error)
-pkg vdl, method (*Complex128Target) FinishFields(FieldsTarget) error
-pkg vdl, method (*Complex128Target) FinishList(ListTarget) error
-pkg vdl, method (*Complex128Target) FinishMap(MapTarget) error
-pkg vdl, method (*Complex128Target) FinishSet(SetTarget) error
-pkg vdl, method (*Complex128Target) FromBool(bool, *Type) error
-pkg vdl, method (*Complex128Target) FromBytes([]byte, *Type) error
-pkg vdl, method (*Complex128Target) FromComplex(complex128, *Type) error
-pkg vdl, method (*Complex128Target) FromEnumLabel(string, *Type) error
-pkg vdl, method (*Complex128Target) FromFloat(float64, *Type) error
-pkg vdl, method (*Complex128Target) FromInt(int64, *Type) error
-pkg vdl, method (*Complex128Target) FromNil(*Type) error
-pkg vdl, method (*Complex128Target) FromString(string, *Type) error
-pkg vdl, method (*Complex128Target) FromTypeObject(*Type) error
-pkg vdl, method (*Complex128Target) FromUint(uint64, *Type) error
-pkg vdl, method (*Complex128Target) StartFields(*Type) (FieldsTarget, error)
-pkg vdl, method (*Complex128Target) StartList(*Type, int) (ListTarget, error)
-pkg vdl, method (*Complex128Target) StartMap(*Type, int) (MapTarget, error)
-pkg vdl, method (*Complex128Target) StartSet(*Type, int) (SetTarget, error)
-pkg vdl, method (*Complex64Target) FinishFields(FieldsTarget) error
-pkg vdl, method (*Complex64Target) FinishList(ListTarget) error
-pkg vdl, method (*Complex64Target) FinishMap(MapTarget) error
-pkg vdl, method (*Complex64Target) FinishSet(SetTarget) error
-pkg vdl, method (*Complex64Target) FromBool(bool, *Type) error
-pkg vdl, method (*Complex64Target) FromBytes([]byte, *Type) error
-pkg vdl, method (*Complex64Target) FromComplex(complex128, *Type) error
-pkg vdl, method (*Complex64Target) FromEnumLabel(string, *Type) error
-pkg vdl, method (*Complex64Target) FromFloat(float64, *Type) error
-pkg vdl, method (*Complex64Target) FromInt(int64, *Type) error
-pkg vdl, method (*Complex64Target) FromNil(*Type) error
-pkg vdl, method (*Complex64Target) FromString(string, *Type) error
-pkg vdl, method (*Complex64Target) FromTypeObject(*Type) error
-pkg vdl, method (*Complex64Target) FromUint(uint64, *Type) error
-pkg vdl, method (*Complex64Target) StartFields(*Type) (FieldsTarget, error)
-pkg vdl, method (*Complex64Target) StartList(*Type, int) (ListTarget, error)
-pkg vdl, method (*Complex64Target) StartMap(*Type, int) (MapTarget, error)
-pkg vdl, method (*Complex64Target) StartSet(*Type, int) (SetTarget, error)
 pkg vdl, method (*FieldsTargetBase) FinishField(Target, Target) error
 pkg vdl, method (*FieldsTargetBase) StartField(string) (Target, Target, error)
 pkg vdl, method (*Float32Target) FinishFields(FieldsTarget) error
@@ -445,7 +405,6 @@
 pkg vdl, method (*Value) Assign(*Value) *Value
 pkg vdl, method (*Value) AssignBool(bool) *Value
 pkg vdl, method (*Value) AssignBytes([]byte) *Value
-pkg vdl, method (*Value) AssignComplex(complex128) *Value
 pkg vdl, method (*Value) AssignEnumIndex(int) *Value
 pkg vdl, method (*Value) AssignEnumLabel(string) *Value
 pkg vdl, method (*Value) AssignFloat(float64) *Value
@@ -459,7 +418,6 @@
 pkg vdl, method (*Value) AssignUnionField(int, *Value) *Value
 pkg vdl, method (*Value) Bool() bool
 pkg vdl, method (*Value) Bytes() []byte
-pkg vdl, method (*Value) Complex() complex128
 pkg vdl, method (*Value) ContainsKey(*Value) bool
 pkg vdl, method (*Value) CopyBytes([]byte) *Value
 pkg vdl, method (*Value) DeleteSetKey(*Value) *Value
@@ -538,12 +496,6 @@
 pkg vdl, type BytesTarget struct
 pkg vdl, type BytesTarget struct, Value *[]byte
 pkg vdl, type BytesTarget struct, embedded TargetBase
-pkg vdl, type Complex128Target struct
-pkg vdl, type Complex128Target struct, Value *complex128
-pkg vdl, type Complex128Target struct, embedded TargetBase
-pkg vdl, type Complex64Target struct
-pkg vdl, type Complex64Target struct, Value *complex64
-pkg vdl, type Complex64Target struct, embedded TargetBase
 pkg vdl, type Field struct
 pkg vdl, type Field struct, Name string
 pkg vdl, type Field struct, Type *Type
@@ -623,14 +575,13 @@
 pkg vdl, type StringTarget struct
 pkg vdl, type StringTarget struct, Value *string
 pkg vdl, type StringTarget struct, embedded TargetBase
-pkg vdl, type Target interface { FinishFields, FinishList, FinishMap, FinishSet, FromBool, FromBytes, FromComplex, FromEnumLabel, FromFloat, FromInt, FromNil, FromString, FromTypeObject, FromUint, StartFields, StartList, StartMap, StartSet }
+pkg vdl, type Target interface { FinishFields, FinishList, FinishMap, FinishSet, FromBool, FromBytes, FromEnumLabel, FromFloat, FromInt, FromNil, FromString, FromTypeObject, FromUint, StartFields, StartList, StartMap, StartSet }
 pkg vdl, type Target interface, FinishFields(FieldsTarget) error
 pkg vdl, type Target interface, FinishList(ListTarget) error
 pkg vdl, type Target interface, FinishMap(MapTarget) error
 pkg vdl, type Target interface, FinishSet(SetTarget) error
 pkg vdl, type Target interface, FromBool(bool, *Type) error
 pkg vdl, type Target interface, FromBytes([]byte, *Type) error
-pkg vdl, type Target interface, FromComplex(complex128, *Type) error
 pkg vdl, type Target interface, FromEnumLabel(string, *Type) error
 pkg vdl, type Target interface, FromFloat(float64, *Type) error
 pkg vdl, type Target interface, FromInt(int64, *Type) error
@@ -679,8 +630,6 @@
 pkg vdl, var AnyType *Type
 pkg vdl, var BoolType *Type
 pkg vdl, var ByteType *Type
-pkg vdl, var Complex128Type *Type
-pkg vdl, var Complex64Type *Type
 pkg vdl, var ErrFieldNoExist error
 pkg vdl, var ErrorType *Type
 pkg vdl, var Float32Type *Type
diff --git a/vdl/compatible.go b/vdl/compatible.go
index d0a698d..a90984b 100644
--- a/vdl/compatible.go
+++ b/vdl/compatible.go
@@ -201,7 +201,7 @@
 
 func ttIsNumber(tt *Type) bool {
 	switch tt.Kind() {
-	case Byte, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64, Float32, Float64, Complex64, Complex128:
+	case Byte, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64, Float32, Float64:
 		return true
 	}
 	return false
diff --git a/vdl/convert.go b/vdl/convert.go
index aa86e04..bf31d3c 100644
--- a/vdl/convert.go
+++ b/vdl/convert.go
@@ -565,21 +565,6 @@
 	return finishConvert(fin, fill)
 }
 
-// FromComplex implements the Target interface method.
-func (c convTarget) FromComplex(src complex128, tt *Type) error {
-	if target := c.makeDirectTarget(); target != nil {
-		return target.FromComplex(src, tt)
-	}
-	fin, fill, err := startConvert(c, tt)
-	if err != nil {
-		return err
-	}
-	if err := fill.fromComplex(src); err != nil {
-		return err
-	}
-	return finishConvert(fin, fill)
-}
-
 // FromBytes implements the Target interface method.
 func (c convTarget) FromBytes(src []byte, tt *Type) error {
 	if target := c.makeDirectTarget(); target != nil {
@@ -666,11 +651,6 @@
 				c.rv.SetFloat(fsrc)
 				return nil
 			}
-		case reflect.Complex64, reflect.Complex128:
-			if fsrc, ok := convertUintToFloat(src, bitlenR(kind)); ok {
-				c.rv.SetComplex(complex(fsrc, 0))
-				return nil
-			}
 		}
 	} else {
 		switch kind := c.vv.Kind(); kind {
@@ -689,11 +669,6 @@
 				c.vv.AssignFloat(fsrc)
 				return nil
 			}
-		case Complex64, Complex128:
-			if fsrc, ok := convertUintToFloat(src, bitlenV(kind)); ok {
-				c.vv.AssignComplex(complex(fsrc, 0))
-				return nil
-			}
 		}
 	}
 	return fmt.Errorf("invalid conversion from uint(%d) to %v", src, c.tt)
@@ -717,11 +692,6 @@
 				c.rv.SetFloat(fsrc)
 				return nil
 			}
-		case reflect.Complex64, reflect.Complex128:
-			if fsrc, ok := convertIntToFloat(src, bitlenR(kind)); ok {
-				c.rv.SetComplex(complex(fsrc, 0))
-				return nil
-			}
 		}
 	} else {
 		switch kind := c.vv.Kind(); kind {
@@ -740,11 +710,6 @@
 				c.vv.AssignFloat(fsrc)
 				return nil
 			}
-		case Complex64, Complex128:
-			if fsrc, ok := convertIntToFloat(src, bitlenV(kind)); ok {
-				c.vv.AssignComplex(complex(fsrc, 0))
-				return nil
-			}
 		}
 	}
 	return fmt.Errorf("invalid conversion from int(%d) to %v", src, c.tt)
@@ -766,9 +731,6 @@
 		case reflect.Float32, reflect.Float64:
 			c.rv.SetFloat(convertFloatToFloat(src, bitlenR(kind)))
 			return nil
-		case reflect.Complex64, reflect.Complex128:
-			c.rv.SetComplex(complex(convertFloatToFloat(src, bitlenR(kind)), 0))
-			return nil
 		}
 	} else {
 		switch kind := c.vv.Kind(); kind {
@@ -785,65 +747,11 @@
 		case Float32, Float64:
 			c.vv.AssignFloat(convertFloatToFloat(src, bitlenV(kind)))
 			return nil
-		case Complex64, Complex128:
-			c.vv.AssignComplex(complex(convertFloatToFloat(src, bitlenV(kind)), 0))
-			return nil
 		}
 	}
 	return fmt.Errorf("invalid conversion from float(%g) to %v", src, c.tt)
 }
 
-func (c convTarget) fromComplex(src complex128) error {
-	if c.vv == nil {
-		switch kind := c.rv.Kind(); kind {
-		case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr:
-			if usrc, ok := convertComplexToUint(src, bitlenR(kind)); ok {
-				c.rv.SetUint(usrc)
-				return nil
-			}
-		case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:
-			if isrc, ok := convertComplexToInt(src, bitlenR(kind)); ok {
-				c.rv.SetInt(isrc)
-				return nil
-			}
-		case reflect.Float32, reflect.Float64:
-			if imag(src) == 0 {
-				c.rv.SetFloat(convertFloatToFloat(real(src), bitlenR(kind)))
-				return nil
-			}
-		case reflect.Complex64, reflect.Complex128:
-			re := convertFloatToFloat(real(src), bitlenR(kind))
-			im := convertFloatToFloat(imag(src), bitlenR(kind))
-			c.rv.SetComplex(complex(re, im))
-			return nil
-		}
-	} else {
-		switch kind := c.vv.Kind(); kind {
-		case Byte, Uint16, Uint32, Uint64:
-			if usrc, ok := convertComplexToUint(src, bitlenV(kind)); ok {
-				c.vv.AssignUint(usrc)
-				return nil
-			}
-		case Int8, Int16, Int32, Int64:
-			if isrc, ok := convertComplexToInt(src, bitlenV(kind)); ok {
-				c.vv.AssignInt(isrc)
-				return nil
-			}
-		case Float32, Float64:
-			if imag(src) == 0 {
-				c.vv.AssignFloat(convertFloatToFloat(real(src), bitlenV(kind)))
-				return nil
-			}
-		case Complex64, Complex128:
-			re := convertFloatToFloat(real(src), bitlenV(kind))
-			im := convertFloatToFloat(imag(src), bitlenV(kind))
-			c.vv.AssignComplex(complex(re, im))
-			return nil
-		}
-	}
-	return fmt.Errorf("invalid conversion from complex(%g) to %v", src, c.tt)
-}
-
 func (c convTarget) fromBytes(src []byte, tt *Type) error {
 	if c.tt.IsBytes() {
 		return c.fromBytesToBytes(src)
diff --git a/vdl/convert_test.go b/vdl/convert_test.go
index 180104c..1de2ed9 100644
--- a/vdl/convert_test.go
+++ b/vdl/convert_test.go
@@ -91,8 +91,6 @@
 		vdl.SeqNumValue(vdl.Array3Int64TypeN, 1, 2, 3),
 		vdl.SeqNumValue(vdl.Array3Float64Type, 1, 2, 3),
 		vdl.SeqNumValue(vdl.Array3Float64TypeN, 1, 2, 3),
-		vdl.SeqNumValue(vdl.Array3Complex64Type, 1, 2, 3),
-		vdl.SeqNumValue(vdl.Array3Complex64TypeN, 1, 2, 3),
 		vdl.SeqNumValue(vdl.ListByteType, 1, 2, 3),
 		vdl.SeqNumValue(vdl.ListByteTypeN, 1, 2, 3),
 		vdl.SeqNumValue(vdl.ListUint64Type, 1, 2, 3),
@@ -101,8 +99,6 @@
 		vdl.SeqNumValue(vdl.ListInt64TypeN, 1, 2, 3),
 		vdl.SeqNumValue(vdl.ListFloat64Type, 1, 2, 3),
 		vdl.SeqNumValue(vdl.ListFloat64TypeN, 1, 2, 3),
-		vdl.SeqNumValue(vdl.ListComplex64Type, 1, 2, 3),
-		vdl.SeqNumValue(vdl.ListComplex64TypeN, 1, 2, 3),
 	}
 	vvSet123 = []*vdl.Value{
 		vdl.SetNumValue(vdl.SetByteType, 1, 2, 3),
@@ -113,8 +109,6 @@
 		vdl.SetNumValue(vdl.SetInt64TypeN, 1, 2, 3),
 		vdl.SetNumValue(vdl.SetFloat64Type, 1, 2, 3),
 		vdl.SetNumValue(vdl.SetFloat64TypeN, 1, 2, 3),
-		vdl.SetNumValue(vdl.SetComplex64Type, 1, 2, 3),
-		vdl.SetNumValue(vdl.SetComplex64TypeN, 1, 2, 3),
 	}
 	vvMap123True = []*vdl.Value{
 		vdl.MapNumBoolValue(vdl.MapByteBoolType, vdl.NB{1, true}, vdl.NB{2, true}, vdl.NB{3, true}),
@@ -125,8 +119,6 @@
 		vdl.MapNumBoolValue(vdl.MapInt64BoolTypeN, vdl.NB{1, true}, vdl.NB{2, true}, vdl.NB{3, true}),
 		vdl.MapNumBoolValue(vdl.MapFloat64BoolType, vdl.NB{1, true}, vdl.NB{2, true}, vdl.NB{3, true}),
 		vdl.MapNumBoolValue(vdl.MapFloat64BoolTypeN, vdl.NB{1, true}, vdl.NB{2, true}, vdl.NB{3, true}),
-		vdl.MapNumBoolValue(vdl.MapComplex64BoolType, vdl.NB{1, true}, vdl.NB{2, true}, vdl.NB{3, true}),
-		vdl.MapNumBoolValue(vdl.MapComplex64BoolTypeN, vdl.NB{1, true}, vdl.NB{2, true}, vdl.NB{3, true}),
 	}
 	vvSetMap123       = append(vvSet123, vvMap123True...)
 	vvMap123FalseTrue = []*vdl.Value{
@@ -138,8 +130,6 @@
 		vdl.MapNumBoolValue(vdl.MapInt64BoolTypeN, vdl.NB{1, false}, vdl.NB{2, true}, vdl.NB{3, false}),
 		vdl.MapNumBoolValue(vdl.MapFloat64BoolType, vdl.NB{1, false}, vdl.NB{2, true}, vdl.NB{3, false}),
 		vdl.MapNumBoolValue(vdl.MapFloat64BoolTypeN, vdl.NB{1, false}, vdl.NB{2, true}, vdl.NB{3, false}),
-		vdl.MapNumBoolValue(vdl.MapComplex64BoolType, vdl.NB{1, false}, vdl.NB{2, true}, vdl.NB{3, false}),
-		vdl.MapNumBoolValue(vdl.MapComplex64BoolTypeN, vdl.NB{1, false}, vdl.NB{2, true}, vdl.NB{3, false}),
 	}
 	vvSetXYZ = []*vdl.Value{
 		vdl.SetStringValue(vdl.SetStringType, "X", "Y", "Z"),
@@ -178,8 +168,6 @@
 		vdl.MapStringNumValue(vdl.MapStringInt64TypeN, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
 		vdl.MapStringNumValue(vdl.MapStringFloat64Type, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
 		vdl.MapStringNumValue(vdl.MapStringFloat64TypeN, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
-		vdl.MapStringNumValue(vdl.MapStringComplex64Type, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
-		vdl.MapStringNumValue(vdl.MapStringComplex64TypeN, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
 	}
 	vvStructVWX123 = []*vdl.Value{
 		vdl.StructNumValue(vdl.StructVWXByteType, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
@@ -190,8 +178,6 @@
 		vdl.StructNumValue(vdl.StructVWXInt64TypeN, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
 		vdl.StructNumValue(vdl.StructVWXFloat64Type, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
 		vdl.StructNumValue(vdl.StructVWXFloat64TypeN, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
-		vdl.StructNumValue(vdl.StructVWXComplex64Type, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
-		vdl.StructNumValue(vdl.StructVWXComplex64TypeN, vdl.SN{"V", 1}, vdl.SN{"W", 2}, vdl.SN{"X", 3}),
 	}
 	vvMapStructVWX123 = append(vvMapVWX123, vvStructVWX123...)
 	vvStructUV01      = []*vdl.Value{
@@ -203,8 +189,6 @@
 		vdl.StructNumValue(vdl.StructUVInt64TypeN, vdl.SN{"U", 0}, vdl.SN{"V", 1}),
 		vdl.StructNumValue(vdl.StructUVFloat64Type, vdl.SN{"U", 0}, vdl.SN{"V", 1}),
 		vdl.StructNumValue(vdl.StructUVFloat64TypeN, vdl.SN{"U", 0}, vdl.SN{"V", 1}),
-		vdl.StructNumValue(vdl.StructUVComplex64Type, vdl.SN{"U", 0}, vdl.SN{"V", 1}),
-		vdl.StructNumValue(vdl.StructUVComplex64TypeN, vdl.SN{"U", 0}, vdl.SN{"V", 1}),
 	}
 
 	rvBoolTrue = []interface{}{
@@ -221,31 +205,26 @@
 		[3]uint64{1, 2, 3}, []uint64{1, 2, 3}, vdl.NArray3Uint64{1, 2, 3}, vdl.NSliceUint64{1, 2, 3},
 		[3]int64{1, 2, 3}, []int64{1, 2, 3}, vdl.NArray3Int64{1, 2, 3}, vdl.NSliceInt64{1, 2, 3},
 		[3]float64{1, 2, 3}, []float64{1, 2, 3}, vdl.NArray3Float64{1, 2, 3}, vdl.NSliceFloat64{1, 2, 3},
-		[3]complex64{1, 2, 3}, []complex64{1, 2, 3}, vdl.NArray3Complex64{1, 2, 3}, vdl.NSliceComplex64{1, 2, 3},
 	}
 	rvSet123 = []interface{}{
 		map[byte]struct{}{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		map[uint64]struct{}{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		map[int64]struct{}{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		map[float64]struct{}{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
-		map[complex64]struct{}{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		vdl.NMapByteEmpty{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		vdl.NMapUint64Empty{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		vdl.NMapInt64Empty{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 		vdl.NMapFloat64Empty{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
-		vdl.NMapComplex64Empty{1: struct{}{}, 2: struct{}{}, 3: struct{}{}},
 	}
 	rvMap123True = []interface{}{
 		map[byte]bool{1: true, 2: true, 3: true},
 		map[uint64]bool{1: true, 2: true, 3: true},
 		map[int64]bool{1: true, 2: true, 3: true},
 		map[float64]bool{1: true, 2: true, 3: true},
-		map[complex64]bool{1: true, 2: true, 3: true},
 		vdl.NMapByteBool{1: true, 2: true, 3: true},
 		vdl.NMapUint64Bool{1: true, 2: true, 3: true},
 		vdl.NMapInt64Bool{1: true, 2: true, 3: true},
 		vdl.NMapFloat64Bool{1: true, 2: true, 3: true},
-		vdl.NMapComplex64Bool{1: true, 2: true, 3: true},
 	}
 	rvSetMap123       = append(rvSet123, rvMap123True...)
 	rvMap123FalseTrue = []interface{}{
@@ -253,12 +232,10 @@
 		map[uint64]bool{1: false, 2: true, 3: false},
 		map[int64]bool{1: false, 2: true, 3: false},
 		map[float64]bool{1: false, 2: true, 3: false},
-		map[complex64]bool{1: false, 2: true, 3: false},
 		vdl.NMapByteBool{1: false, 2: true, 3: false},
 		vdl.NMapUint64Bool{1: false, 2: true, 3: false},
 		vdl.NMapInt64Bool{1: false, 2: true, 3: false},
 		vdl.NMapFloat64Bool{1: false, 2: true, 3: false},
-		vdl.NMapComplex64Bool{1: false, 2: true, 3: false},
 	}
 	rvSetXYZ = []interface{}{
 		map[string]struct{}{"X": struct{}{}, "Y": struct{}{}, "Z": struct{}{}},
@@ -297,34 +274,30 @@
 		map[string]uint64{"V": 1, "W": 2, "X": 3},
 		map[string]int64{"V": 1, "W": 2, "X": 3},
 		map[string]float64{"V": 1, "W": 2, "X": 3},
-		map[string]complex64{"V": 1, "W": 2, "X": 3},
 		vdl.NMapStringByte{"V": 1, "W": 2, "X": 3},
 		vdl.NMapStringUint64{"V": 1, "W": 2, "X": 3},
 		vdl.NMapStringInt64{"V": 1, "W": 2, "X": 3},
 		vdl.NMapStringFloat64{"V": 1, "W": 2, "X": 3},
-		vdl.NMapStringComplex64{"V": 1, "W": 2, "X": 3},
 	}
 	rvStructVWX123 = []interface{}{
 		struct{ V, W, X byte }{V: 1, W: 2, X: 3},
 		struct{ V, W, X uint64 }{V: 1, W: 2, X: 3},
 		struct{ V, W, X int64 }{V: 1, W: 2, X: 3},
 		struct{ V, W, X float64 }{V: 1, W: 2, X: 3},
-		struct{ V, W, X complex64 }{V: 1, W: 2, X: 3},
 		struct {
 			// Interleave unexported fields, which are ignored.
 			a bool
 			V int64
 			b string
 			W float64
+			X float32
 			c []byte
-			X complex64
 			d interface{}
 		}{V: 1, W: 2, X: 3},
 		vdl.NStructVWXByte{V: 1, W: 2, X: 3},
 		vdl.NStructVWXUint64{V: 1, W: 2, X: 3},
 		vdl.NStructVWXInt64{V: 1, W: 2, X: 3},
 		vdl.NStructVWXFloat64{V: 1, W: 2, X: 3},
-		vdl.NStructVWXComplex64{V: 1, W: 2, X: 3},
 		vdl.NStructVWXMixed{V: 1, W: 2, X: 3},
 	}
 	rvMapStructVWX123 = append(rvMapVWX123, rvStructVWX123...)
@@ -333,7 +306,6 @@
 		struct{ U, V uint64 }{U: 0, V: 1},
 		struct{ U, V int64 }{U: 0, V: 1},
 		struct{ U, V float64 }{U: 0, V: 1},
-		struct{ U, V complex64 }{U: 0, V: 1},
 		struct {
 			// Interleave unexported fields, which are ignored.
 			a bool
@@ -346,7 +318,6 @@
 		vdl.NStructUVUint64{U: 0, V: 1},
 		vdl.NStructUVInt64{U: 0, V: 1},
 		vdl.NStructUVFloat64{U: 0, V: 1},
-		vdl.NStructUVComplex64{U: 0, V: 1},
 		vdl.NStructUVMixed{U: 0, V: 1},
 	}
 	rvEmptyStruct = []interface{}{struct{}{}, vdl.NEmpty{}}
@@ -378,15 +349,12 @@
 		vdl.Int32Type, vdl.Int32TypeN,
 		vdl.Int64Type, vdl.Int64TypeN,
 	}
-	ttFloat32s    = []*vdl.Type{vdl.Float32Type, vdl.Float32TypeN}
-	ttFloat64s    = []*vdl.Type{vdl.Float64Type, vdl.Float64TypeN}
-	ttFloats      = ttJoin(ttFloat32s, ttFloat64s)
-	ttComplex64s  = []*vdl.Type{vdl.Complex64Type, vdl.Complex64TypeN}
-	ttComplex128s = []*vdl.Type{vdl.Complex128Type, vdl.Complex128TypeN}
-	ttComplexes   = ttJoin(ttComplex64s, ttComplex128s)
-	ttIntegers    = ttJoin(ttUints, ttInts)
-	ttNumbers     = ttJoin(ttIntegers, ttFloats, ttComplexes)
-	ttAllTypes    = ttJoin(ttBools, ttStrs, ttTypeObjects, ttNumbers, ttSeq123, ttSetMap123, ttSetMapStructXYZ, ttMapStructVWXNum)
+	ttFloat32s = []*vdl.Type{vdl.Float32Type, vdl.Float32TypeN}
+	ttFloat64s = []*vdl.Type{vdl.Float64Type, vdl.Float64TypeN}
+	ttFloats   = ttJoin(ttFloat32s, ttFloat64s)
+	ttIntegers = ttJoin(ttUints, ttInts)
+	ttNumbers  = ttJoin(ttIntegers, ttFloats)
+	ttAllTypes = ttJoin(ttBools, ttStrs, ttTypeObjects, ttNumbers, ttSeq123, ttSetMap123, ttSetMapStructXYZ, ttMapStructVWXNum)
 
 	rtBools           = rtTypes(rvBoolTrue)
 	rtStrs            = rtTypes(rvStrABC)
@@ -421,17 +389,10 @@
 	rtFloat64s = []reflect.Type{
 		reflect.TypeOf(float64(0)), reflect.TypeOf(vdl.NFloat64(0)),
 	}
-	rtFloats     = rtJoin(rtFloat32s, rtFloat64s)
-	rtComplex64s = []reflect.Type{
-		reflect.TypeOf(complex64(0)), reflect.TypeOf(vdl.NComplex64(0)),
-	}
-	rtComplex128s = []reflect.Type{
-		reflect.TypeOf(complex128(0)), reflect.TypeOf(vdl.NComplex128(0)),
-	}
-	rtComplexes = rtJoin(rtComplex64s, rtComplex128s)
-	rtIntegers  = rtJoin(rtUints, rtInts)
-	rtNumbers   = rtJoin(rtIntegers, rtFloats, rtComplexes)
-	rtAllTypes  = rtJoin(rtBools, rtStrs, rtTypeObjects, rtNumbers, rtSeq123, rtSetMap123, rtSetMapStructXYZ, rtMapStructVWXNum)
+	rtFloats   = rtJoin(rtFloat32s, rtFloat64s)
+	rtIntegers = rtJoin(rtUints, rtInts)
+	rtNumbers  = rtJoin(rtIntegers, rtFloats)
+	rtAllTypes = rtJoin(rtBools, rtStrs, rtTypeObjects, rtNumbers, rtSeq123, rtSetMap123, rtSetMapStructXYZ, rtMapStructVWXNum)
 
 	rtInterface = reflect.TypeOf((*interface{})(nil)).Elem()
 	rtPtrToType = reflect.TypeOf((*vdl.Type)(nil))
@@ -547,7 +508,7 @@
 
 // vvFromUint returns all *Values that can represent u without loss of precision.
 func vvFromUint(u uint64) (result []*vdl.Value) {
-	i, f, c := int64(u), float64(u), complex(float64(u), 0)
+	i, f := int64(u), float64(u)
 	switch {
 	case u <= math.MaxInt8:
 		result = append(result,
@@ -573,9 +534,6 @@
 		result = append(result,
 			vdl.ZeroValue(vdl.Float32Type).AssignFloat(f),
 			vdl.ZeroValue(vdl.Float32TypeN).AssignFloat(f))
-		result = append(result,
-			vdl.ZeroValue(vdl.Complex64Type).AssignComplex(c),
-			vdl.ZeroValue(vdl.Complex64TypeN).AssignComplex(c))
 		fallthrough
 	case u <= math.MaxInt32:
 		result = append(result,
@@ -591,9 +549,6 @@
 		result = append(result,
 			vdl.ZeroValue(vdl.Float64Type).AssignFloat(f),
 			vdl.ZeroValue(vdl.Float64TypeN).AssignFloat(f))
-		result = append(result,
-			vdl.ZeroValue(vdl.Complex128Type).AssignComplex(c),
-			vdl.ZeroValue(vdl.Complex128TypeN).AssignComplex(c))
 		fallthrough
 	case u <= math.MaxInt64:
 		result = append(result,
@@ -610,7 +565,6 @@
 
 // rvFromUint returns all values that can represent u without loss of precision.
 func rvFromUint(u uint64) (result []interface{}) {
-	c64, c128 := complex(float32(u), 0), complex(float64(u), 0)
 	switch {
 	case u <= math.MaxInt8:
 		result = append(result, int8(u), vdl.NInt8(u))
@@ -626,7 +580,6 @@
 		fallthrough
 	case u <= 1<<24:
 		result = append(result, float32(u), vdl.NFloat32(u))
-		result = append(result, c64, vdl.NComplex64(c64))
 		fallthrough
 	case u <= math.MaxInt32:
 		result = append(result, int32(u), vdl.NInt32(u))
@@ -636,7 +589,6 @@
 		fallthrough
 	case u <= 1<<53:
 		result = append(result, float64(u), vdl.NFloat64(u))
-		result = append(result, c128, vdl.NComplex128(c128))
 		fallthrough
 	case u <= math.MaxInt64:
 		result = append(result, int64(u), vdl.NInt64(u))
@@ -649,7 +601,7 @@
 
 // vvFromInt returns all *Values that can represent i without loss of precision.
 func vvFromInt(i int64) (result []*vdl.Value) {
-	u, f, c := uint64(i), float64(i), complex(float64(i), 0)
+	u, f := uint64(i), float64(i)
 	switch {
 	case math.MinInt8 <= i && i <= math.MaxInt8:
 		result = append(result,
@@ -665,9 +617,6 @@
 		result = append(result,
 			vdl.ZeroValue(vdl.Float32Type).AssignFloat(f),
 			vdl.ZeroValue(vdl.Float32TypeN).AssignFloat(f))
-		result = append(result,
-			vdl.ZeroValue(vdl.Complex64Type).AssignComplex(c),
-			vdl.ZeroValue(vdl.Complex64TypeN).AssignComplex(c))
 		fallthrough
 	case math.MinInt32 <= i && i <= math.MaxInt32:
 		result = append(result,
@@ -678,9 +627,6 @@
 		result = append(result,
 			vdl.ZeroValue(vdl.Float64Type).AssignFloat(f),
 			vdl.ZeroValue(vdl.Float64TypeN).AssignFloat(f))
-		result = append(result,
-			vdl.ZeroValue(vdl.Complex128Type).AssignComplex(c),
-			vdl.ZeroValue(vdl.Complex128TypeN).AssignComplex(c))
 		fallthrough
 	default:
 		result = append(result,
@@ -716,7 +662,6 @@
 
 // rvFromInt returns all values that can represent i without loss of precision.
 func rvFromInt(i int64) (result []interface{}) {
-	c64, c128 := complex(float32(i), 0), complex(float64(i), 0)
 	switch {
 	case math.MinInt8 <= i && i <= math.MaxInt8:
 		result = append(result, int8(i), vdl.NInt8(i))
@@ -726,14 +671,12 @@
 		fallthrough
 	case -1<<24 <= i && i <= 1<<24:
 		result = append(result, float32(i), vdl.NFloat32(i))
-		result = append(result, c64, vdl.NComplex64(c64))
 		fallthrough
 	case math.MinInt32 <= i && i <= math.MaxInt32:
 		result = append(result, int32(i), vdl.NInt32(i))
 		fallthrough
 	case -1<<53 <= i && i <= 1<<53:
 		result = append(result, float64(i), vdl.NFloat64(i))
-		result = append(result, c128, vdl.NComplex128(c128))
 		fallthrough
 	default:
 		result = append(result, int64(i), vdl.NInt64(i))
@@ -758,43 +701,18 @@
 }
 
 func vvFloat(f float64) []*vdl.Value {
-	c := complex(f, 0)
 	return []*vdl.Value{
 		vdl.ZeroValue(vdl.Float32Type).AssignFloat(f),
 		vdl.ZeroValue(vdl.Float32TypeN).AssignFloat(f),
 		vdl.ZeroValue(vdl.Float64Type).AssignFloat(f),
 		vdl.ZeroValue(vdl.Float64TypeN).AssignFloat(f),
-		vdl.ZeroValue(vdl.Complex64Type).AssignComplex(c),
-		vdl.ZeroValue(vdl.Complex64TypeN).AssignComplex(c),
-		vdl.ZeroValue(vdl.Complex128Type).AssignComplex(c),
-		vdl.ZeroValue(vdl.Complex128TypeN).AssignComplex(c),
-	}
-}
-
-func vvComplex(c complex128) []*vdl.Value {
-	return []*vdl.Value{
-		vdl.ZeroValue(vdl.Complex64Type).AssignComplex(c),
-		vdl.ZeroValue(vdl.Complex64TypeN).AssignComplex(c),
-		vdl.ZeroValue(vdl.Complex128Type).AssignComplex(c),
-		vdl.ZeroValue(vdl.Complex128TypeN).AssignComplex(c),
 	}
 }
 
 func rvFloat(f float64) []interface{} {
-	c64, c128 := complex(float32(f), 0), complex(f, 0)
 	return []interface{}{
 		float32(f), vdl.NFloat32(f),
 		float64(f), vdl.NFloat64(f),
-		c64, vdl.NComplex64(c64),
-		c128, vdl.NComplex128(c128),
-	}
-}
-
-func rvComplex(c128 complex128) []interface{} {
-	c64 := complex64(c128)
-	return []interface{}{
-		c64, vdl.NComplex64(c64),
-		c128, vdl.NComplex128(c128),
 	}
 }
 
@@ -1292,24 +1210,22 @@
 			vvFromInt(math.MinInt32 - 1),
 			rvFromInt(math.MinInt32 - 1)},
 		// Test int to float max bound.
-		{ttJoin(ttFloat32s, ttComplex64s), rtJoin(rtFloat32s, rtComplex64s),
+		{ttJoin(ttFloat32s), rtJoin(rtFloat32s),
 			vvOnlyFrom(vvFromInt(vdl.Float32MaxInt+1), ttIntegers),
 			rvOnlyFrom(rvFromInt(vdl.Float32MaxInt+1), rtIntegers)},
-		{ttJoin(ttFloat64s, ttComplex128s), rtJoin(rtFloat64s, rtComplex128s),
+		{ttJoin(ttFloat64s), rtJoin(rtFloat64s),
 			vvOnlyFrom(vvFromInt(vdl.Float64MaxInt+1), ttIntegers),
 			rvOnlyFrom(rvFromInt(vdl.Float64MaxInt+1), rtIntegers)},
 		// Test int to float min bound.
-		{ttJoin(ttFloat32s, ttComplex64s), rtJoin(rtFloat32s, rtComplex64s),
+		{ttJoin(ttFloat32s), rtJoin(rtFloat32s),
 			vvOnlyFrom(vvFromInt(vdl.Float32MinInt-1), ttIntegers),
 			rvOnlyFrom(rvFromInt(vdl.Float32MinInt-1), rtIntegers)},
-		{ttJoin(ttFloat64s, ttComplex128s), rtJoin(rtFloat64s, rtComplex128s),
+		{ttJoin(ttFloat64s), rtJoin(rtFloat64s),
 			vvOnlyFrom(vvFromInt(vdl.Float64MinInt-1), ttIntegers),
 			rvOnlyFrom(rvFromInt(vdl.Float64MinInt-1), rtIntegers)},
-		// Test negative uints, fractional integers, imaginary non-complex numbers.
+		// Test negative uints, fractional integers.
 		{ttUints, rtUints, vvFromInt(-1), rvFromInt(-1)},
 		{ttIntegers, rtIntegers, vvFloat(1.5), rvFloat(1.5)},
-		{ttOtherThan(ttNumbers, ttComplexes), rtOtherThan(rtNumbers, rtComplexes),
-			vvComplex(1 + 2i), rvComplex(1 + 2i)},
 	}
 	for _, test := range tests {
 		for _, ttDst := range test.ttDst {
diff --git a/vdl/primitive_target.go b/vdl/primitive_target.go
index 14645a9..0c24ec6 100644
--- a/vdl/primitive_target.go
+++ b/vdl/primitive_target.go
@@ -49,13 +49,6 @@
 	*t.Value, err = vdlconv.Float64ToUint8(src)
 	return
 }
-func (t *ByteTarget) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, ByteType) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, ByteType)
-	}
-	*t.Value, err = vdlconv.Complex128ToUint8(src)
-	return
-}
 
 type Uint16Target struct {
 	Value *uint16
@@ -83,13 +76,6 @@
 	*t.Value, err = vdlconv.Float64ToUint16(src)
 	return
 }
-func (t *Uint16Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Uint16Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Uint16Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToUint16(src)
-	return
-}
 
 type Uint32Target struct {
 	Value *uint32
@@ -117,13 +103,6 @@
 	*t.Value, err = vdlconv.Float64ToUint32(src)
 	return
 }
-func (t *Uint32Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Uint32Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Uint32Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToUint32(src)
-	return
-}
 
 type Uint64Target struct {
 	Value *uint64
@@ -151,13 +130,6 @@
 	*t.Value, err = vdlconv.Float64ToUint64(src)
 	return
 }
-func (t *Uint64Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Uint64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Uint64Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToUint64(src)
-	return
-}
 
 type Int8Target struct {
 	Value *int8
@@ -185,13 +157,6 @@
 	*t.Value, err = vdlconv.Float64ToInt8(src)
 	return
 }
-func (t *Int8Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Int8Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int8Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToInt8(src)
-	return
-}
 
 type Int16Target struct {
 	Value *int16
@@ -219,13 +184,6 @@
 	*t.Value, err = vdlconv.Float64ToInt16(src)
 	return
 }
-func (t *Int16Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Int16Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int16Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToInt16(src)
-	return
-}
 
 type Int32Target struct {
 	Value *int32
@@ -253,13 +211,6 @@
 	*t.Value, err = vdlconv.Float64ToInt32(src)
 	return
 }
-func (t *Int32Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Int32Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int32Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToInt32(src)
-	return
-}
 
 type Int64Target struct {
 	Value *int64
@@ -287,13 +238,6 @@
 	*t.Value, err = vdlconv.Float64ToInt64(src)
 	return
 }
-func (t *Int64Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Int64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int64Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToInt64(src)
-	return
-}
 
 type Float32Target struct {
 	Value *float32
@@ -321,13 +265,6 @@
 	*t.Value, err = vdlconv.Float64ToFloat32(src)
 	return
 }
-func (t *Float32Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Float32Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Float32Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToFloat32(src)
-	return
-}
 
 type Float64Target struct {
 	Value *float64
@@ -355,81 +292,6 @@
 	*t.Value = src
 	return
 }
-func (t *Float64Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Float64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Float64Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToFloat64(src)
-	return
-}
-
-type Complex64Target struct {
-	Value *complex64
-	TargetBase
-}
-
-func (t *Complex64Target) FromUint(src uint64, tt *Type) (err error) {
-	if !Compatible(tt, Complex64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex64Type)
-	}
-	*t.Value, err = vdlconv.Uint64ToComplex64(src)
-	return
-}
-func (t *Complex64Target) FromInt(src int64, tt *Type) (err error) {
-	if !Compatible(tt, Complex64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex64Type)
-	}
-	*t.Value, err = vdlconv.Int64ToComplex64(src)
-	return
-}
-func (t *Complex64Target) FromFloat(src float64, tt *Type) (err error) {
-	if !Compatible(tt, Complex64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex64Type)
-	}
-	*t.Value, err = vdlconv.Float64ToComplex64(src)
-	return
-}
-func (t *Complex64Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Complex64Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex64Type)
-	}
-	*t.Value, err = vdlconv.Complex128ToComplex64(src)
-	return
-}
-
-type Complex128Target struct {
-	Value *complex128
-	TargetBase
-}
-
-func (t *Complex128Target) FromUint(src uint64, tt *Type) (err error) {
-	if !Compatible(tt, Complex128Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex128Type)
-	}
-	*t.Value, err = vdlconv.Uint64ToComplex128(src)
-	return
-}
-func (t *Complex128Target) FromInt(src int64, tt *Type) (err error) {
-	if !Compatible(tt, Complex128Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex128Type)
-	}
-	*t.Value, err = vdlconv.Int64ToComplex128(src)
-	return
-}
-func (t *Complex128Target) FromFloat(src float64, tt *Type) (err error) {
-	if !Compatible(tt, Complex128Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex128Type)
-	}
-	*t.Value, err = vdlconv.Float64ToComplex128(src)
-	return
-}
-func (t *Complex128Target) FromComplex(src complex128, tt *Type) (err error) {
-	if !Compatible(tt, Complex128Type) {
-		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Complex128Type)
-	}
-	*t.Value = src
-	return
-}
 
 type StringTarget struct {
 	Value *string
diff --git a/vdl/reflect_type.go b/vdl/reflect_type.go
index 3df6d27..cb04ab4 100644
--- a/vdl/reflect_type.go
+++ b/vdl/reflect_type.go
@@ -426,8 +426,6 @@
 	rtInt64              = reflect.TypeOf(int64(0))
 	rtFloat32            = reflect.TypeOf(float32(0))
 	rtFloat64            = reflect.TypeOf(float64(0))
-	rtComplex64          = reflect.TypeOf(complex64(0))
-	rtComplex128         = reflect.TypeOf(complex128(0))
 	rtString             = reflect.TypeOf("")
 	rtError              = reflect.TypeOf((*error)(nil)).Elem()
 	rtWireError          = reflect.TypeOf(WireError{})
@@ -440,23 +438,21 @@
 	rtUnnamedEmptyStruct = reflect.TypeOf(struct{}{})
 
 	typeFromRTKind = [...]*Type{
-		reflect.Bool:       BoolType,
-		reflect.Uint8:      ByteType,
-		reflect.Uint16:     Uint16Type,
-		reflect.Uint32:     Uint32Type,
-		reflect.Uint64:     Uint64Type,
-		reflect.Uint:       uintType(8 * unsafe.Sizeof(uint(0))),
-		reflect.Uintptr:    uintType(8 * unsafe.Sizeof(uintptr(0))),
-		reflect.Int8:       Int8Type,
-		reflect.Int16:      Int16Type,
-		reflect.Int32:      Int32Type,
-		reflect.Int64:      Int64Type,
-		reflect.Int:        intType(8 * unsafe.Sizeof(int(0))),
-		reflect.Float32:    Float32Type,
-		reflect.Float64:    Float64Type,
-		reflect.Complex64:  Complex64Type,
-		reflect.Complex128: Complex128Type,
-		reflect.String:     StringType,
+		reflect.Bool:    BoolType,
+		reflect.Uint8:   ByteType,
+		reflect.Uint16:  Uint16Type,
+		reflect.Uint32:  Uint32Type,
+		reflect.Uint64:  Uint64Type,
+		reflect.Uint:    uintType(8 * unsafe.Sizeof(uint(0))),
+		reflect.Uintptr: uintType(8 * unsafe.Sizeof(uintptr(0))),
+		reflect.Int8:    Int8Type,
+		reflect.Int16:   Int16Type,
+		reflect.Int32:   Int32Type,
+		reflect.Int64:   Int64Type,
+		reflect.Int:     intType(8 * unsafe.Sizeof(int(0))),
+		reflect.Float32: Float32Type,
+		reflect.Float64: Float64Type,
+		reflect.String:  StringType,
 	}
 )
 
diff --git a/vdl/reflect_type_test.go b/vdl/reflect_type_test.go
index 3fe71e3..0488b01 100644
--- a/vdl/reflect_type_test.go
+++ b/vdl/reflect_type_test.go
@@ -35,8 +35,6 @@
 	{reflect.TypeOf(int(0)), testIntType()},
 	{reflect.TypeOf(float32(0)), Float32Type},
 	{reflect.TypeOf(float64(0)), Float64Type},
-	{reflect.TypeOf(complex64(0)), Complex64Type},
-	{reflect.TypeOf(complex128(0)), Complex128Type},
 	{reflect.TypeOf(string("")), StringType},
 	// Named scalars
 	{reflect.TypeOf(NBool(false)), NameN("Bool", BoolType)},
@@ -53,8 +51,6 @@
 	{reflect.TypeOf(NInt(0)), NameN("Int", testIntType())},
 	{reflect.TypeOf(NFloat32(0)), NameN("Float32", Float32Type)},
 	{reflect.TypeOf(NFloat64(0)), NameN("Float64", Float64Type)},
-	{reflect.TypeOf(NComplex64(0)), NameN("Complex64", Complex64Type)},
-	{reflect.TypeOf(NComplex128(0)), NameN("Complex128", Complex128Type)},
 	{reflect.TypeOf(NString("")), NameN("String", StringType)},
 	// Unnamed arrays
 	{reflect.TypeOf([3]bool{}), ArrayType(3, BoolType)},
@@ -71,8 +67,6 @@
 	{reflect.TypeOf([3]int{}), ArrayType(3, testIntType())},
 	{reflect.TypeOf([3]float32{}), ArrayType(3, Float32Type)},
 	{reflect.TypeOf([3]float64{}), ArrayType(3, Float64Type)},
-	{reflect.TypeOf([3]complex64{}), ArrayType(3, Complex64Type)},
-	{reflect.TypeOf([3]complex128{}), ArrayType(3, Complex128Type)},
 	{reflect.TypeOf([3]string{}), ArrayType(3, StringType)},
 	// Named arrays
 	{reflect.TypeOf(NArray3Bool{}), NameNArray("Bool", BoolType)},
@@ -89,8 +83,6 @@
 	{reflect.TypeOf(NArray3Int{}), NameNArray("Int", testIntType())},
 	{reflect.TypeOf(NArray3Float32{}), NameNArray("Float32", Float32Type)},
 	{reflect.TypeOf(NArray3Float64{}), NameNArray("Float64", Float64Type)},
-	{reflect.TypeOf(NArray3Complex64{}), NameNArray("Complex64", Complex64Type)},
-	{reflect.TypeOf(NArray3Complex128{}), NameNArray("Complex128", Complex128Type)},
 	{reflect.TypeOf(NArray3String{}), NameNArray("String", StringType)},
 	// Unnamed structs
 	{reflect.TypeOf(struct{ X bool }{}), StructType(Field{"X", BoolType})},
@@ -107,8 +99,6 @@
 	{reflect.TypeOf(struct{ X int }{}), StructType(Field{"X", testIntType()})},
 	{reflect.TypeOf(struct{ X float32 }{}), StructType(Field{"X", Float32Type})},
 	{reflect.TypeOf(struct{ X float64 }{}), StructType(Field{"X", Float64Type})},
-	{reflect.TypeOf(struct{ X complex64 }{}), StructType(Field{"X", Complex64Type})},
-	{reflect.TypeOf(struct{ X complex128 }{}), StructType(Field{"X", Complex128Type})},
 	{reflect.TypeOf(struct{ X string }{}), StructType(Field{"X", StringType})},
 	// Named structs
 	{reflect.TypeOf(NStructBool{}), NameNStruct("Bool", BoolType)},
@@ -125,8 +115,6 @@
 	{reflect.TypeOf(NStructInt{}), NameNStruct("Int", testIntType())},
 	{reflect.TypeOf(NStructFloat32{}), NameNStruct("Float32", Float32Type)},
 	{reflect.TypeOf(NStructFloat64{}), NameNStruct("Float64", Float64Type)},
-	{reflect.TypeOf(NStructComplex64{}), NameNStruct("Complex64", Complex64Type)},
-	{reflect.TypeOf(NStructComplex128{}), NameNStruct("Complex128", Complex128Type)},
 	{reflect.TypeOf(NStructString{}), NameNStruct("String", StringType)},
 	// Special-case types
 	{reflect.TypeOf(NEnum(0)), NameN("Enum", EnumType("A", "B", "C", "ABC"))},
@@ -185,8 +173,6 @@
 	{reflect.TypeOf([]int{}), ListType(testIntType())},
 	{reflect.TypeOf([]float32{}), ListType(Float32Type)},
 	{reflect.TypeOf([]float64{}), ListType(Float64Type)},
-	{reflect.TypeOf([]complex64{}), ListType(Complex64Type)},
-	{reflect.TypeOf([]complex128{}), ListType(Complex128Type)},
 	{reflect.TypeOf([]string{}), ListType(StringType)},
 	// Named slices
 	{reflect.TypeOf(NSliceInterface{}), NameNSlice("Interface", AnyType)},
@@ -205,8 +191,6 @@
 	{reflect.TypeOf(NSliceInt{}), NameNSlice("Int", testIntType())},
 	{reflect.TypeOf(NSliceFloat32{}), NameNSlice("Float32", Float32Type)},
 	{reflect.TypeOf(NSliceFloat64{}), NameNSlice("Float64", Float64Type)},
-	{reflect.TypeOf(NSliceComplex64{}), NameNSlice("Complex64", Complex64Type)},
-	{reflect.TypeOf(NSliceComplex128{}), NameNSlice("Complex128", Complex128Type)},
 	{reflect.TypeOf(NSliceString{}), NameNSlice("String", StringType)},
 	// Unnamed sets
 	{reflect.TypeOf(map[bool]struct{}{}), rtSet(BoolType)},
@@ -223,8 +207,6 @@
 	{reflect.TypeOf(map[int]struct{}{}), rtSet(testIntType())},
 	{reflect.TypeOf(map[float32]struct{}{}), rtSet(Float32Type)},
 	{reflect.TypeOf(map[float64]struct{}{}), rtSet(Float64Type)},
-	{reflect.TypeOf(map[complex64]struct{}{}), rtSet(Complex64Type)},
-	{reflect.TypeOf(map[complex128]struct{}{}), rtSet(Complex128Type)},
 	{reflect.TypeOf(map[string]struct{}{}), rtSet(StringType)},
 	// Named sets
 	{reflect.TypeOf(NSetBool{}), NameNSet("Bool", BoolType)},
@@ -241,8 +223,6 @@
 	{reflect.TypeOf(NSetInt{}), NameNSet("Int", testIntType())},
 	{reflect.TypeOf(NSetFloat32{}), NameNSet("Float32", Float32Type)},
 	{reflect.TypeOf(NSetFloat64{}), NameNSet("Float64", Float64Type)},
-	{reflect.TypeOf(NSetComplex64{}), NameNSet("Complex64", Complex64Type)},
-	{reflect.TypeOf(NSetComplex128{}), NameNSet("Complex128", Complex128Type)},
 	{reflect.TypeOf(NSetString{}), NameNSet("String", StringType)},
 	// Unnamed maps
 	{reflect.TypeOf(map[bool]bool{}), rtMap(BoolType)},
@@ -259,8 +239,6 @@
 	{reflect.TypeOf(map[int]int{}), rtMap(testIntType())},
 	{reflect.TypeOf(map[float32]float32{}), rtMap(Float32Type)},
 	{reflect.TypeOf(map[float64]float64{}), rtMap(Float64Type)},
-	{reflect.TypeOf(map[complex64]complex64{}), rtMap(Complex64Type)},
-	{reflect.TypeOf(map[complex128]complex128{}), rtMap(Complex128Type)},
 	{reflect.TypeOf(map[string]string{}), rtMap(StringType)},
 	// Named maps
 	{reflect.TypeOf(NMapBool{}), NameNMap("Bool", BoolType)},
@@ -277,8 +255,6 @@
 	{reflect.TypeOf(NMapInt{}), NameNMap("Int", testIntType())},
 	{reflect.TypeOf(NMapFloat32{}), NameNMap("Float32", Float32Type)},
 	{reflect.TypeOf(NMapFloat64{}), NameNMap("Float64", Float64Type)},
-	{reflect.TypeOf(NMapComplex64{}), NameNMap("Complex64", Complex64Type)},
-	{reflect.TypeOf(NMapComplex128{}), NameNMap("Complex128", Complex128Type)},
 	{reflect.TypeOf(NMapString{}), NameNMap("String", StringType)},
 	// Recursive types
 	{reflect.TypeOf(NRecurseSelf{}), RecurseSelfType()},
diff --git a/vdl/register.go b/vdl/register.go
index e78acac..e02ed46 100644
--- a/vdl/register.go
+++ b/vdl/register.go
@@ -423,8 +423,6 @@
 	Int64:      rtInt64,
 	Float32:    rtFloat32,
 	Float64:    rtFloat64,
-	Complex64:  rtComplex64,
-	Complex128: rtComplex128,
 	String:     rtString,
 	TypeObject: rtPtrToType,
 }
diff --git a/vdl/target.go b/vdl/target.go
index 1446a0b..2694b61 100644
--- a/vdl/target.go
+++ b/vdl/target.go
@@ -28,9 +28,6 @@
 	// FromFloat converts from the src float to the target, where tt represents
 	// the concrete type of float.
 	FromFloat(src float64, tt *Type) error
-	// FromComplex converts from the src complex to the target, where tt
-	// represents the concrete type of complex.
-	FromComplex(src complex128, tt *Type) error
 	// FromBytes converts from the src bytes to the target, where tt represents
 	// the concrete type of bytes.
 	FromBytes(src []byte, tt *Type) error
@@ -314,8 +311,6 @@
 		return target.FromInt(rv.Int(), ttFrom)
 	case reflect.Float32, reflect.Float64:
 		return target.FromFloat(rv.Float(), ttFrom)
-	case reflect.Complex64, reflect.Complex128:
-		return target.FromComplex(rv.Complex(), ttFrom)
 	case reflect.String:
 		return target.FromString(rv.String(), ttFrom)
 	case reflect.Array, reflect.Slice:
@@ -474,8 +469,6 @@
 		return target.FromInt(vv.Int(), tt)
 	case Float32, Float64:
 		return target.FromFloat(vv.Float(), tt)
-	case Complex64, Complex128:
-		return target.FromComplex(vv.Complex(), tt)
 	case String:
 		return target.FromString(vv.RawString(), tt)
 	case Enum:
diff --git a/vdl/testutil_test.go b/vdl/testutil_test.go
index 297f749..b74470d 100644
--- a/vdl/testutil_test.go
+++ b/vdl/testutil_test.go
@@ -70,25 +70,23 @@
 // Define a bunch of regular Go types used in tests.
 type (
 	// Scalars
-	NInterface  interface{}
-	NType       *Type
-	NBool       bool
-	NByte       byte
-	NUint16     uint16
-	NUint32     uint32
-	NUint64     uint64
-	NUint       uint
-	NUintptr    uintptr
-	NInt8       int8
-	NInt16      int16
-	NInt32      int32
-	NInt64      int64
-	NInt        int
-	NFloat32    float32
-	NFloat64    float64
-	NComplex64  complex64
-	NComplex128 complex128
-	NString     string
+	NInterface interface{}
+	NType      *Type
+	NBool      bool
+	NByte      byte
+	NUint16    uint16
+	NUint32    uint32
+	NUint64    uint64
+	NUint      uint
+	NUintptr   uintptr
+	NInt8      int8
+	NInt16     int16
+	NInt32     int32
+	NInt64     int64
+	NInt       int
+	NFloat32   float32
+	NFloat64   float64
+	NString    string
 	// Arrays
 	NArray3Interface  [3]NInterface
 	NArray3TypeObject [3]*Type
@@ -106,8 +104,6 @@
 	NArray3Int        [3]int
 	NArray3Float32    [3]float32
 	NArray3Float64    [3]float64
-	NArray3Complex64  [3]complex64
-	NArray3Complex128 [3]complex128
 	NArray3String     [3]string
 	// Structs
 	NStructInterface      struct{ X NInterface }
@@ -126,8 +122,6 @@
 	NStructInt            struct{ X int }
 	NStructFloat32        struct{ X float32 }
 	NStructFloat64        struct{ X float64 }
-	NStructComplex64      struct{ X complex64 }
-	NStructComplex128     struct{ X complex128 }
 	NStructString         struct{ X string }
 	NStructOptionalStruct struct{ X *NStructInt }
 	NStructOptionalAny    struct{ X interface{} }
@@ -148,8 +142,6 @@
 	NSliceInt        []int
 	NSliceFloat32    []float32
 	NSliceFloat64    []float64
-	NSliceComplex64  []complex64
-	NSliceComplex128 []complex128
 	NSliceString     []string
 	// Sets
 	NSetInterface  map[NInterface]struct{}
@@ -168,8 +160,6 @@
 	NSetInt        map[int]struct{}
 	NSetFloat32    map[float32]struct{}
 	NSetFloat64    map[float64]struct{}
-	NSetComplex64  map[complex64]struct{}
-	NSetComplex128 map[complex128]struct{}
 	NSetString     map[string]struct{}
 	// Maps
 	NMapInterface  map[NInterface]NInterface
@@ -188,8 +178,6 @@
 	NMapInt        map[int]int
 	NMapFloat32    map[float32]float32
 	NMapFloat64    map[float64]float64
-	NMapComplex64  map[complex64]complex64
-	NMapComplex128 map[complex128]complex128
 	NMapString     map[string]string
 	// Recursive types
 	NRecurseSelf struct{ X []NRecurseSelf }
@@ -197,16 +185,14 @@
 	NRecurseB    struct{ A []NRecurseA }
 
 	// Composite types representing sets of numbers.
-	NMapByteEmpty      map[NByte]struct{}
-	NMapUint64Empty    map[NUint64]struct{}
-	NMapInt64Empty     map[NUint64]struct{}
-	NMapFloat64Empty   map[NUint64]struct{}
-	NMapComplex64Empty map[NUint64]struct{}
-	NMapByteBool       map[NByte]NBool
-	NMapUint64Bool     map[NUint64]NBool
-	NMapInt64Bool      map[NInt64]NBool
-	NMapFloat64Bool    map[NFloat64]NBool
-	NMapComplex64Bool  map[NComplex64]NBool
+	NMapByteEmpty    map[NByte]struct{}
+	NMapUint64Empty  map[NUint64]struct{}
+	NMapInt64Empty   map[NUint64]struct{}
+	NMapFloat64Empty map[NUint64]struct{}
+	NMapByteBool     map[NByte]NBool
+	NMapUint64Bool   map[NUint64]NBool
+	NMapInt64Bool    map[NInt64]NBool
+	NMapFloat64Bool  map[NFloat64]NBool
 	// Composite types representing sets of strings.
 	NMapStringEmpty          map[NString]struct{}
 	NMapStringBool           map[NString]NBool
@@ -214,32 +200,29 @@
 	NStructXYZBoolUnexported struct{ a, X, b, Y, c, Z, d NBool }
 	NStructWXBool            struct{ W, X NBool }
 	// Composite types representing maps of strings to numbers.
-	NMapStringByte      map[NString]NByte
-	NMapStringUint64    map[NString]NUint64
-	NMapStringInt64     map[NString]NInt64
-	NMapStringFloat64   map[NString]NFloat64
-	NMapStringComplex64 map[NString]NComplex64
-	NStructVWXByte      struct{ V, W, X NByte }
-	NStructVWXUint64    struct{ V, W, X NUint64 }
-	NStructVWXInt64     struct{ V, W, X NInt64 }
-	NStructVWXFloat64   struct{ V, W, X NFloat64 }
-	NStructVWXComplex64 struct{ V, W, X NComplex64 }
-	NStructVWXMixed     struct {
+	NMapStringByte    map[NString]NByte
+	NMapStringUint64  map[NString]NUint64
+	NMapStringInt64   map[NString]NInt64
+	NMapStringFloat64 map[NString]NFloat64
+	NStructVWXByte    struct{ V, W, X NByte }
+	NStructVWXUint64  struct{ V, W, X NUint64 }
+	NStructVWXInt64   struct{ V, W, X NInt64 }
+	NStructVWXFloat64 struct{ V, W, X NFloat64 }
+	NStructVWXMixed   struct {
 		// Interleave unexported fields, which are ignored.
 		a bool
 		V int64
 		b string
 		W float64
+		X float32
 		c []byte
-		X complex64
 		d interface{}
 	}
-	NStructUVByte      struct{ U, V NByte }
-	NStructUVUint64    struct{ U, V NUint64 }
-	NStructUVInt64     struct{ U, V NInt64 }
-	NStructUVFloat64   struct{ U, V NFloat64 }
-	NStructUVComplex64 struct{ U, V NComplex64 }
-	NStructUVMixed     struct {
+	NStructUVByte    struct{ U, V NByte }
+	NStructUVUint64  struct{ U, V NUint64 }
+	NStructUVInt64   struct{ U, V NInt64 }
+	NStructUVFloat64 struct{ U, V NFloat64 }
+	NStructUVMixed   struct {
 		// Interleave unexported fields, which are ignored.
 		a bool
 		U int64
@@ -503,63 +486,53 @@
 // Define a bunch of *Type types used in tests.
 var (
 	// Named scalar types
-	BoolTypeN       = NamedType("NBool", BoolType)
-	ByteTypeN       = NamedType("NByte", ByteType)
-	Uint16TypeN     = NamedType("NUint16", Uint16Type)
-	Uint32TypeN     = NamedType("NUint32", Uint32Type)
-	Uint64TypeN     = NamedType("NUint64", Uint64Type)
-	Int8TypeN       = NamedType("NInt8", Int8Type)
-	Int16TypeN      = NamedType("NInt16", Int16Type)
-	Int32TypeN      = NamedType("NInt32", Int32Type)
-	Int64TypeN      = NamedType("NInt64", Int64Type)
-	Float32TypeN    = NamedType("NFloat32", Float32Type)
-	Float64TypeN    = NamedType("NFloat64", Float64Type)
-	Complex64TypeN  = NamedType("NComplex64", Complex64Type)
-	Complex128TypeN = NamedType("NComplex128", Complex128Type)
-	StringTypeN     = NamedType("NString", StringType)
+	BoolTypeN    = NamedType("NBool", BoolType)
+	ByteTypeN    = NamedType("NByte", ByteType)
+	Uint16TypeN  = NamedType("NUint16", Uint16Type)
+	Uint32TypeN  = NamedType("NUint32", Uint32Type)
+	Uint64TypeN  = NamedType("NUint64", Uint64Type)
+	Int8TypeN    = NamedType("NInt8", Int8Type)
+	Int16TypeN   = NamedType("NInt16", Int16Type)
+	Int32TypeN   = NamedType("NInt32", Int32Type)
+	Int64TypeN   = NamedType("NInt64", Int64Type)
+	Float32TypeN = NamedType("NFloat32", Float32Type)
+	Float64TypeN = NamedType("NFloat64", Float64Type)
+	StringTypeN  = NamedType("NString", StringType)
 
 	// Composite types representing sequences of numbers.
-	Array3ByteType       = ArrayType(3, ByteType)
-	Array3ByteTypeN      = NamedType("NArray3Byte", ArrayType(3, ByteTypeN))
-	Array3Uint64Type     = ArrayType(3, Uint64Type)
-	Array3Uint64TypeN    = NamedType("NArray3Uint64", ArrayType(3, Uint64TypeN))
-	Array3Int64Type      = ArrayType(3, Int64Type)
-	Array3Int64TypeN     = NamedType("NArray3Int64", ArrayType(3, Int64TypeN))
-	Array3Float64Type    = ArrayType(3, Float64Type)
-	Array3Float64TypeN   = NamedType("NArray3Float64", ArrayType(3, Float64TypeN))
-	Array3Complex64Type  = ArrayType(3, Complex64Type)
-	Array3Complex64TypeN = NamedType("NArray3Complex64", ArrayType(3, Complex64TypeN))
-	ListByteType         = ListType(ByteType)
-	ListByteTypeN        = NamedType("NListByte", ListType(ByteTypeN))
-	ListUint64Type       = ListType(Uint64Type)
-	ListUint64TypeN      = NamedType("NListUint64", ListType(Uint64TypeN))
-	ListInt64Type        = ListType(Int64Type)
-	ListInt64TypeN       = NamedType("NListInt64", ListType(Int64TypeN))
-	ListFloat64Type      = ListType(Float64Type)
-	ListFloat64TypeN     = NamedType("NListFloat64", ListType(Float64TypeN))
-	ListComplex64Type    = ListType(Complex64Type)
-	ListComplex64TypeN   = NamedType("NListComplex64", ListType(Complex64TypeN))
+	Array3ByteType     = ArrayType(3, ByteType)
+	Array3ByteTypeN    = NamedType("NArray3Byte", ArrayType(3, ByteTypeN))
+	Array3Uint64Type   = ArrayType(3, Uint64Type)
+	Array3Uint64TypeN  = NamedType("NArray3Uint64", ArrayType(3, Uint64TypeN))
+	Array3Int64Type    = ArrayType(3, Int64Type)
+	Array3Int64TypeN   = NamedType("NArray3Int64", ArrayType(3, Int64TypeN))
+	Array3Float64Type  = ArrayType(3, Float64Type)
+	Array3Float64TypeN = NamedType("NArray3Float64", ArrayType(3, Float64TypeN))
+	ListByteType       = ListType(ByteType)
+	ListByteTypeN      = NamedType("NListByte", ListType(ByteTypeN))
+	ListUint64Type     = ListType(Uint64Type)
+	ListUint64TypeN    = NamedType("NListUint64", ListType(Uint64TypeN))
+	ListInt64Type      = ListType(Int64Type)
+	ListInt64TypeN     = NamedType("NListInt64", ListType(Int64TypeN))
+	ListFloat64Type    = ListType(Float64Type)
+	ListFloat64TypeN   = NamedType("NListFloat64", ListType(Float64TypeN))
 	// Composite types representing sets of numbers.
-	SetByteType           = SetType(ByteType)
-	SetByteTypeN          = NamedType("NSetByte", SetType(ByteTypeN))
-	SetUint64Type         = SetType(Uint64Type)
-	SetUint64TypeN        = NamedType("NSetUint64", SetType(Uint64TypeN))
-	SetInt64Type          = SetType(Int64Type)
-	SetInt64TypeN         = NamedType("NSetInt64", SetType(Int64TypeN))
-	SetFloat64Type        = SetType(Float64Type)
-	SetFloat64TypeN       = NamedType("NSetFloat64", SetType(Float64TypeN))
-	SetComplex64Type      = SetType(Complex64Type)
-	SetComplex64TypeN     = NamedType("NSetComplex64", SetType(Complex64TypeN))
-	MapByteBoolType       = MapType(ByteType, BoolType)
-	MapByteBoolTypeN      = NamedType("NMapByteBool", MapType(ByteTypeN, BoolTypeN))
-	MapUint64BoolType     = MapType(Uint64Type, BoolType)
-	MapUint64BoolTypeN    = NamedType("NMapUint64Bool", MapType(Uint64TypeN, BoolTypeN))
-	MapInt64BoolType      = MapType(Int64Type, BoolType)
-	MapInt64BoolTypeN     = NamedType("NMapInt64Bool", MapType(Int64TypeN, BoolTypeN))
-	MapFloat64BoolType    = MapType(Float64Type, BoolType)
-	MapFloat64BoolTypeN   = NamedType("NMapFloat64Bool", MapType(Float64TypeN, BoolTypeN))
-	MapComplex64BoolType  = MapType(Complex64Type, BoolType)
-	MapComplex64BoolTypeN = NamedType("NMapComplex64Bool", MapType(Complex64TypeN, BoolTypeN))
+	SetByteType         = SetType(ByteType)
+	SetByteTypeN        = NamedType("NSetByte", SetType(ByteTypeN))
+	SetUint64Type       = SetType(Uint64Type)
+	SetUint64TypeN      = NamedType("NSetUint64", SetType(Uint64TypeN))
+	SetInt64Type        = SetType(Int64Type)
+	SetInt64TypeN       = NamedType("NSetInt64", SetType(Int64TypeN))
+	SetFloat64Type      = SetType(Float64Type)
+	SetFloat64TypeN     = NamedType("NSetFloat64", SetType(Float64TypeN))
+	MapByteBoolType     = MapType(ByteType, BoolType)
+	MapByteBoolTypeN    = NamedType("NMapByteBool", MapType(ByteTypeN, BoolTypeN))
+	MapUint64BoolType   = MapType(Uint64Type, BoolType)
+	MapUint64BoolTypeN  = NamedType("NMapUint64Bool", MapType(Uint64TypeN, BoolTypeN))
+	MapInt64BoolType    = MapType(Int64Type, BoolType)
+	MapInt64BoolTypeN   = NamedType("NMapInt64Bool", MapType(Int64TypeN, BoolTypeN))
+	MapFloat64BoolType  = MapType(Float64Type, BoolType)
+	MapFloat64BoolTypeN = NamedType("NMapFloat64Bool", MapType(Float64TypeN, BoolTypeN))
 	// Composite types representing sets of strings.
 	SetStringType      = SetType(StringType)
 	SetStringTypeN     = NamedType("NSetString", SetType(StringTypeN))
@@ -570,42 +543,34 @@
 	StructWXBoolType   = StructType(Field{"W", BoolType}, Field{"X", BoolType})
 	StructWXBoolTypeN  = NamedType("NStructWXBool", StructType(Field{"W", BoolTypeN}, Field{"X", BoolTypeN}))
 	// Composite types representing maps of strings to numbers.
-	MapStringByteType       = MapType(StringType, ByteType)
-	MapStringByteTypeN      = NamedType("NMapStringByte", MapType(StringTypeN, ByteTypeN))
-	MapStringUint64Type     = MapType(StringType, Uint64Type)
-	MapStringUint64TypeN    = NamedType("NMapStringUint64", MapType(StringTypeN, Uint64TypeN))
-	MapStringInt64Type      = MapType(StringType, Int64Type)
-	MapStringInt64TypeN     = NamedType("NMapStringInt64", MapType(StringTypeN, Int64TypeN))
-	MapStringFloat64Type    = MapType(StringType, Float64Type)
-	MapStringFloat64TypeN   = NamedType("NMapStringFloat64", MapType(StringTypeN, Float64TypeN))
-	MapStringComplex64Type  = MapType(StringType, Complex64Type)
-	MapStringComplex64TypeN = NamedType("NMapStringComplex64", MapType(StringTypeN, Complex64TypeN))
-	StructVWXByteType       = StructType(Field{"V", ByteType}, Field{"W", ByteType}, Field{"X", ByteType})
-	StructVWXByteTypeN      = NamedType("NStructVWXByte", StructType(Field{"V", ByteTypeN}, Field{"W", ByteTypeN}, Field{"X", ByteTypeN}))
-	StructVWXUint64Type     = StructType(Field{"V", Uint64Type}, Field{"W", Uint64Type}, Field{"X", Uint64Type})
-	StructVWXUint64TypeN    = NamedType("NStructVWXUint64", StructType(Field{"V", Uint64TypeN}, Field{"W", Uint64TypeN}, Field{"X", Uint64TypeN}))
-	StructVWXInt64Type      = StructType(Field{"V", Int64Type}, Field{"W", Int64Type}, Field{"X", Int64Type})
-	StructVWXInt64TypeN     = NamedType("NStructVWXInt64", StructType(Field{"V", Int64TypeN}, Field{"W", Int64TypeN}, Field{"X", Int64TypeN}))
-	StructVWXFloat64Type    = StructType(Field{"V", Float64Type}, Field{"W", Float64Type}, Field{"X", Float64Type})
-	StructVWXFloat64TypeN   = NamedType("NStructVWXFloat64", StructType(Field{"V", Float64TypeN}, Field{"W", Float64TypeN}, Field{"X", Float64TypeN}))
-	StructVWXComplex64Type  = StructType(Field{"V", Complex64Type}, Field{"W", Complex64Type}, Field{"X", Complex64Type})
-	StructVWXComplex64TypeN = NamedType("NStructVWXComplex64", StructType(Field{"V", Complex64TypeN}, Field{"W", Complex64TypeN}, Field{"X", Complex64TypeN}))
-	StructUVByteType        = StructType(Field{"U", ByteType}, Field{"V", ByteType})
-	StructUVByteTypeN       = NamedType("NStructUVByte", StructType(Field{"U", ByteTypeN}, Field{"V", ByteTypeN}))
-	StructUVUint64Type      = StructType(Field{"U", Uint64Type}, Field{"V", Uint64Type})
-	StructUVUint64TypeN     = NamedType("NStructUVUint64", StructType(Field{"U", Uint64TypeN}, Field{"V", Uint64TypeN}))
-	StructUVInt64Type       = StructType(Field{"U", Int64Type}, Field{"V", Int64Type})
-	StructUVInt64TypeN      = NamedType("NStructUVInt64", StructType(Field{"U", Int64TypeN}, Field{"V", Int64TypeN}))
-	StructUVFloat64Type     = StructType(Field{"U", Float64Type}, Field{"V", Float64Type})
-	StructUVFloat64TypeN    = NamedType("NStructUVFloat64", StructType(Field{"U", Float64TypeN}, Field{"V", Float64TypeN}))
-	StructUVComplex64Type   = StructType(Field{"U", Complex64Type}, Field{"V", Complex64Type})
-	StructUVComplex64TypeN  = NamedType("NStructUVComplex64", StructType(Field{"U", Complex64TypeN}, Field{"V", Complex64TypeN}))
+	MapStringByteType     = MapType(StringType, ByteType)
+	MapStringByteTypeN    = NamedType("NMapStringByte", MapType(StringTypeN, ByteTypeN))
+	MapStringUint64Type   = MapType(StringType, Uint64Type)
+	MapStringUint64TypeN  = NamedType("NMapStringUint64", MapType(StringTypeN, Uint64TypeN))
+	MapStringInt64Type    = MapType(StringType, Int64Type)
+	MapStringInt64TypeN   = NamedType("NMapStringInt64", MapType(StringTypeN, Int64TypeN))
+	MapStringFloat64Type  = MapType(StringType, Float64Type)
+	MapStringFloat64TypeN = NamedType("NMapStringFloat64", MapType(StringTypeN, Float64TypeN))
+	StructVWXByteType     = StructType(Field{"V", ByteType}, Field{"W", ByteType}, Field{"X", ByteType})
+	StructVWXByteTypeN    = NamedType("NStructVWXByte", StructType(Field{"V", ByteTypeN}, Field{"W", ByteTypeN}, Field{"X", ByteTypeN}))
+	StructVWXUint64Type   = StructType(Field{"V", Uint64Type}, Field{"W", Uint64Type}, Field{"X", Uint64Type})
+	StructVWXUint64TypeN  = NamedType("NStructVWXUint64", StructType(Field{"V", Uint64TypeN}, Field{"W", Uint64TypeN}, Field{"X", Uint64TypeN}))
+	StructVWXInt64Type    = StructType(Field{"V", Int64Type}, Field{"W", Int64Type}, Field{"X", Int64Type})
+	StructVWXInt64TypeN   = NamedType("NStructVWXInt64", StructType(Field{"V", Int64TypeN}, Field{"W", Int64TypeN}, Field{"X", Int64TypeN}))
+	StructVWXFloat64Type  = StructType(Field{"V", Float64Type}, Field{"W", Float64Type}, Field{"X", Float64Type})
+	StructVWXFloat64TypeN = NamedType("NStructVWXFloat64", StructType(Field{"V", Float64TypeN}, Field{"W", Float64TypeN}, Field{"X", Float64TypeN}))
+	StructUVByteType      = StructType(Field{"U", ByteType}, Field{"V", ByteType})
+	StructUVByteTypeN     = NamedType("NStructUVByte", StructType(Field{"U", ByteTypeN}, Field{"V", ByteTypeN}))
+	StructUVUint64Type    = StructType(Field{"U", Uint64Type}, Field{"V", Uint64Type})
+	StructUVUint64TypeN   = NamedType("NStructUVUint64", StructType(Field{"U", Uint64TypeN}, Field{"V", Uint64TypeN}))
+	StructUVInt64Type     = StructType(Field{"U", Int64Type}, Field{"V", Int64Type})
+	StructUVInt64TypeN    = NamedType("NStructUVInt64", StructType(Field{"U", Int64TypeN}, Field{"V", Int64TypeN}))
+	StructUVFloat64Type   = StructType(Field{"U", Float64Type}, Field{"V", Float64Type})
+	StructUVFloat64TypeN  = NamedType("NStructUVFloat64", StructType(Field{"U", Float64TypeN}, Field{"V", Float64TypeN}))
 
-	StructAIntType  = StructType(Field{"A", Int64Type})
-	StructAIntTypeN = NamedType("NStructA", StructAIntType)
+	StructAIntType = StructType(Field{"A", Int64Type})
 
-	UnionTypeN = NameN("Union", UnionType([]Field{{"A", BoolType}, {"B", StringType}, {"C", Int32Type}}...))
-	WireTypeN  = NameN("Wire", StructType(Field{"Str", StringType}))
+	WireTypeN = NameN("Wire", StructType(Field{"Str", StringType}))
 
 	// Types that cannot be converted to sets.  Although we represent sets as
 	// map[key]struct{} on the Go side, we don't allow these as general
@@ -701,8 +666,6 @@
 		v.AssignInt(int64(num))
 	case Float32, Float64:
 		v.AssignFloat(num)
-	case Complex64, Complex128:
-		v.AssignComplex(complex(num, 0))
 	default:
 		panic(fmt.Errorf("vdl: AssignNum unhandled %v", v.Type()))
 	}
diff --git a/vdl/type.go b/vdl/type.go
index e6d0df4..599bf2c 100644
--- a/vdl/type.go
+++ b/vdl/type.go
@@ -28,8 +28,6 @@
 	Int64      // 64 bit signed integer
 	Float32    // 32 bit IEEE 754 floating point
 	Float64    // 64 bit IEEE 754 floating point
-	Complex64  // {real,imag} each 32 bit IEEE 754 floating point
-	Complex128 // {real,imag} each 64 bit IEEE 754 floating point
 	String     // unicode string (encoded as UTF-8 in memory)
 	Enum       // one of a set of labels
 	TypeObject // type represented as a value
@@ -73,10 +71,6 @@
 		return "float32"
 	case Float64:
 		return "float64"
-	case Complex64:
-		return "complex64"
-	case Complex128:
-		return "complex128"
 	case String:
 		return "string"
 	case Enum:
diff --git a/vdl/type_builder.go b/vdl/type_builder.go
index 5b676a1..a3fd9f5 100644
--- a/vdl/type_builder.go
+++ b/vdl/type_builder.go
@@ -46,8 +46,6 @@
 	Int64Type      = primitiveType(Int64)
 	Float32Type    = primitiveType(Float32)
 	Float64Type    = primitiveType(Float64)
-	Complex64Type  = primitiveType(Complex64)
-	Complex128Type = primitiveType(Complex128)
 	StringType     = primitiveType(String)
 	TypeObjectType = primitiveType(TypeObject)
 )
diff --git a/vdl/type_test.go b/vdl/type_test.go
index 00cb1c7..693fe95 100644
--- a/vdl/type_test.go
+++ b/vdl/type_test.go
@@ -52,8 +52,6 @@
 	{Int64, Int64Type, "int64"},
 	{Float32, Float32Type, "float32"},
 	{Float64, Float64Type, "float64"},
-	{Complex64, Complex64Type, "complex64"},
-	{Complex128, Complex128Type, "complex128"},
 	{String, StringType, "string"},
 	{TypeObject, TypeObjectType, "typeobject"},
 }
diff --git a/vdl/util.go b/vdl/util.go
index b47839c..5bb2b1b 100644
--- a/vdl/util.go
+++ b/vdl/util.go
@@ -11,36 +11,32 @@
 
 var (
 	bitlenReflect = [...]uintptr{
-		reflect.Uint8:      8,
-		reflect.Uint16:     16,
-		reflect.Uint32:     32,
-		reflect.Uint64:     64,
-		reflect.Uint:       8 * unsafe.Sizeof(uint(0)),
-		reflect.Uintptr:    8 * unsafe.Sizeof(uintptr(0)),
-		reflect.Int8:       8,
-		reflect.Int16:      16,
-		reflect.Int32:      32,
-		reflect.Int64:      64,
-		reflect.Int:        8 * unsafe.Sizeof(int(0)),
-		reflect.Float32:    32,
-		reflect.Float64:    64,
-		reflect.Complex64:  32, // bitlen of each float
-		reflect.Complex128: 64, // bitlen of each float
+		reflect.Uint8:   8,
+		reflect.Uint16:  16,
+		reflect.Uint32:  32,
+		reflect.Uint64:  64,
+		reflect.Uint:    8 * unsafe.Sizeof(uint(0)),
+		reflect.Uintptr: 8 * unsafe.Sizeof(uintptr(0)),
+		reflect.Int8:    8,
+		reflect.Int16:   16,
+		reflect.Int32:   32,
+		reflect.Int64:   64,
+		reflect.Int:     8 * unsafe.Sizeof(int(0)),
+		reflect.Float32: 32,
+		reflect.Float64: 64,
 	}
 
 	bitlenVDL = [...]uintptr{
-		Byte:       8,
-		Uint16:     16,
-		Uint32:     32,
-		Uint64:     64,
-		Int8:       8,
-		Int16:      16,
-		Int32:      32,
-		Int64:      64,
-		Float32:    32,
-		Float64:    64,
-		Complex64:  32, // bitlen of each float
-		Complex128: 64, // bitlen of each float
+		Byte:    8,
+		Uint16:  16,
+		Uint32:  32,
+		Uint64:  64,
+		Int8:    8,
+		Int16:   16,
+		Int32:   32,
+		Int64:   64,
+		Float32: 32,
+		Float64: 64,
 	}
 )
 
diff --git a/vdl/value.go b/vdl/value.go
index 9fa2b61..3859aa5 100644
--- a/vdl/value.go
+++ b/vdl/value.go
@@ -54,8 +54,6 @@
 		return int64(0)
 	case Float32, Float64:
 		return float64(0)
-	case Complex64, Complex128:
-		return complex128(0)
 	case String:
 		return ""
 	case Enum:
@@ -89,8 +87,6 @@
 		return trep == 0
 	case float64:
 		return trep == 0
-	case complex128:
-		return trep == 0
 	case string:
 		return trep == ""
 	case enumIndex:
@@ -120,7 +116,7 @@
 
 func copyRep(t *Type, rep interface{}) interface{} {
 	switch trep := rep.(type) {
-	case bool, uint64, int64, float64, complex128, string, enumIndex, *Type:
+	case bool, uint64, int64, float64, string, enumIndex, *Type:
 		return trep
 	case repBytes:
 		return copyRepBytes(trep)
@@ -143,8 +139,6 @@
 	switch trep := rep.(type) {
 	case bool, uint64, int64, float64:
 		return fmt.Sprint(trep)
-	case complex128:
-		return fmt.Sprintf("%v+%vi", real(trep), imag(trep))
 	case string:
 		return strconv.Quote(trep)
 	case enumIndex:
@@ -214,12 +208,6 @@
 // Float64Value is a convenience to create a Float64 value.
 func Float64Value(x float64) *Value { return ZeroValue(Float64Type).AssignFloat(x) }
 
-// Complex64Value is a convenience to create a Complex64 value.
-func Complex64Value(x complex64) *Value { return ZeroValue(Complex64Type).AssignComplex(complex128(x)) }
-
-// Complex128Value is a convenience to create a Complex128 value.
-func Complex128Value(x complex128) *Value { return ZeroValue(Complex128Type).AssignComplex(x) }
-
 // StringValue is a convenience to create a String value.
 func StringValue(x string) *Value { return ZeroValue(StringType).AssignString(x) }
 
@@ -299,8 +287,6 @@
 		return arep == b.rep.(int64)
 	case float64:
 		return arep == b.rep.(float64)
-	case complex128:
-		return arep == b.rep.(complex128)
 	case string:
 		return arep == b.rep.(string)
 	case enumIndex:
@@ -375,12 +361,6 @@
 	return v.rep.(float64)
 }
 
-// Complex returns the underlying value of a Complex{64,128}.
-func (v *Value) Complex() complex128 {
-	v.t.checkKind("Complex", Complex64, Complex128)
-	return v.rep.(complex128)
-}
-
 // RawString returns the underlying value of a String.
 func (v *Value) RawString() string {
 	v.t.checkKind("RawString", String)
@@ -601,13 +581,6 @@
 	return v
 }
 
-// AssignComplex assigns the underlying Complex{64,128} to x.
-func (v *Value) AssignComplex(x complex128) *Value {
-	v.t.checkKind("AssignComplex", Complex64, Complex128)
-	v.rep = x
-	return v
-}
-
 // AssignString assigns the underlying String to x.
 func (v *Value) AssignString(x string) *Value {
 	v.t.checkKind("AssignString", String)
diff --git a/vdl/value_rep.go b/vdl/value_rep.go
index 07acf8e..28f5cd0 100644
--- a/vdl/value_rep.go
+++ b/vdl/value_rep.go
@@ -79,7 +79,7 @@
 func useFastIndex(key *Type) bool {
 	// TODO(toddw): Structs with exactly 1 simple field may also use fast.
 	switch key.kind {
-	case Bool, Byte, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64, Float32, Float64, Complex64, Complex128, String, Enum:
+	case Bool, Byte, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64, Float32, Float64, String, Enum:
 		return true
 	}
 	if key.IsBytes() {
diff --git a/vdl/value_test.go b/vdl/value_test.go
index 5e86fe2..48995a5 100644
--- a/vdl/value_test.go
+++ b/vdl/value_test.go
@@ -56,8 +56,6 @@
 		{Int64, Int64Type, "int64(0)"},
 		{Float32, Float32Type, "float32(0)"},
 		{Float64, Float64Type, "float64(0)"},
-		{Complex64, Complex64Type, "complex64(0+0i)"},
-		{Complex128, Complex128Type, "complex128(0+0i)"},
 		{String, StringType, `""`},
 		{List, ListType(ByteType), `[]byte("")`},
 		{Array, ArrayType(3, ByteType), `[3]byte("\x00\x00\x00")`},
@@ -113,7 +111,6 @@
 		assignUint(t, x)
 		assignInt(t, x)
 		assignFloat(t, x)
-		assignComplex(t, x)
 		assignString(t, x)
 		assignEnum(t, x)
 		assignTypeObject(t, x)
@@ -301,26 +298,6 @@
 	}
 }
 
-func assignComplex(t *testing.T, x *Value) {
-	newval := complex128(1 + 2i)
-	switch x.Kind() {
-	case Complex64, Complex128:
-		if got, want := x.Complex(), complex128(0); got != want {
-			t.Errorf(`Complex zero value got %v, want %v`, got, want)
-		}
-		x.AssignComplex(newval)
-		if got, want := x.Complex(), newval; got != want {
-			t.Errorf(`Complex assign value got %v, want %v`, got, want)
-		}
-		if got, want := x.String(), x.Kind().String()+"(1+2i)"; got != want {
-			t.Errorf(`Complex string got %v, want %v`, got, want)
-		}
-	default:
-		ExpectMismatchedKind(t, func() { x.Complex() })
-		ExpectMismatchedKind(t, func() { x.AssignComplex(newval) })
-	}
-}
-
 func assignString(t *testing.T, x *Value) {
 	zerostr, newval, newstr := `""`, "abc", `"abc"`
 	if x.Kind() == String {
diff --git a/vdl/vdlconv/.api b/vdl/vdlconv/.api
index d5df600..55112e6 100644
--- a/vdl/vdlconv/.api
+++ b/vdl/vdlconv/.api
@@ -1,16 +1,3 @@
-pkg vdlconv, func Complex128ToComplex64(complex128) (complex64, error)
-pkg vdlconv, func Complex128ToFloat32(complex128) (float32, error)
-pkg vdlconv, func Complex128ToFloat64(complex128) (float64, error)
-pkg vdlconv, func Complex128ToInt16(complex128) (int16, error)
-pkg vdlconv, func Complex128ToInt32(complex128) (int32, error)
-pkg vdlconv, func Complex128ToInt64(complex128) (int64, error)
-pkg vdlconv, func Complex128ToInt8(complex128) (int8, error)
-pkg vdlconv, func Complex128ToUint16(complex128) (uint16, error)
-pkg vdlconv, func Complex128ToUint32(complex128) (uint32, error)
-pkg vdlconv, func Complex128ToUint64(complex128) (uint64, error)
-pkg vdlconv, func Complex128ToUint8(complex128) (uint8, error)
-pkg vdlconv, func Float64ToComplex128(float64) (complex128, error)
-pkg vdlconv, func Float64ToComplex64(float64) (complex64, error)
 pkg vdlconv, func Float64ToFloat32(float64) (float32, error)
 pkg vdlconv, func Float64ToInt16(float64) (int16, error)
 pkg vdlconv, func Float64ToInt32(float64) (int32, error)
@@ -20,8 +7,6 @@
 pkg vdlconv, func Float64ToUint32(float64) (uint32, error)
 pkg vdlconv, func Float64ToUint64(float64) (uint64, error)
 pkg vdlconv, func Float64ToUint8(float64) (uint8, error)
-pkg vdlconv, func Int64ToComplex128(int64) (complex128, error)
-pkg vdlconv, func Int64ToComplex64(int64) (complex64, error)
 pkg vdlconv, func Int64ToFloat32(int64) (float32, error)
 pkg vdlconv, func Int64ToFloat64(int64) (float64, error)
 pkg vdlconv, func Int64ToInt16(int64) (int16, error)
@@ -31,8 +16,6 @@
 pkg vdlconv, func Int64ToUint32(int64) (uint32, error)
 pkg vdlconv, func Int64ToUint64(int64) (uint64, error)
 pkg vdlconv, func Int64ToUint8(int64) (uint8, error)
-pkg vdlconv, func Uint64ToComplex128(uint64) (complex128, error)
-pkg vdlconv, func Uint64ToComplex64(uint64) (complex64, error)
 pkg vdlconv, func Uint64ToFloat32(uint64) (float32, error)
 pkg vdlconv, func Uint64ToFloat64(uint64) (float64, error)
 pkg vdlconv, func Uint64ToInt16(uint64) (int16, error)
diff --git a/vdl/vdlconv/vdlconv.go b/vdl/vdlconv/vdlconv.go
index 6b5ce17..a91ec53 100644
--- a/vdl/vdlconv/vdlconv.go
+++ b/vdl/vdlconv/vdlconv.go
@@ -98,20 +98,6 @@
 	return float64(x), nil
 }
 
-func Uint64ToComplex64(x uint64) (complex64, error) {
-	if x > float32MaxInt {
-		return 0, fmt.Errorf("uint64 value %d cannot be converted to complex64 without loss", x)
-	}
-	return complex(float32(x), 0), nil
-}
-
-func Uint64ToComplex128(x uint64) (complex128, error) {
-	if x > float64MaxInt {
-		return 0, fmt.Errorf("uint64 value %d cannot be converted to complex128 without loss", x)
-	}
-	return complex(float64(x), 0), nil
-}
-
 func Int64ToUint8(x int64) (uint8, error) {
 	ux := uint64(x)
 	if x < 0 || ux != (ux<<shiftFor8Bit)>>shiftFor8Bit {
@@ -180,20 +166,6 @@
 	return float64(x), nil
 }
 
-func Int64ToComplex64(x int64) (complex64, error) {
-	if x < float32MinInt || x > float32MaxInt {
-		return 0, fmt.Errorf("int64 value %d cannot be converted to complex64 without loss", x)
-	}
-	return complex(float32(x), 0), nil
-}
-
-func Int64ToComplex128(x int64) (complex128, error) {
-	if x < float64MinInt || x > float64MaxInt {
-		return 0, fmt.Errorf("int64 value %d cannot be converted to complex128 without loss", x)
-	}
-	return complex(float64(x), 0), nil
-}
-
 func Float64ToUint8(x float64) (uint8, error) {
 	ux := uint64(x)
 	if x != float64(ux) || ux != (ux<<shiftFor8Bit)>>shiftFor8Bit {
@@ -261,93 +233,3 @@
 func Float64ToFloat32(x float64) (float32, error) {
 	return float32(x), nil
 }
-
-func Float64ToComplex64(x float64) (complex64, error) {
-	return complex(float32(x), 0), nil
-}
-
-func Float64ToComplex128(x float64) (complex128, error) {
-	return complex(x, 0), nil
-}
-
-func Complex128ToUint8(x complex128) (uint8, error) {
-	ux := uint64(real(x))
-	if x != complex128(complex(float64(ux), 0)) || ux != (ux<<shiftFor8Bit)>>shiftFor8Bit {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to uint8 without loss", x)
-	}
-	return uint8(ux), nil
-}
-
-func Complex128ToUint16(x complex128) (uint16, error) {
-	ux := uint64(real(x))
-	if x != complex128(complex(float64(ux), 0)) || ux != (ux<<shiftFor16Bit)>>shiftFor16Bit {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to uint16 without loss", x)
-	}
-	return uint16(ux), nil
-}
-
-func Complex128ToUint32(x complex128) (uint32, error) {
-	ux := uint64(real(x))
-	if x != complex128(complex(float64(ux), 0)) || ux != (ux<<shiftFor32Bit)>>shiftFor32Bit {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to uint32 without loss", x)
-	}
-	return uint32(ux), nil
-}
-
-func Complex128ToUint64(x complex128) (uint64, error) {
-	ux := uint64(real(x))
-	if x != complex128(complex(float64(ux), 0)) {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to uint64 without loss", x)
-	}
-	return ux, nil
-}
-
-func Complex128ToInt8(x complex128) (int8, error) {
-	ix := int64(real(x))
-	if x != complex128(complex(float64(ix), 0)) || ix != (ix<<shiftFor8Bit)>>shiftFor8Bit {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to int8 without loss", x)
-	}
-	return int8(ix), nil
-}
-
-func Complex128ToInt16(x complex128) (int16, error) {
-	ix := int64(real(x))
-	if x != complex128(complex(float64(ix), 0)) || ix != (ix<<shiftFor16Bit)>>shiftFor16Bit {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to int16 without loss", x)
-	}
-	return int16(ix), nil
-}
-
-func Complex128ToInt32(x complex128) (int32, error) {
-	ix := int64(real(x))
-	if x != complex128(complex(float64(ix), 0)) || ix != (ix<<shiftFor32Bit)>>shiftFor32Bit {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to int32 without loss", x)
-	}
-	return int32(ix), nil
-}
-
-func Complex128ToInt64(x complex128) (int64, error) {
-	ix := int64(real(x))
-	if x != complex128(complex(float64(ix), 0)) {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to int64 without loss", x)
-	}
-	return ix, nil
-}
-
-func Complex128ToFloat32(x complex128) (float32, error) {
-	if imag(x) != 0 {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to float32 without loss", x)
-	}
-	return float32(real(x)), nil
-}
-
-func Complex128ToFloat64(x complex128) (float64, error) {
-	if imag(x) != 0 {
-		return 0, fmt.Errorf("complex128 value %f cannot be converted to float64 without loss", x)
-	}
-	return real(x), nil
-}
-
-func Complex128ToComplex64(x complex128) (complex64, error) {
-	return complex64(x), nil
-}
diff --git a/vdl/vdlconv/vdlconv_funcs_test.go b/vdl/vdlconv/vdlconv_funcs_test.go
index 6b9ee08..5b068db 100644
--- a/vdl/vdlconv/vdlconv_funcs_test.go
+++ b/vdl/vdlconv/vdlconv_funcs_test.go
@@ -20,8 +20,6 @@
 	reflect.ValueOf(vdlconv.Uint64ToInt64),
 	reflect.ValueOf(vdlconv.Uint64ToFloat32),
 	reflect.ValueOf(vdlconv.Uint64ToFloat64),
-	reflect.ValueOf(vdlconv.Uint64ToComplex64),
-	reflect.ValueOf(vdlconv.Uint64ToComplex128),
 	reflect.ValueOf(vdlconv.Int64ToUint8),
 	reflect.ValueOf(vdlconv.Int64ToUint16),
 	reflect.ValueOf(vdlconv.Int64ToUint32),
@@ -31,8 +29,6 @@
 	reflect.ValueOf(vdlconv.Int64ToInt32),
 	reflect.ValueOf(vdlconv.Int64ToFloat32),
 	reflect.ValueOf(vdlconv.Int64ToFloat64),
-	reflect.ValueOf(vdlconv.Int64ToComplex64),
-	reflect.ValueOf(vdlconv.Int64ToComplex128),
 	reflect.ValueOf(vdlconv.Float64ToUint8),
 	reflect.ValueOf(vdlconv.Float64ToUint16),
 	reflect.ValueOf(vdlconv.Float64ToUint32),
@@ -42,17 +38,4 @@
 	reflect.ValueOf(vdlconv.Float64ToInt32),
 	reflect.ValueOf(vdlconv.Float64ToInt64),
 	reflect.ValueOf(vdlconv.Float64ToFloat32),
-	reflect.ValueOf(vdlconv.Float64ToComplex64),
-	reflect.ValueOf(vdlconv.Float64ToComplex128),
-	reflect.ValueOf(vdlconv.Complex128ToUint8),
-	reflect.ValueOf(vdlconv.Complex128ToUint16),
-	reflect.ValueOf(vdlconv.Complex128ToUint32),
-	reflect.ValueOf(vdlconv.Complex128ToUint64),
-	reflect.ValueOf(vdlconv.Complex128ToInt8),
-	reflect.ValueOf(vdlconv.Complex128ToInt16),
-	reflect.ValueOf(vdlconv.Complex128ToInt32),
-	reflect.ValueOf(vdlconv.Complex128ToInt64),
-	reflect.ValueOf(vdlconv.Complex128ToFloat32),
-	reflect.ValueOf(vdlconv.Complex128ToFloat64),
-	reflect.ValueOf(vdlconv.Complex128ToComplex64),
 }
diff --git a/vdl/vdlconv/vdlconv_test.go b/vdl/vdlconv/vdlconv_test.go
index f63482d..e179747 100644
--- a/vdl/vdlconv/vdlconv_test.go
+++ b/vdl/vdlconv/vdlconv_test.go
@@ -13,9 +13,8 @@
 )
 
 var floatKinds = map[reflect.Kind]bool{reflect.Float32: true, reflect.Float64: true}
-var floatOrComplexKinds = map[reflect.Kind]bool{reflect.Float32: true, reflect.Float64: true, reflect.Complex64: true, reflect.Complex128: true}
-var sourceKinds = map[reflect.Kind]bool{reflect.Uint64: true, reflect.Int64: true, reflect.Float64: true, reflect.Complex128: true}
-var targetKinds = []reflect.Kind{reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128}
+var sourceKinds = map[reflect.Kind]bool{reflect.Uint64: true, reflect.Int64: true, reflect.Float64: true}
+var targetKinds = []reflect.Kind{reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64}
 
 // TestNumericConversions tests all possible combinations of conversions from the sourceKinds to the targetKinds using
 // the supplied list of compatible value groups.
@@ -28,63 +27,63 @@
 	}{
 		{
 			name:  "0",
-			items: []interface{}{uint8(0), uint16(0), uint32(0), uint64(0), int8(0), int16(0), int32(0), int64(0), float32(0), float64(0), complex64(0), complex128(0)},
+			items: []interface{}{uint8(0), uint16(0), uint32(0), uint64(0), int8(0), int16(0), int32(0), int64(0), float32(0), float64(0)},
 		},
 		{
 			name:  "0x7f: max usable by both uint8 and int8",
-			items: []interface{}{uint8(0x7f), uint16(0x7f), uint32(0x7f), uint64(0x7f), int8(0x7f), int16(0x7f), int32(0x7f), int64(0x7f), float32(0x7f), float64(0x7f), complex64(0x7f), complex128(0x7f)},
+			items: []interface{}{uint8(0x7f), uint16(0x7f), uint32(0x7f), uint64(0x7f), int8(0x7f), int16(0x7f), int32(0x7f), int64(0x7f), float32(0x7f), float64(0x7f)},
 		},
 		{
 			name:  "0xff: max usable by uint8",
-			items: []interface{}{uint8(0xff), uint16(0xff), uint32(0xff), uint64(0xff), int16(0xff), int32(0xff), int64(0xff), float32(0xff), float64(0xff), complex64(0xff), complex128(0xff)},
+			items: []interface{}{uint8(0xff), uint16(0xff), uint32(0xff), uint64(0xff), int16(0xff), int32(0xff), int64(0xff), float32(0xff), float64(0xff)},
 		},
 		{
 			name:  "-0x80: min usable by int8",
-			items: []interface{}{int8(-0x80), int16(-0x80), int32(-0x80), int64(-0x80), float32(-0x80), float64(-0x80), complex64(-0x80), complex128(-0x80)},
+			items: []interface{}{int8(-0x80), int16(-0x80), int32(-0x80), int64(-0x80), float32(-0x80), float64(-0x80)},
 		},
 		{
 			name:  "0x7fff: max usable by both uint16 and int16",
-			items: []interface{}{uint16(0x7fff), uint32(0x7fff), uint64(0x7fff), int16(0x7fff), int32(0x7fff), int64(0x7fff), float32(0x7fff), float64(0x7fff), complex64(0x7fff), complex128(0x7fff)},
+			items: []interface{}{uint16(0x7fff), uint32(0x7fff), uint64(0x7fff), int16(0x7fff), int32(0x7fff), int64(0x7fff), float32(0x7fff), float64(0x7fff)},
 		},
 		{
 			name:  "0xffff: max usable by uint16",
-			items: []interface{}{uint16(0xffff), uint32(0xffff), uint64(0xffff), int32(0xffff), int64(0xffff), float32(0xffff), float64(0xffff), complex64(0xffff), complex128(0xffff)},
+			items: []interface{}{uint16(0xffff), uint32(0xffff), uint64(0xffff), int32(0xffff), int64(0xffff), float32(0xffff), float64(0xffff)},
 		},
 		{
 			name:  "-0x8000: min usable by int16",
-			items: []interface{}{int16(-0x8000), int32(-0x8000), int64(-0x8000), float32(-0x8000), float64(-0x8000), complex64(-0x8000), complex128(-0x8000)},
+			items: []interface{}{int16(-0x8000), int32(-0x8000), int64(-0x8000), float32(-0x8000), float64(-0x8000)},
 		},
 		{
 			name:  "(1<<24)=16777216: max integer without loss in float32",
-			items: []interface{}{uint32((1 << 24)), uint64((1 << 24)), int32((1 << 24)), int64((1 << 24)), float32((1 << 24)), float64((1 << 24)), complex64((1 << 24)), complex128((1 << 24))},
+			items: []interface{}{uint32((1 << 24)), uint64((1 << 24)), int32((1 << 24)), int64((1 << 24)), float32((1 << 24)), float64((1 << 24))},
 		},
 		{
 			name:  "(1<<24)+1=16777217: one more than max integer without loss in float32",
-			items: []interface{}{uint32((1 << 24) + 1), uint64((1 << 24) + 1), int32((1 << 24) + 1), int64((1 << 24) + 1), float64((1 << 24) + 1), complex128((1 << 24) + 1)},
+			items: []interface{}{uint32((1 << 24) + 1), uint64((1 << 24) + 1), int32((1 << 24) + 1), int64((1 << 24) + 1), float64((1 << 24) + 1)},
 		},
 		{
 			name:  "-(1<<24)=-16777216: min integer without loss in float32",
-			items: []interface{}{int32(-(1 << 24)), int64(-(1 << 24)), float32(-(1 << 24)), float64(-(1 << 24)), complex64(-(1 << 24)), complex128(-(1 << 24))},
+			items: []interface{}{int32(-(1 << 24)), int64(-(1 << 24)), float32(-(1 << 24)), float64(-(1 << 24))},
 		},
 		{
 			name:  "-(1<<24)-1=-16777217: one less than min integer without loss in float32",
-			items: []interface{}{int32(-(1 << 24) - 1), int64(-(1 << 24) - 1), float64(-(1 << 24) - 1), complex128(-(1 << 24) - 1)},
+			items: []interface{}{int32(-(1 << 24) - 1), int64(-(1 << 24) - 1), float64(-(1 << 24) - 1)},
 		},
 		{
 			name:  "0x7fffffff: max usable by both uint32 and int32",
-			items: []interface{}{uint32(0x7fffffff), uint64(0x7fffffff), int32(0x7fffffff), int64(0x7fffffff), float64(0x7fffffff), complex128(0x7fffffff)},
+			items: []interface{}{uint32(0x7fffffff), uint64(0x7fffffff), int32(0x7fffffff), int64(0x7fffffff), float64(0x7fffffff)},
 		},
 		{
 			name:  "0xffffffff: max usable by uint16",
-			items: []interface{}{uint32(0xffffffff), uint64(0xffffffff), int64(0xffffffff), float64(0xffffffff), complex128(0xffffffff)},
+			items: []interface{}{uint32(0xffffffff), uint64(0xffffffff), int64(0xffffffff), float64(0xffffffff)},
 		},
 		{
 			name:  "-0x80000000: min usable by int16",
-			items: []interface{}{int32(-0x80000000), int64(-0x80000000), float64(-0x80000000), complex128(-0x80000000)},
+			items: []interface{}{int32(-0x80000000), int64(-0x80000000), float64(-0x80000000)},
 		},
 		{
 			name:  "(1<<53)=9007199254740992: max integer without loss in float64",
-			items: []interface{}{uint64((1 << 53)), int64((1 << 53)), float64((1 << 53)), complex128((1 << 53))},
+			items: []interface{}{uint64((1 << 53)), int64((1 << 53)), float64((1 << 53))},
 		},
 		{
 			name:  "(1<<53)+1=9007199254740993: one more than max integer without loss in float64",
@@ -92,7 +91,7 @@
 		},
 		{
 			name:  "-(1<<53)=-9007199254740992: min integer without loss in float64",
-			items: []interface{}{int64(-(1 << 53)), float64(-(1 << 53)), complex128(-(1 << 53))},
+			items: []interface{}{int64(-(1 << 53)), float64(-(1 << 53))},
 		},
 		{
 			name:  "-(1<<53)-1=-9007199254740993: one less than min integer without loss in float64",
@@ -112,11 +111,7 @@
 		},
 		{
 			name:  "1.1e37: large floating point out of the range of uint64/int64",
-			items: []interface{}{float32(1.1e37), float64(1.1e37), complex64(1.1e37), complex128(1.1e37)},
-		},
-		{
-			name:  "2+1i: complex number with non-zero imaginary part",
-			items: []interface{}{complex64(2 + 1i), complex128(2 + 1i)},
+			items: []interface{}{float32(1.1e37), float64(1.1e37)},
 		},
 	}
 
@@ -131,37 +126,28 @@
 				continue
 			}
 			for _, targetKind := range targetKinds {
-				// At least one of the values is not float / complex.
+				// At least one of the values is not float.
 				// Look up the expected value and check for it.
 				for _, function := range functions {
 					inKind := function.Type().In(0).Kind()
 					outKind := function.Type().Out(0).Kind()
 					if inKind == itemKind && outKind == targetKind {
-						if floatOrComplexKinds[itemKind] && floatOrComplexKinds[targetKind] {
-							// There are special rules if both are float / complex.
-							if nonZeroImag(item) && floatKinds[targetKind] {
-								// Expect failure
-								_, err := call(function, item)
-								if err == nil {
-									t.Errorf("%s: expected error when converting %v %v to %v, but got none", testCase.name, itemKind, item, targetKind)
-								}
+						if floatKinds[itemKind] && floatKinds[targetKind] {
+							// Expect success. (special rule for float<->float)
+							out, err := call(function, item)
+							if err != nil {
+								t.Errorf("%s: unexpected error converting %v %v to %v: %v", testCase.name, itemKind, item, targetKind, err)
 							} else {
-								// Expect success
-								out, err := call(function, item)
 								if err != nil {
 									t.Errorf("%s: unexpected error converting %v %v to %v: %v", testCase.name, itemKind, item, targetKind, err)
 								} else {
-									if err != nil {
-										t.Errorf("%s: unexpected error converting %v %v to %v: %v", testCase.name, itemKind, item, targetKind, err)
-									} else {
-										expectedVal, isExpected := expected[targetKind]
-										if isExpected {
-											if got, want := out, expectedVal; !reflect.DeepEqual(got, want) {
-												t.Errorf("%s: when converting %v %v to %v got %v, want %v", testCase.name, itemKind, item, targetKind, got, want)
-											}
-										} else {
-											// no information on expected float value, ignore.
+									expectedVal, isExpected := expected[targetKind]
+									if isExpected {
+										if got, want := out, expectedVal; !reflect.DeepEqual(got, want) {
+											t.Errorf("%s: when converting %v %v to %v got %v, want %v", testCase.name, itemKind, item, targetKind, got, want)
 										}
+									} else {
+										// no information on expected float value, ignore.
 									}
 								}
 							}
@@ -189,17 +175,6 @@
 	}
 }
 
-func nonZeroImag(x interface{}) bool {
-	switch c := x.(type) {
-	case complex64:
-		return imag(c) != 0
-	case complex128:
-		return imag(c) != 0
-	default:
-		return false
-	}
-}
-
 func call(function reflect.Value, item interface{}) (interface{}, error) {
 	out := function.Call([]reflect.Value{reflect.ValueOf(item)})
 	var err error
diff --git a/vdlroot/init.go b/vdlroot/init.go
index afe780f..2fbfff9 100644
--- a/vdlroot/init.go
+++ b/vdlroot/init.go
@@ -11,6 +11,7 @@
 package vdlroot
 
 import (
+	_ "v.io/v23/vdlroot/math"
 	_ "v.io/v23/vdlroot/signature"
 	_ "v.io/v23/vdlroot/time"
 	_ "v.io/v23/vdlroot/vdltool"
diff --git a/vdlroot/math/.api b/vdlroot/math/.api
new file mode 100644
index 0000000..28f5f93
--- /dev/null
+++ b/vdlroot/math/.api
@@ -0,0 +1,30 @@
+pkg math, func Complex128FromNative(*Complex128, complex128) error
+pkg math, func Complex128ToNative(Complex128, *complex128) error
+pkg math, func Complex64FromNative(*Complex64, complex64) error
+pkg math, func Complex64ToNative(Complex64, *complex64) error
+pkg math, method (*Complex128) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg math, method (*Complex128) MakeVDLTarget() vdl.Target
+pkg math, method (*Complex128Target) FinishField(vdl.Target, vdl.Target) error
+pkg math, method (*Complex128Target) FinishFields(vdl.FieldsTarget) error
+pkg math, method (*Complex128Target) StartField(string) (vdl.Target, vdl.Target, error)
+pkg math, method (*Complex128Target) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg math, method (*Complex64) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg math, method (*Complex64) MakeVDLTarget() vdl.Target
+pkg math, method (*Complex64Target) FinishField(vdl.Target, vdl.Target) error
+pkg math, method (*Complex64Target) FinishFields(vdl.FieldsTarget) error
+pkg math, method (*Complex64Target) StartField(string) (vdl.Target, vdl.Target, error)
+pkg math, method (*Complex64Target) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg math, type Complex128 struct
+pkg math, type Complex128 struct, Imag float64
+pkg math, type Complex128 struct, Real float64
+pkg math, type Complex128Target struct
+pkg math, type Complex128Target struct, Value *complex128
+pkg math, type Complex128Target struct, embedded vdl.FieldsTargetBase
+pkg math, type Complex128Target struct, embedded vdl.TargetBase
+pkg math, type Complex64 struct
+pkg math, type Complex64 struct, Imag float32
+pkg math, type Complex64 struct, Real float32
+pkg math, type Complex64Target struct
+pkg math, type Complex64Target struct, Value *complex64
+pkg math, type Complex64Target struct, embedded vdl.FieldsTargetBase
+pkg math, type Complex64Target struct, embedded vdl.TargetBase
diff --git a/vdlroot/math/math.vdl b/vdlroot/math/math.vdl
new file mode 100644
index 0000000..97d918b
--- /dev/null
+++ b/vdlroot/math/math.vdl
@@ -0,0 +1,15 @@
+// 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 math
+
+type Complex64 struct {
+    Real float32
+    Imag float32
+}
+
+type Complex128 struct {
+    Real float64
+    Imag float64
+}
\ No newline at end of file
diff --git a/vdlroot/math/math.vdl.go b/vdlroot/math/math.vdl.go
new file mode 100644
index 0000000..0cb3dbc
--- /dev/null
+++ b/vdlroot/math/math.vdl.go
@@ -0,0 +1,257 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This file was auto-generated by the vanadium vdl tool.
+// Package: math
+
+package math
+
+import (
+	"fmt"
+	"v.io/v23/vdl"
+)
+
+var _ = __VDLInit() // Must be first; see __VDLInit comments for details.
+
+//////////////////////////////////////////////////
+// Type definitions
+
+type Complex64 struct {
+	Real float32
+	Imag float32
+}
+
+func (Complex64) __VDLReflect(struct {
+	Name string `vdl:"math.Complex64"`
+}) {
+}
+
+func (m *Complex64) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Real")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+		if err := fieldTarget3.FromFloat(float64(m.Real), tt.NonOptional().Field(0).Type); err != nil {
+			return err
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Imag")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+		if err := fieldTarget5.FromFloat(float64(m.Imag), tt.NonOptional().Field(1).Type); err != nil {
+			return err
+		}
+		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *Complex64) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+type Complex64Target struct {
+	Value      *complex64
+	wireValue  Complex64
+	realTarget vdl.Float32Target
+	imagTarget vdl.Float32Target
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *Complex64Target) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+	t.wireValue = Complex64{}
+	if ttWant := vdl.TypeOf((*Complex64)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *Complex64Target) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Real":
+		t.realTarget.Value = &t.wireValue.Real
+		target, err := &t.realTarget, error(nil)
+		return nil, target, err
+	case "Imag":
+		t.imagTarget.Value = &t.wireValue.Imag
+		target, err := &t.imagTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct math.Complex64", name)
+	}
+}
+func (t *Complex64Target) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *Complex64Target) FinishFields(_ vdl.FieldsTarget) error {
+
+	if err := Complex64ToNative(t.wireValue, t.Value); err != nil {
+		return err
+	}
+	return nil
+}
+
+type Complex128 struct {
+	Real float64
+	Imag float64
+}
+
+func (Complex128) __VDLReflect(struct {
+	Name string `vdl:"math.Complex128"`
+}) {
+}
+
+func (m *Complex128) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Real")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+		if err := fieldTarget3.FromFloat(float64(m.Real), tt.NonOptional().Field(0).Type); err != nil {
+			return err
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Imag")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+		if err := fieldTarget5.FromFloat(float64(m.Imag), tt.NonOptional().Field(1).Type); err != nil {
+			return err
+		}
+		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *Complex128) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+type Complex128Target struct {
+	Value      *complex128
+	wireValue  Complex128
+	realTarget vdl.Float64Target
+	imagTarget vdl.Float64Target
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *Complex128Target) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+	t.wireValue = Complex128{}
+	if ttWant := vdl.TypeOf((*Complex128)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *Complex128Target) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Real":
+		t.realTarget.Value = &t.wireValue.Real
+		target, err := &t.realTarget, error(nil)
+		return nil, target, err
+	case "Imag":
+		t.imagTarget.Value = &t.wireValue.Imag
+		target, err := &t.imagTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct math.Complex128", name)
+	}
+}
+func (t *Complex128Target) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *Complex128Target) FinishFields(_ vdl.FieldsTarget) error {
+
+	if err := Complex128ToNative(t.wireValue, t.Value); err != nil {
+		return err
+	}
+	return nil
+}
+
+// Create zero values for each type.
+var (
+	__VDLZeroComplex64 = func() complex64 {
+		var native complex64
+		if err := vdl.Convert(&native, Complex64{}); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+	__VDLZeroComplex128 = func() complex128 {
+		var native complex128
+		if err := vdl.Convert(&native, Complex128{}); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+)
+
+// Type-check native conversion functions.
+var (
+	_ func(Complex128, *complex128) error = Complex128ToNative
+	_ func(*Complex128, complex128) error = Complex128FromNative
+	_ func(Complex64, *complex64) error   = Complex64ToNative
+	_ func(*Complex64, complex64) error   = Complex64FromNative
+)
+
+var __VDLInitCalled bool
+
+// __VDLInit performs vdl initialization.  It is safe to call multiple times.
+// If you have an init ordering issue, just insert the following line verbatim
+// into your source files in this package, right after the "package foo" clause:
+//
+//    var _ = __VDLInit()
+//
+// The purpose of this function is to ensure that vdl initialization occurs in
+// the right order, and very early in the init sequence.  In particular, vdl
+// registration and package variable initialization needs to occur before
+// functions like vdl.TypeOf will work properly.
+//
+// This function returns a dummy value, so that it can be used to initialize the
+// first var in the file, to take advantage of Go's defined init order.
+func __VDLInit() struct{} {
+	if __VDLInitCalled {
+		return struct{}{}
+	}
+
+	// Register native type conversions first, so that vdl.TypeOf works.
+	vdl.RegisterNative(Complex128ToNative, Complex128FromNative)
+	vdl.RegisterNative(Complex64ToNative, Complex64FromNative)
+
+	// Register types.
+	vdl.Register((*Complex64)(nil))
+	vdl.Register((*Complex128)(nil))
+
+	return struct{}{}
+}
diff --git a/vdlroot/math/math_test.go b/vdlroot/math/math_test.go
new file mode 100644
index 0000000..2548478
--- /dev/null
+++ b/vdlroot/math/math_test.go
@@ -0,0 +1,48 @@
+// 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 math_test
+
+import (
+	"testing"
+	"v.io/v23/vom"
+)
+
+func TestComplex64EncodeDecode(t *testing.T) {
+	cplxIn := complex64(-1 - 3i)
+	data, err := vom.Encode(cplxIn)
+	if err != nil {
+		t.Fatalf("error encoding %T: %v", cplxIn, err)
+	}
+	var out interface{}
+	if err := vom.Decode(data, &out); err != nil {
+		t.Fatalf("error decoding %T: %v", cplxIn, err)
+	}
+	if cplxOut, ok := out.(complex64); ok {
+		if got, want := cplxOut, cplxIn; got != want {
+			t.Errorf("got %v, want %v", got, want)
+		}
+	} else {
+		t.Fatalf("incorrect output type: got %T, want %T", out, cplxIn)
+	}
+}
+
+func TestComplex128EncodeDecode(t *testing.T) {
+	cplxIn := complex128(-1 - 3i)
+	data, err := vom.Encode(cplxIn)
+	if err != nil {
+		t.Fatalf("error encoding %T: %v", cplxIn, err)
+	}
+	var out interface{}
+	if err := vom.Decode(data, &out); err != nil {
+		t.Fatalf("error decoding %T: %v", cplxIn, err)
+	}
+	if cplxOut, ok := out.(complex128); ok {
+		if got, want := cplxOut, cplxIn; got != want {
+			t.Errorf("got %v, want %v", got, want)
+		}
+	} else {
+		t.Fatalf("incorrect output type: got %T, want %T", out, cplxIn)
+	}
+}
diff --git a/vdlroot/math/native.go b/vdlroot/math/native.go
new file mode 100644
index 0000000..d0fab3a
--- /dev/null
+++ b/vdlroot/math/native.go
@@ -0,0 +1,25 @@
+// 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 math
+
+func Complex64ToNative(wire Complex64, native *complex64) error {
+	*native = complex(wire.Real, wire.Imag)
+	return nil
+}
+func Complex64FromNative(wire *Complex64, native complex64) error {
+	wire.Real = real(native)
+	wire.Imag = imag(native)
+	return nil
+}
+
+func Complex128ToNative(wire Complex128, native *complex128) error {
+	*native = complex(wire.Real, wire.Imag)
+	return nil
+}
+func Complex128FromNative(wire *Complex128, native complex128) error {
+	wire.Real = real(native)
+	wire.Imag = imag(native)
+	return nil
+}
diff --git a/vdlroot/math/vdl.config b/vdlroot/math/vdl.config
new file mode 100644
index 0000000..d0c2ed6
--- /dev/null
+++ b/vdlroot/math/vdl.config
@@ -0,0 +1,16 @@
+// The vdl.config file for the standard time package configures idiomatic native
+// types in each generated language.
+config = vdltool.Config{
+	Go: {
+		WireToNativeTypes: {
+			"Complex128": {
+				Type:    "complex128",
+				Imports: {},
+			},
+			"Complex64": {
+                Type:    "complex64",
+                Imports: {},
+            },
+		},
+	},
+}
diff --git a/vom/.api b/vom/.api
index e131440..dc12adf 100644
--- a/vom/.api
+++ b/vom/.api
@@ -26,8 +26,6 @@
 pkg vom, const WireIdBool typeId
 pkg vom, const WireIdByte typeId
 pkg vom, const WireIdByteList typeId
-pkg vom, const WireIdComplex128 typeId
-pkg vom, const WireIdComplex64 typeId
 pkg vom, const WireIdFirstUserType typeId
 pkg vom, const WireIdFloat32 typeId
 pkg vom, const WireIdFloat64 typeId
diff --git a/vom/decoder.go b/vom/decoder.go
index 4db2241..44f9b03 100644
--- a/vom/decoder.go
+++ b/vom/decoder.go
@@ -338,16 +338,6 @@
 			return err
 		}
 		return target.FromFloat(v, ttFrom)
-	case vdl.Complex64, vdl.Complex128:
-		re, err := binaryDecodeFloat(d.buf)
-		if err != nil {
-			return err
-		}
-		im, err := binaryDecodeFloat(d.buf)
-		if err != nil {
-			return err
-		}
-		return target.FromComplex(complex(re, im), ttFrom)
 	case vdl.String:
 		v, err := binaryDecodeString(d.buf)
 		if err != nil {
@@ -627,12 +617,6 @@
 		}
 		// The underlying encoding of all these types is based on uint.
 		return binaryIgnoreUint(d.buf)
-	case vdl.Complex64, vdl.Complex128:
-		// Complex is encoded as two floats, so we can simply ignore two uints.
-		if err := binaryIgnoreUint(d.buf); err != nil {
-			return err
-		}
-		return binaryIgnoreUint(d.buf)
 	case vdl.String:
 		return binaryIgnoreString(d.buf)
 	case vdl.Array, vdl.List, vdl.Set, vdl.Map:
diff --git a/vom/dump.go b/vom/dump.go
index 51f0882..1386eec 100644
--- a/vom/dump.go
+++ b/vom/dump.go
@@ -633,20 +633,6 @@
 		}
 		d.writeAtom(DumpKindPrimValue, PrimitivePFloat{v}, "float")
 		return target.FromFloat(v, ttFrom)
-	case vdl.Complex64, vdl.Complex128:
-		d.prepareAtom("waiting for complex real value")
-		re, err := binaryDecodeFloat(d.buf)
-		if err != nil {
-			return err
-		}
-		d.writeAtom(DumpKindPrimValue, PrimitivePFloat{re}, "complex real")
-		d.prepareAtom("waiting for complex imag value")
-		im, err := binaryDecodeFloat(d.buf)
-		if err != nil {
-			return err
-		}
-		d.writeAtom(DumpKindPrimValue, PrimitivePFloat{re}, "complex imag")
-		return target.FromComplex(complex(re, im), ttFrom)
 	case vdl.String:
 		d.prepareAtom("waiting for string len")
 		len, err := binaryDecodeLen(d.buf)
diff --git a/vom/encoder.go b/vom/encoder.go
index 13f45ba..982d374 100644
--- a/vom/encoder.go
+++ b/vom/encoder.go
@@ -472,24 +472,6 @@
 	return nil
 }
 
-var complexAllowed = []vdl.Kind{vdl.Complex64, vdl.Complex128}
-
-func (e *encoder) FromComplex(src complex128, tt *vdl.Type) error {
-	if err := e.prepareType(tt, complexAllowed...); err != nil {
-		return err
-	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if src != 0 || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-		} else {
-			return nil
-		}
-	}
-	binaryEncodeFloat(e.buf, real(src))
-	binaryEncodeFloat(e.buf, imag(src))
-	return nil
-}
-
 func (e *encoder) FromBytes(src []byte, tt *vdl.Type) error {
 	if !tt.IsBytes() {
 		return verror.New(errEncoderWantBytesType, nil, tt)
diff --git a/vom/misc.go b/vom/misc.go
index 0eb21bd..7ab9010 100644
--- a/vom/misc.go
+++ b/vom/misc.go
@@ -14,7 +14,7 @@
 		return false
 	}
 	switch t.Kind() {
-	case vdl.Complex64, vdl.Complex128, vdl.Array, vdl.List, vdl.Set, vdl.Map, vdl.Struct, vdl.Any, vdl.Union, vdl.Optional:
+	case vdl.Array, vdl.List, vdl.Set, vdl.Map, vdl.Struct, vdl.Any, vdl.Union, vdl.Optional:
 		return true
 	}
 	return false
diff --git a/vom/raw_bytes.go b/vom/raw_bytes.go
index 6f47559..32fe6c3 100644
--- a/vom/raw_bytes.go
+++ b/vom/raw_bytes.go
@@ -185,16 +185,6 @@
 	return r.finish()
 }
 
-func (r *rbTarget) FromComplex(src complex128, tt *vdl.Type) error {
-	if err := r.start(tt); err != nil {
-		return err
-	}
-	if err := r.enc.FromComplex(src, tt); err != nil {
-		return err
-	}
-	return r.finish()
-}
-
 func (r *rbTarget) FromBytes(src []byte, tt *vdl.Type) error {
 	if err := r.start(tt); err != nil {
 		return err
diff --git a/vom/testdata/data80/data80.vdl.go b/vom/testdata/data80/data80.vdl.go
index 01763d2..1ffc653 100644
--- a/vom/testdata/data80/data80.vdl.go
+++ b/vom/testdata/data80/data80.vdl.go
@@ -996,54 +996,6 @@
 		HexValue:   "16fd2050c0",
 	},
 	{
-		Name:       "complex64(0)",
-		Value:      vdl.ValueOf(complex64(0)),
-		TypeString: "complex64",
-		Hex:        "8018020000",
-		HexVersion: "80",
-		HexValue:   "18020000",
-	},
-	{
-		Name:       "complex64(64.5+64.5i)",
-		Value:      vdl.ValueOf(complex64(64.5 + 64.5i)),
-		TypeString: "complex64",
-		Hex:        "801808fd205040fd205040",
-		HexVersion: "80",
-		HexValue:   "1808fd205040fd205040",
-	},
-	{
-		Name:       "complex64(64.5-64.5i)",
-		Value:      vdl.ValueOf(complex64(64.5 - 64.5i)),
-		TypeString: "complex64",
-		Hex:        "801808fd205040fd2050c0",
-		HexVersion: "80",
-		HexValue:   "1808fd205040fd2050c0",
-	},
-	{
-		Name:       "complex128(0)",
-		Value:      vdl.ValueOf(complex128(0)),
-		TypeString: "complex128",
-		Hex:        "801a020000",
-		HexVersion: "80",
-		HexValue:   "1a020000",
-	},
-	{
-		Name:       "complex128(128.5+128.5i)",
-		Value:      vdl.ValueOf(complex128(128.5 + 128.5i)),
-		TypeString: "complex128",
-		Hex:        "801a08fd106040fd106040",
-		HexVersion: "80",
-		HexValue:   "1a08fd106040fd106040",
-	},
-	{
-		Name:       "complex128(128.5-128.5i)",
-		Value:      vdl.ValueOf(complex128(128.5 - 128.5i)),
-		TypeString: "complex128",
-		Hex:        "801a08fd106040fd1060c0",
-		HexVersion: "80",
-		HexValue:   "1a08fd106040fd1060c0",
-	},
-	{
 		Name:       "types.NBool(true)",
 		Value:      vdl.ValueOf(types.NBool(true)),
 		TypeString: "v.io/v23/vom/testdata/types.NBool bool",
@@ -1360,60 +1312,6 @@
 		HexValue:   "52fd2050c0",
 	},
 	{
-		Name:       "types.NComplex64(0)",
-		Value:      vdl.ValueOf(types.NComplex64(0)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex64 complex64",
-		Hex:        "80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce152020000",
-		HexVersion: "80",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "52020000",
-	},
-	{
-		Name:       "types.NComplex64(64.5+64.5i)",
-		Value:      vdl.ValueOf(types.NComplex64(64.5 + 64.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex64 complex64",
-		Hex:        "80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd205040",
-		HexVersion: "80",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "5208fd205040fd205040",
-	},
-	{
-		Name:       "types.NComplex64(64.5-64.5i)",
-		Value:      vdl.ValueOf(types.NComplex64(64.5 - 64.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex64 complex64",
-		Hex:        "80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd2050c0",
-		HexVersion: "80",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "5208fd205040fd2050c0",
-	},
-	{
-		Name:       "types.NComplex128(0)",
-		Value:      vdl.ValueOf(types.NComplex128(0)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex128 complex128",
-		Hex:        "80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de152020000",
-		HexVersion: "80",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "52020000",
-	},
-	{
-		Name:       "types.NComplex128(128.5+128.5i)",
-		Value:      vdl.ValueOf(types.NComplex128(128.5 + 128.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex128 complex128",
-		Hex:        "80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd106040",
-		HexVersion: "80",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "5208fd106040fd106040",
-	},
-	{
-		Name:       "types.NComplex128(128.5-128.5i)",
-		Value:      vdl.ValueOf(types.NComplex128(128.5 - 128.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex128 complex128",
-		Hex:        "80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd1060c0",
-		HexVersion: "80",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "5208fd106040fd1060c0",
-	},
-	{
 		Name: "types.NArray2Uint64{1, 2}",
 		Value: vdl.ValueOf(types.NArray2Uint64{
 			1,
@@ -1973,22 +1871,6 @@
 		HexValue:   "1c0b",
 	},
 	{
-		Name:       "typeobject(complex64)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*complex64)(nil))),
-		TypeString: "typeobject",
-		Hex:        "801c0c",
-		HexVersion: "80",
-		HexValue:   "1c0c",
-	},
-	{
-		Name:       "typeobject(complex128)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*complex128)(nil))),
-		TypeString: "typeobject",
-		Hex:        "801c0d",
-		HexVersion: "80",
-		HexValue:   "1c0d",
-	},
-	{
 		Name:       "typeobject(types.NBool)",
 		Value:      vdl.ValueOf(vdl.TypeOf((*types.NBool)(nil))),
 		TypeString: "typeobject",
@@ -2070,24 +1952,6 @@
 		HexValue:   "1c29",
 	},
 	{
-		Name:       "typeobject(types.NComplex64)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*types.NComplex64)(nil))),
-		TypeString: "typeobject",
-		Hex:        "80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce11c29",
-		HexVersion: "80",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "1c29",
-	},
-	{
-		Name:       "typeobject(types.NComplex128)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*types.NComplex128)(nil))),
-		TypeString: "typeobject",
-		Hex:        "80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de11c29",
-		HexVersion: "80",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "1c29",
-	},
-	{
 		Name:       "typeobject(types.NArray2Uint64)",
 		Value:      vdl.ValueOf(vdl.TypeOf((*types.NArray2Uint64)(nil))),
 		TypeString: "typeobject",
@@ -2298,28 +2162,6 @@
 		HexValue:   "5204000b00e1",
 	},
 	{
-		Name: "types.StructAny{Any: complex64(0)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex64(0)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15205000c0000e1",
-		HexVersion: "80",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "5205000c0000e1",
-	},
-	{
-		Name: "types.StructAny{Any: complex128(0)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex128(0)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15205000d0000e1",
-		HexVersion: "80",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "5205000d0000e1",
-	},
-	{
 		Name: "types.StructAny{Any: \"\"}",
 		Value: vdl.ValueOf(types.StructAny{
 			Any: vdl.ValueOf(""),
@@ -2632,28 +2474,6 @@
 		HexValue:   "5206000bfef03fe1",
 	},
 	{
-		Name: "types.StructAny{Any: complex64(1)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex64(1)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15207000cfef03f00e1",
-		HexVersion: "80",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "5207000cfef03f00e1",
-	},
-	{
-		Name: "types.StructAny{Any: complex128(1)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex128(1)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15207000dfef03f00e1",
-		HexVersion: "80",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "5207000dfef03f00e1",
-	},
-	{
 		Name: "types.StructAny{Any: \"A\"}",
 		Value: vdl.ValueOf(types.StructAny{
 			Any: vdl.ValueOf("A"),
@@ -2878,22 +2698,6 @@
 		HexValue:   "1600",
 	},
 	{
-		Name:       "complex64(0)",
-		Value:      vdl.ValueOf(complex64(0)),
-		TypeString: "complex64",
-		Hex:        "8018020000",
-		HexVersion: "80",
-		HexValue:   "18020000",
-	},
-	{
-		Name:       "complex128(0)",
-		Value:      vdl.ValueOf(complex128(0)),
-		TypeString: "complex128",
-		Hex:        "801a020000",
-		HexVersion: "80",
-		HexValue:   "1a020000",
-	},
-	{
 		Name:       "\"\"",
 		Value:      vdl.ValueOf(""),
 		TypeString: "string",
@@ -3070,22 +2874,6 @@
 		HexValue:   "16fef03f",
 	},
 	{
-		Name:       "complex64(1)",
-		Value:      vdl.ValueOf(complex64(1)),
-		TypeString: "complex64",
-		Hex:        "801804fef03f00",
-		HexVersion: "80",
-		HexValue:   "1804fef03f00",
-	},
-	{
-		Name:       "complex128(1)",
-		Value:      vdl.ValueOf(complex128(1)),
-		TypeString: "complex128",
-		Hex:        "801a04fef03f00",
-		HexVersion: "80",
-		HexValue:   "1a04fef03f00",
-	},
-	{
 		Name:       "\"A\"",
 		Value:      vdl.ValueOf("A"),
 		TypeString: "string",
@@ -3198,23 +2986,21 @@
 		HexValue:   "1c01",
 	},
 	{
-		Name: "types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: \"A\", Bytes: \"A\", Float32: 1, Float64: 1, Complex64: 1, Complex128: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: \"Abcd\", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: \"A\"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}",
+		Name: "types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: \"A\", Bytes: \"A\", Float32: 1, Float64: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: \"Abcd\", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: \"A\"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}",
 		Value: vdl.ValueOf(types.StructManyTypes{
-			Bool:       true,
-			AByte:      1,
-			Int16:      1,
-			Int32:      1,
-			Int64:      1,
-			Uint16:     1,
-			Uint32:     1,
-			Uint64:     1,
-			String:     "A",
-			Bytes:      []byte("A"),
-			Float32:    1,
-			Float64:    1,
-			Complex64:  1,
-			Complex128: 1,
-			FoodEnum:   types.FoodEnumCherry,
+			Bool:     true,
+			AByte:    1,
+			Int16:    1,
+			Int32:    1,
+			Int64:    1,
+			Uint16:   1,
+			Uint32:   1,
+			Uint64:   1,
+			String:   "A",
+			Bytes:    []byte("A"),
+			Float32:  1,
+			Float64:  1,
+			FoodEnum: types.FoodEnumCherry,
 			NListUint64: types.NListUint64{
 				1,
 			},
@@ -3240,11 +3026,11 @@
 			NUnion:     types.NUnionA{true},
 			TypeObject: vdl.TypeOf((*bool)(nil)),
 		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
-		Hex:        "80533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1",
+		TypeString: "v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
+		Hex:        "80533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1",
 		HexVersion: "80",
-		HexType:    "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1",
-		HexValue:   "5249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1",
+		HexType:    "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1",
+		HexValue:   "523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1",
 	},
 	{
 		Name: "types.AnySlice{types.NInt16(1), types.NInt32(2), types.NInt64(3), types.NInt32(4)}",
@@ -3322,8 +3108,6 @@
 		vdl.TypeOf((*int64)(nil)),
 		vdl.TypeOf((*float32)(nil)),
 		vdl.TypeOf((*float64)(nil)),
-		vdl.TypeOf((*complex64)(nil)),
-		vdl.TypeOf((*complex128)(nil)),
 		vdl.TypeOf((*types.NUint16)(nil)),
 		vdl.TypeOf((*types.NUint32)(nil)),
 		vdl.TypeOf((*types.NUint64)(nil)),
@@ -3332,8 +3116,6 @@
 		vdl.TypeOf((*types.NInt64)(nil)),
 		vdl.TypeOf((*types.NFloat32)(nil)),
 		vdl.TypeOf((*types.NFloat64)(nil)),
-		vdl.TypeOf((*types.NComplex64)(nil)),
-		vdl.TypeOf((*types.NComplex128)(nil)),
 	},
 	"string list/array": {
 		vdl.TypeOf((*[]string)(nil)),
@@ -3439,7 +3221,6 @@
 				vdl.ValueOf(int32(3)),
 				vdl.ValueOf(float64(3)),
 				vdl.ValueOf(int64(3)),
-				vdl.ValueOf(complex128(3)),
 			},
 		},
 		{
@@ -3450,7 +3231,6 @@
 				vdl.ValueOf(int32(256)),
 				vdl.ValueOf(float64(256)),
 				vdl.ValueOf(int64(256)),
-				vdl.ValueOf(complex128(256)),
 			},
 		},
 		{
@@ -3460,7 +3240,6 @@
 				vdl.ValueOf(int32(-5)),
 				vdl.ValueOf(float64(-5)),
 				vdl.ValueOf(int64(-5)),
-				vdl.ValueOf(complex128(-5)),
 			},
 		},
 		{
@@ -3468,7 +3247,6 @@
 			PrimaryType: vdl.TypeOf((*float64)(nil)),
 			Values: []*vdl.Value{
 				vdl.ValueOf(float64(3.3)),
-				vdl.ValueOf(complex128(3.3)),
 			},
 		},
 		{
@@ -3478,13 +3256,6 @@
 				vdl.ValueOf(int64(-9223372036854775808)),
 			},
 		},
-		{
-			Name:        "complex128",
-			PrimaryType: vdl.TypeOf((*complex128)(nil)),
-			Values: []*vdl.Value{
-				vdl.ValueOf(complex128(1.5 - 1i)),
-			},
-		},
 	},
 	"string and enum": {
 		{
@@ -3609,7 +3380,6 @@
 				vdl.ValueOf(types.StructOnlyMap{
 					"Key1": 4,
 					"Key2": 5,
-					"Key3": 0,
 				}),
 				vdl.ValueOf(types.MapOnlyStruct{
 					Key1: 4,
diff --git a/vom/testdata/data80/vomdata.vdl b/vom/testdata/data80/vomdata.vdl
index 7888f6d..798ee72 100644
--- a/vom/testdata/data80/vomdata.vdl
+++ b/vom/testdata/data80/vomdata.vdl
@@ -1606,96 +1606,6 @@
 		"80", "", "16fd2050c0",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "18020000"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 2, MsgN: 2, Value: complex64(0+0i)}
-	{
-		`complex64(0)`,
-		complex64(0),
-		"complex64",
-		"8018020000",
-		"80", "", "18020000",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1808fd205040fd205040"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd205040             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 8, MsgN: 8, Value: complex64(64.5+64.5i)}
-	{
-		`complex64(64.5+64.5i)`,
-		complex64(64.5+64.5i),
-		"complex64",
-		"801808fd205040fd205040",
-		"80", "", "1808fd205040fd205040",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1808fd205040fd2050c0"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd2050c0             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 8, MsgN: 8, Value: complex64(64.5+-64.5i)}
-	{
-		`complex64(64.5-64.5i)`,
-		complex64(64.5-64.5i),
-		"complex64",
-		"801808fd205040fd2050c0",
-		"80", "", "1808fd205040fd2050c0",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "1a020000"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 2, MsgN: 2, Value: complex128(0+0i)}
-	{
-		`complex128(0)`,
-		complex128(0),
-		"complex128",
-		"801a020000",
-		"80", "", "1a020000",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1a08fd106040fd106040"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd106040             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 8, MsgN: 8, Value: complex128(128.5+128.5i)}
-	{
-		`complex128(128.5+128.5i)`,
-		complex128(128.5+128.5i),
-		"complex128",
-		"801a08fd106040fd106040",
-		"80", "", "1a08fd106040fd106040",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1a08fd106040fd1060c0"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd1060c0             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 8, MsgN: 8, Value: complex128(128.5+-128.5i)}
-	{
-		`complex128(128.5-128.5i)`,
-		complex128(128.5-128.5i),
-		"complex128",
-		"801a08fd106040fd1060c0",
-		"80", "", "1a08fd106040fd1060c0",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(43): "5127000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15201"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -2526,162 +2436,6 @@
 		"80", "512a000024762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e466c6f61743634010be1", "52fd2050c0",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce152020000"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(4): "52020000"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vom/testdata/types.NComplex64 complex64(0+0i)}
-	{
-		`types.NComplex64(0)`,
-		types.NComplex64(0),
-		"v.io/v23/vom/testdata/types.NComplex64 complex64",
-		"80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce152020000",
-		"80", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "52020000",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd205040"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(10): "5208fd205040fd205040"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd205040             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex64 complex64(64.5+64.5i)}
-	{
-		`types.NComplex64(64.5+64.5i)`,
-		types.NComplex64(64.5+64.5i),
-		"v.io/v23/vom/testdata/types.NComplex64 complex64",
-		"80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd205040",
-		"80", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "5208fd205040fd205040",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd2050c0"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(10): "5208fd205040fd2050c0"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd2050c0             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex64 complex64(64.5+-64.5i)}
-	{
-		`types.NComplex64(64.5-64.5i)`,
-		types.NComplex64(64.5-64.5i),
-		"v.io/v23/vom/testdata/types.NComplex64 complex64",
-		"80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd2050c0",
-		"80", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "5208fd205040fd2050c0",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(51): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de152020000"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(4): "52020000"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vom/testdata/types.NComplex128 complex128(0+0i)}
-	{
-		`types.NComplex128(0)`,
-		types.NComplex128(0),
-		"v.io/v23/vom/testdata/types.NComplex128 complex128",
-		"80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de152020000",
-		"80", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "52020000",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(57): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd106040"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(10): "5208fd106040fd106040"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd106040             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex128 complex128(128.5+128.5i)}
-	{
-		`types.NComplex128(128.5+128.5i)`,
-		types.NComplex128(128.5+128.5i),
-		"v.io/v23/vom/testdata/types.NComplex128 complex128",
-		"80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd106040",
-		"80", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "5208fd106040fd106040",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(57): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd1060c0"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(10): "5208fd106040fd1060c0"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd1060c0             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex128 complex128(128.5+-128.5i)}
-	{
-		`types.NComplex128(128.5-128.5i)`,
-		types.NComplex128(128.5-128.5i),
-		"v.io/v23/vom/testdata/types.NComplex128 complex128",
-		"80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd1060c0",
-		"80", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "5208fd106040fd1060c0",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "5131020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15203000102"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -5079,32 +4833,6 @@
 		"80", "", "1c0b",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(2): "1c0c"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 0c                   TypeId                            12 [complex64]
-	// DumpStatus{MsgId: 14, MsgN: 2, Value: typeobject(complex64)}
-	{
-		`typeobject(complex64)`,
-		typeobject(complex64),
-		"typeobject",
-		"801c0c",
-		"80", "", "1c0c",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(2): "1c0d"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 0d                   TypeId                            13 [complex128]
-	// DumpStatus{MsgId: 14, MsgN: 2, Value: typeobject(complex128)}
-	{
-		`typeobject(complex128)`,
-		typeobject(complex128),
-		"typeobject",
-		"801c0d",
-		"80", "", "1c0d",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(43): "5127000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e11c29"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -5321,54 +5049,6 @@
 		"80", "512a000024762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e466c6f61743634010be1", "1c29",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(48): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce11c29"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(2): "1c29"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 29                   TypeId                            41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// DumpStatus{MsgId: 14, MsgN: 2, Value: typeobject(v.io/v23/vom/testdata/types.NComplex64 complex64)}
-	{
-		`typeobject(types.NComplex64)`,
-		typeobject(types.NComplex64),
-		"typeobject",
-		"80512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce11c29",
-		"80", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "1c29",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(49): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de11c29"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(2): "1c29"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 29                   TypeId                            41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// DumpStatus{MsgId: 14, MsgN: 2, Value: typeobject(v.io/v23/vom/testdata/types.NComplex128 complex128)}
-	{
-		`typeobject(types.NComplex128)`,
-		typeobject(types.NComplex128),
-		"typeobject",
-		"80512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de11c29",
-		"80", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "1c29",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(53): "5131020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e11c29"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -6009,76 +5689,6 @@
 		"80", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "5204000b00e1",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(60): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15205000c0000e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(7): "5205000c0000e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 05                   MsgLen                             5
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 0c                   TypeId                            12 [complex64]
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex64(0+0i)}}
-	{
-		`types.StructAny{Any: complex64(0)}`,
-		types.StructAny{Any: complex64(0)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15205000c0000e1",
-		"80", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "5205000c0000e1",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(60): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15205000d0000e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(7): "5205000d0000e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 05                   MsgLen                             5
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 0d                   TypeId                            13 [complex128]
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex128(0+0i)}}
-	{
-		`types.StructAny{Any: complex128(0)}`,
-		types.StructAny{Any: complex128(0)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15205000d0000e1",
-		"80", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "5205000d0000e1",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(59): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15204000300e1"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -7323,76 +6933,6 @@
 		"80", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "5206000bfef03fe1",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(62): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15207000cfef03f00e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(9): "5207000cfef03f00e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 07                   MsgLen                             7
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 0c                   TypeId                            12 [complex64]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex64(1+0i)}}
-	{
-		`types.StructAny{Any: complex64(1)}`,
-		types.StructAny{Any: complex64(1)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15207000cfef03f00e1",
-		"80", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "5207000cfef03f00e1",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(62): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15207000dfef03f00e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(9): "5207000dfef03f00e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 07                   MsgLen                             7
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 0d                   TypeId                            13 [complex128]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex128(1+0i)}}
-	{
-		`types.StructAny{Any: complex128(1)}`,
-		types.StructAny{Any: complex128(1)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15207000dfef03f00e1",
-		"80", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "5207000dfef03f00e1",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(60): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1520500030141e1"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -8060,36 +7600,6 @@
 		"80", "", "1600",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "18020000"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 2, MsgN: 2, Value: complex64(0+0i)}
-	{
-		`complex64(0)`,
-		complex64(0),
-		"complex64",
-		"8018020000",
-		"80", "", "18020000",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "1a020000"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 2, MsgN: 2, Value: complex128(0+0i)}
-	{
-		`complex128(0)`,
-		complex128(0),
-		"complex128",
-		"801a020000",
-		"80", "", "1a020000",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(2): "0600"}
 	// 06                   MsgId                              3
 	//                      ValueMsg                           3 [string]
@@ -8511,36 +8021,6 @@
 		"80", "", "16fef03f",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(6): "1804fef03f00"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 04                   MsgLen                             4
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 4, MsgN: 4, Value: complex64(1+0i)}
-	{
-		`complex64(1)`,
-		complex64(1),
-		"complex64",
-		"801804fef03f00",
-		"80", "", "1804fef03f00",
-	},
-	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(6): "1a04fef03f00"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 04                   MsgLen                             4
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 4, MsgN: 4, Value: complex128(1+0i)}
-	{
-		`complex128(1)`,
-		complex128(1),
-		"complex128",
-		"801a04fef03f00",
-		"80", "", "1a04fef03f00",
-	},
-	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(3): "060141"}
 	// 06                   MsgId                              3
 	//                      ValueMsg                           3 [string]
@@ -8839,7 +8319,7 @@
 		"80", "", "1c01",
 	},
 	// 80                   Version                          128 [vom version 80]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(905): "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(866): "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 53                   MsgId                            -42
 	//                      TypeMsg                           42
 	// 3b                   MsgLen                            59
@@ -8856,7 +8336,7 @@
 	// 06                   ByteLen                            6 [string len]
 	// 436865727279         PrimValue                   "Cherry" [string]
 	// e1                   Control                          End [v.io/v23/vom.wireEnum END]
-	// DumpStatus{MsgId: -42, MsgLen: 59, MsgN: 59, Buf(844): "552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -42, MsgLen: 59, MsgN: 59, Buf(805): "552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 55                   MsgId                            -43
 	//                      TypeMsg                           43
 	// 2d                   MsgLen                            45
@@ -8873,7 +8353,7 @@
 	// 01                   ByteLen                            1 [string len]
 	// 43                   PrimValue                        "C" [string]
 	// e1                   Control                          End [v.io/v23/vom.wireEnum END]
-	// DumpStatus{MsgId: -43, MsgLen: 45, MsgN: 45, Buf(797): "572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -43, MsgLen: 45, MsgN: 45, Buf(758): "572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 57                   MsgId                            -44
 	//                      TypeMsg                           44
 	// 2d                   MsgLen                            45
@@ -8884,7 +8364,7 @@
 	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
 	// 06                   PrimValue                          6 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireList END]
-	// DumpStatus{MsgId: -44, MsgLen: 45, MsgN: 45, Buf(750): "592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -44, MsgLen: 45, MsgN: 45, Buf(711): "592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 59                   MsgId                            -45
 	//                      TypeMsg                           45
 	// 2e                   MsgLen                            46
@@ -8897,7 +8377,7 @@
 	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
 	// 04                   PrimValue                          4 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireArray END]
-	// DumpStatus{MsgId: -45, MsgLen: 46, MsgN: 46, Buf(702): "5b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -45, MsgLen: 46, MsgN: 46, Buf(663): "5b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 5b                   MsgId                            -46
 	//                      TypeMsg                           46
 	// 31                   MsgLen                            49
@@ -8910,7 +8390,7 @@
 	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
 	// 02                   PrimValue                          2 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireArray END]
-	// DumpStatus{MsgId: -46, MsgLen: 49, MsgN: 49, Buf(651): "5d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -46, MsgLen: 49, MsgN: 49, Buf(612): "5d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 5d                   MsgId                            -47
 	//                      TypeMsg                           47
 	// 2c                   MsgLen                            44
@@ -8921,7 +8401,7 @@
 	// 01                   Index                              1 [v.io/v23/vom.wireSet.Key]
 	// 06                   PrimValue                          6 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireSet END]
-	// DumpStatus{MsgId: -47, MsgLen: 44, MsgN: 44, Buf(605): "5f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -47, MsgLen: 44, MsgN: 44, Buf(566): "5f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 5f                   MsgId                            -48
 	//                      TypeMsg                           48
 	// 34                   MsgLen                            52
@@ -8934,7 +8414,7 @@
 	// 02                   Index                              2 [v.io/v23/vom.wireMap.Elem]
 	// 03                   PrimValue                          3 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireMap END]
-	// DumpStatus{MsgId: -48, MsgLen: 52, MsgN: 52, Buf(551): "613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -48, MsgLen: 52, MsgN: 52, Buf(512): "613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 61                   MsgId                            -49
 	//                      TypeMsg                           49
 	// 3b                   MsgLen                            59
@@ -8963,7 +8443,7 @@
 	// 09                   PrimValue                          9 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
-	// DumpStatus{MsgId: -49, MsgLen: 59, MsgN: 59, Buf(490): "633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -49, MsgLen: 59, MsgN: 59, Buf(451): "633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 63                   MsgId                            -50
 	//                      TypeMsg                           50
 	// 3a                   MsgLen                            58
@@ -8992,16 +8472,16 @@
 	// 09                   PrimValue                          9 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
-	// DumpStatus{MsgId: -50, MsgLen: 58, MsgN: 58, Buf(430): "51fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -50, MsgLen: 58, MsgN: 58, Buf(391): "51fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
-	// fe015f               MsgLen                           351
+	// fe0142               MsgLen                           322
 	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
 	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
 	// 2b                   ByteLen                           43 [string len]
 	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e795479706573 PrimValue       "v.io/v23/vom/testdata/types.StructManyTypes" [string]
 	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 18                   ValueLen                          24 [list len]
+	// 16                   ValueLen                          22 [list len]
 	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
 	// 04                   ByteLen                            4 [string len]
 	// 426f6f6c             PrimValue                     "Bool" [string]
@@ -9075,18 +8555,6 @@
 	// 0b                   PrimValue                         11 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 09                   ByteLen                            9 [string len]
-	// 436f6d706c65783634   PrimValue                "Complex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireField END]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 0a                   ByteLen                           10 [string len]
-	// 436f6d706c6578313238 PrimValue               "Complex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireField END]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
 	// 08                   ByteLen                            8 [string len]
 	// 466f6f64456e756d     PrimValue                 "FoodEnum" [string]
 	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
@@ -9147,10 +8615,10 @@
 	// 0e                   PrimValue                         14 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
-	// DumpStatus{MsgId: -41, MsgLen: 351, MsgN: 351, Buf(75): "5249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1"}
+	// DumpStatus{MsgId: -41, MsgLen: 322, MsgN: 322, Buf(65): "523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1"}
 	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}]
-	// 49                   MsgLen                            73
+	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}]
+	// 3f                   MsgLen                            63
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructManyTypes.Bool]
 	// 01                   PrimValue                       true [bool]
 	// 01                   Index                              1 [v.io/v23/vom/testdata/types.StructManyTypes.AByte]
@@ -9177,49 +8645,43 @@
 	// fef03f               PrimValue                          1 [float]
 	// 0b                   Index                             11 [v.io/v23/vom/testdata/types.StructManyTypes.Float64]
 	// fef03f               PrimValue                          1 [float]
-	// 0c                   Index                             12 [v.io/v23/vom/testdata/types.StructManyTypes.Complex64]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// 0d                   Index                             13 [v.io/v23/vom/testdata/types.StructManyTypes.Complex128]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// 0e                   Index                             14 [v.io/v23/vom/testdata/types.StructManyTypes.FoodEnum]
+	// 0c                   Index                             12 [v.io/v23/vom/testdata/types.StructManyTypes.FoodEnum]
 	// 02                   Index                              2 [v.io/v23/vom/testdata/types.FoodEnum.Cherry]
-	// 10                   Index                             16 [v.io/v23/vom/testdata/types.StructManyTypes.NListUint64]
+	// 0e                   Index                             14 [v.io/v23/vom/testdata/types.StructManyTypes.NListUint64]
 	// 01                   ValueLen                           1 [list len]
 	// 01                   PrimValue                          1 [uint]
-	// 11                   Index                             17 [v.io/v23/vom/testdata/types.StructManyTypes.NByteArray]
+	// 0f                   Index                             15 [v.io/v23/vom/testdata/types.StructManyTypes.NByteArray]
 	// 00                   ByteLen                            4 [bytes len]
 	// 41626364             PrimValue                     "Abcd" [bytes]
-	// 12                   Index                             18 [v.io/v23/vom/testdata/types.StructManyTypes.NArray2Uint64]
+	// 10                   Index                             16 [v.io/v23/vom/testdata/types.StructManyTypes.NArray2Uint64]
 	// 00                   ValueLen                           2 [list len]
 	// 00                   PrimValue                          0 [uint]
 	// 01                   PrimValue                          1 [uint]
-	// 13                   Index                             19 [v.io/v23/vom/testdata/types.StructManyTypes.NSetUint64]
+	// 11                   Index                             17 [v.io/v23/vom/testdata/types.StructManyTypes.NSetUint64]
 	// 01                   ValueLen                           1 [set len]
 	// 01                   PrimValue                          1 [uint]
-	// 14                   Index                             20 [v.io/v23/vom/testdata/types.StructManyTypes.NMapUint64String]
+	// 12                   Index                             18 [v.io/v23/vom/testdata/types.StructManyTypes.NMapUint64String]
 	// 01                   ValueLen                           1 [map len]
 	// 01                   PrimValue                          1 [uint]
 	// 01                   ByteLen                            1 [string len]
 	// 41                   PrimValue                        "A" [string]
-	// 15                   Index                             21 [v.io/v23/vom/testdata/types.StructManyTypes.NStruct]
+	// 13                   Index                             19 [v.io/v23/vom/testdata/types.StructManyTypes.NStruct]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NStruct.A]
 	// 01                   PrimValue                       true [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.NStruct END]
-	// 16                   Index                             22 [v.io/v23/vom/testdata/types.StructManyTypes.NUnion]
+	// 14                   Index                             20 [v.io/v23/vom/testdata/types.StructManyTypes.NUnion]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NUnion.A]
 	// 01                   PrimValue                       true [bool]
-	// 17                   Index                             23 [v.io/v23/vom/testdata/types.StructManyTypes.TypeObject]
+	// 15                   Index                             21 [v.io/v23/vom/testdata/types.StructManyTypes.TypeObject]
 	// 01                   TypeId                             1 [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructManyTypes END]
-	// DumpStatus{MsgId: 41, MsgLen: 73, MsgN: 73, Value: v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, Complex64: 1+0i, Complex128: 1+0i, FoodEnum: Cherry, NEnum: A, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true, B: "", C: 0}, NUnion: {A: true}, TypeObject: bool}}
+	// DumpStatus{MsgId: 41, MsgLen: 63, MsgN: 63, Value: v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, FoodEnum: Cherry, NEnum: A, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true, B: "", C: 0}, NUnion: {A: true}, TypeObject: bool}}
 	{
-		`types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, Complex64: 1, Complex128: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}`,
-		types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, Complex64: 1, Complex128: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)},
-		"v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
-		"80533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1",
-		"80", "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1", "5249000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011701e1",
+		`types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}`,
+		types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)},
+		"v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
+		"80533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1",
+		"80", "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1", "523f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011501e1",
 	},
 	// 80                   Version                          128 [vom version 80]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(181): "512a030024762e696f2f7632332f766f6d2f74657374646174612f74797065732e416e79536c696365010fe15328000022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e496e7431360107e15528000022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e496e7433320108e15728000022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e496e7436340109e15209042a022b042c062b08"}
@@ -9387,7 +8849,7 @@
 	"map[string]X/struct": []typeobject{typeobject(types.MapOnlyStruct), typeobject(types.StructOnlyMap)},
 	"map[string]bool/set[string]/struct": []typeobject{typeobject(types.MapSetStruct), typeobject(types.SetStructMap), typeobject(types.MapStructSet)},
 	"number list/array": []typeobject{typeobject([]int32), typeobject(types.NArray2Uint64), typeobject(types.NListUint64)},
-	"number": []typeobject{typeobject(uint16), typeobject(uint32), typeobject(uint64), typeobject(int16), typeobject(int32), typeobject(int64), typeobject(float32), typeobject(float64), typeobject(complex64), typeobject(complex128), typeobject(types.NUint16), typeobject(types.NUint32), typeobject(types.NUint64), typeobject(types.NInt16), typeobject(types.NInt32), typeobject(types.NInt64), typeobject(types.NFloat32), typeobject(types.NFloat64), typeobject(types.NComplex64), typeobject(types.NComplex128)},
+	"number": []typeobject{typeobject(uint16), typeobject(uint32), typeobject(uint64), typeobject(int16), typeobject(int32), typeobject(int64), typeobject(float32), typeobject(float64), typeobject(types.NUint16), typeobject(types.NUint32), typeobject(types.NUint64), typeobject(types.NInt16), typeobject(types.NInt32), typeobject(types.NInt64), typeobject(types.NFloat32), typeobject(types.NFloat64)},
 	"string list/array": []typeobject{typeobject([]string), typeobject(types.ListString), typeobject(types.Array3String), typeobject(types.Array4String)},
 	"string/[]byte/enum": []typeobject{typeobject(string), typeobject(types.NString), typeobject([]byte), typeobject(types.NByteSlice), typeobject(types.NByteArray), typeobject(types.NEnum)},
 	"struct A": []typeobject{typeobject(types.NStruct), typeobject(types.AbcStruct), typeobject(types.AdeStruct)},
@@ -9431,33 +8893,28 @@
 		{
 			"byte",
 			typeobject(byte),
-			{ byte(3), uint16(3), int32(3), float64(3), int64(3), complex128(3), },
+			{ byte(3), uint16(3), int32(3), float64(3), int64(3), },
 		},
 		{
 			"uint16",
 			typeobject(uint16),
-			{ uint16(256), int32(256), float64(256), int64(256), complex128(256), },
+			{ uint16(256), int32(256), float64(256), int64(256), },
 		},
 		{
 			"int32",
 			typeobject(int32),
-			{ int32(-5), float64(-5), int64(-5), complex128(-5), },
+			{ int32(-5), float64(-5), int64(-5), },
 		},
 		{
 			"float64",
 			typeobject(float64),
-			{ float64(3.3), complex128(3.3), },
+			{ float64(3.3), },
 		},
 		{
 			"int64",
 			typeobject(int64),
 			{ int64(-9223372036854775808), },
 		},
-		{
-			"complex128",
-			typeobject(complex128),
-			{ complex128(1.5-1i), },
-		},
 	},
 	"string and enum": {
 		{
@@ -9510,7 +8967,7 @@
 		{
 			"struct+map",
 			typeobject(types.MapOnlyStruct),
-			{ types.StructOnlyMap{"Key1": 4, "Key2": 5, "Key3": 0}, types.MapOnlyStruct{Key1: 4, Key2: 5}, },
+			{ types.StructOnlyMap{"Key1": 4, "Key2": 5}, types.MapOnlyStruct{Key1: 4, Key2: 5}, },
 		},
 		{
 			"map+set",
diff --git a/vom/testdata/data81/data81.vdl.go b/vom/testdata/data81/data81.vdl.go
index 5b6e396..cdca683 100644
--- a/vom/testdata/data81/data81.vdl.go
+++ b/vom/testdata/data81/data81.vdl.go
@@ -996,54 +996,6 @@
 		HexValue:   "16fd2050c0",
 	},
 	{
-		Name:       "complex64(0)",
-		Value:      vdl.ValueOf(complex64(0)),
-		TypeString: "complex64",
-		Hex:        "8118020000",
-		HexVersion: "81",
-		HexValue:   "18020000",
-	},
-	{
-		Name:       "complex64(64.5+64.5i)",
-		Value:      vdl.ValueOf(complex64(64.5 + 64.5i)),
-		TypeString: "complex64",
-		Hex:        "811808fd205040fd205040",
-		HexVersion: "81",
-		HexValue:   "1808fd205040fd205040",
-	},
-	{
-		Name:       "complex64(64.5-64.5i)",
-		Value:      vdl.ValueOf(complex64(64.5 - 64.5i)),
-		TypeString: "complex64",
-		Hex:        "811808fd205040fd2050c0",
-		HexVersion: "81",
-		HexValue:   "1808fd205040fd2050c0",
-	},
-	{
-		Name:       "complex128(0)",
-		Value:      vdl.ValueOf(complex128(0)),
-		TypeString: "complex128",
-		Hex:        "811a020000",
-		HexVersion: "81",
-		HexValue:   "1a020000",
-	},
-	{
-		Name:       "complex128(128.5+128.5i)",
-		Value:      vdl.ValueOf(complex128(128.5 + 128.5i)),
-		TypeString: "complex128",
-		Hex:        "811a08fd106040fd106040",
-		HexVersion: "81",
-		HexValue:   "1a08fd106040fd106040",
-	},
-	{
-		Name:       "complex128(128.5-128.5i)",
-		Value:      vdl.ValueOf(complex128(128.5 - 128.5i)),
-		TypeString: "complex128",
-		Hex:        "811a08fd106040fd1060c0",
-		HexVersion: "81",
-		HexValue:   "1a08fd106040fd1060c0",
-	},
-	{
 		Name:       "types.NBool(true)",
 		Value:      vdl.ValueOf(types.NBool(true)),
 		TypeString: "v.io/v23/vom/testdata/types.NBool bool",
@@ -1360,60 +1312,6 @@
 		HexValue:   "52fd2050c0",
 	},
 	{
-		Name:       "types.NComplex64(0)",
-		Value:      vdl.ValueOf(types.NComplex64(0)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex64 complex64",
-		Hex:        "81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce152020000",
-		HexVersion: "81",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "52020000",
-	},
-	{
-		Name:       "types.NComplex64(64.5+64.5i)",
-		Value:      vdl.ValueOf(types.NComplex64(64.5 + 64.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex64 complex64",
-		Hex:        "81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd205040",
-		HexVersion: "81",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "5208fd205040fd205040",
-	},
-	{
-		Name:       "types.NComplex64(64.5-64.5i)",
-		Value:      vdl.ValueOf(types.NComplex64(64.5 - 64.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex64 complex64",
-		Hex:        "81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd2050c0",
-		HexVersion: "81",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "5208fd205040fd2050c0",
-	},
-	{
-		Name:       "types.NComplex128(0)",
-		Value:      vdl.ValueOf(types.NComplex128(0)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex128 complex128",
-		Hex:        "81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de152020000",
-		HexVersion: "81",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "52020000",
-	},
-	{
-		Name:       "types.NComplex128(128.5+128.5i)",
-		Value:      vdl.ValueOf(types.NComplex128(128.5 + 128.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex128 complex128",
-		Hex:        "81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd106040",
-		HexVersion: "81",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "5208fd106040fd106040",
-	},
-	{
-		Name:       "types.NComplex128(128.5-128.5i)",
-		Value:      vdl.ValueOf(types.NComplex128(128.5 - 128.5i)),
-		TypeString: "v.io/v23/vom/testdata/types.NComplex128 complex128",
-		Hex:        "81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd1060c0",
-		HexVersion: "81",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "5208fd106040fd1060c0",
-	},
-	{
 		Name: "types.NArray2Uint64{1, 2}",
 		Value: vdl.ValueOf(types.NArray2Uint64{
 			1,
@@ -1973,22 +1871,6 @@
 		HexValue:   "1c010b00",
 	},
 	{
-		Name:       "typeobject(complex64)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*complex64)(nil))),
-		TypeString: "typeobject",
-		Hex:        "811c010c00",
-		HexVersion: "81",
-		HexValue:   "1c010c00",
-	},
-	{
-		Name:       "typeobject(complex128)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*complex128)(nil))),
-		TypeString: "typeobject",
-		Hex:        "811c010d00",
-		HexVersion: "81",
-		HexValue:   "1c010d00",
-	},
-	{
 		Name:       "typeobject(types.NBool)",
 		Value:      vdl.ValueOf(vdl.TypeOf((*types.NBool)(nil))),
 		TypeString: "typeobject",
@@ -2070,24 +1952,6 @@
 		HexValue:   "1c012900",
 	},
 	{
-		Name:       "typeobject(types.NComplex64)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*types.NComplex64)(nil))),
-		TypeString: "typeobject",
-		Hex:        "81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce11c012900",
-		HexVersion: "81",
-		HexType:    "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1",
-		HexValue:   "1c012900",
-	},
-	{
-		Name:       "typeobject(types.NComplex128)",
-		Value:      vdl.ValueOf(vdl.TypeOf((*types.NComplex128)(nil))),
-		TypeString: "typeobject",
-		Hex:        "81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de11c012900",
-		HexVersion: "81",
-		HexType:    "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1",
-		HexValue:   "1c012900",
-	},
-	{
 		Name:       "typeobject(types.NArray2Uint64)",
 		Value:      vdl.ValueOf(vdl.TypeOf((*types.NArray2Uint64)(nil))),
 		TypeString: "typeobject",
@@ -2298,28 +2162,6 @@
 		HexValue:   "52010b01010500000000e1",
 	},
 	{
-		Name: "types.StructAny{Any: complex64(0)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex64(0)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010c0102060000000000e1",
-		HexVersion: "81",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "52010c0102060000000000e1",
-	},
-	{
-		Name: "types.StructAny{Any: complex128(0)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex128(0)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010d0102060000000000e1",
-		HexVersion: "81",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "52010d0102060000000000e1",
-	},
-	{
 		Name: "types.StructAny{Any: \"\"}",
 		Value: vdl.ValueOf(types.StructAny{
 			Any: vdl.ValueOf(""),
@@ -2632,28 +2474,6 @@
 		HexValue:   "52010b010307000000fef03fe1",
 	},
 	{
-		Name: "types.StructAny{Any: complex64(1)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex64(1)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010c010408000000fef03f00e1",
-		HexVersion: "81",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "52010c010408000000fef03f00e1",
-	},
-	{
-		Name: "types.StructAny{Any: complex128(1)}",
-		Value: vdl.ValueOf(types.StructAny{
-			Any: vdl.ValueOf(complex128(1)),
-		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		Hex:        "815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010d010408000000fef03f00e1",
-		HexVersion: "81",
-		HexType:    "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1",
-		HexValue:   "52010d010408000000fef03f00e1",
-	},
-	{
 		Name: "types.StructAny{Any: \"A\"}",
 		Value: vdl.ValueOf(types.StructAny{
 			Any: vdl.ValueOf("A"),
@@ -2878,22 +2698,6 @@
 		HexValue:   "1600",
 	},
 	{
-		Name:       "complex64(0)",
-		Value:      vdl.ValueOf(complex64(0)),
-		TypeString: "complex64",
-		Hex:        "8118020000",
-		HexVersion: "81",
-		HexValue:   "18020000",
-	},
-	{
-		Name:       "complex128(0)",
-		Value:      vdl.ValueOf(complex128(0)),
-		TypeString: "complex128",
-		Hex:        "811a020000",
-		HexVersion: "81",
-		HexValue:   "1a020000",
-	},
-	{
 		Name:       "\"\"",
 		Value:      vdl.ValueOf(""),
 		TypeString: "string",
@@ -3070,22 +2874,6 @@
 		HexValue:   "16fef03f",
 	},
 	{
-		Name:       "complex64(1)",
-		Value:      vdl.ValueOf(complex64(1)),
-		TypeString: "complex64",
-		Hex:        "811804fef03f00",
-		HexVersion: "81",
-		HexValue:   "1804fef03f00",
-	},
-	{
-		Name:       "complex128(1)",
-		Value:      vdl.ValueOf(complex128(1)),
-		TypeString: "complex128",
-		Hex:        "811a04fef03f00",
-		HexVersion: "81",
-		HexValue:   "1a04fef03f00",
-	},
-	{
 		Name:       "\"A\"",
 		Value:      vdl.ValueOf("A"),
 		TypeString: "string",
@@ -3198,23 +2986,21 @@
 		HexValue:   "1c010100",
 	},
 	{
-		Name: "types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: \"A\", Bytes: \"A\", Float32: 1, Float64: 1, Complex64: 1, Complex128: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: \"Abcd\", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: \"A\"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}",
+		Name: "types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: \"A\", Bytes: \"A\", Float32: 1, Float64: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: \"Abcd\", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: \"A\"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}",
 		Value: vdl.ValueOf(types.StructManyTypes{
-			Bool:       true,
-			AByte:      1,
-			Int16:      1,
-			Int32:      1,
-			Int64:      1,
-			Uint16:     1,
-			Uint32:     1,
-			Uint64:     1,
-			String:     "A",
-			Bytes:      []byte("A"),
-			Float32:    1,
-			Float64:    1,
-			Complex64:  1,
-			Complex128: 1,
-			FoodEnum:   types.FoodEnumCherry,
+			Bool:     true,
+			AByte:    1,
+			Int16:    1,
+			Int32:    1,
+			Int64:    1,
+			Uint16:   1,
+			Uint32:   1,
+			Uint64:   1,
+			String:   "A",
+			Bytes:    []byte("A"),
+			Float32:  1,
+			Float64:  1,
+			FoodEnum: types.FoodEnumCherry,
 			NListUint64: types.NListUint64{
 				1,
 			},
@@ -3240,11 +3026,11 @@
 			NUnion:     types.NUnionA{true},
 			TypeObject: vdl.TypeOf((*bool)(nil)),
 		}),
-		TypeString: "v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
-		Hex:        "81533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1",
+		TypeString: "v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
+		Hex:        "81533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1",
 		HexVersion: "81",
-		HexType:    "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1",
-		HexValue:   "52010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1",
+		HexType:    "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1",
+		HexValue:   "5201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1",
 	},
 	{
 		Name: "types.AnySlice{types.NInt16(1), types.NInt32(2), types.NInt64(3), types.NInt32(4)}",
@@ -3422,8 +3208,6 @@
 		vdl.TypeOf((*int64)(nil)),
 		vdl.TypeOf((*float32)(nil)),
 		vdl.TypeOf((*float64)(nil)),
-		vdl.TypeOf((*complex64)(nil)),
-		vdl.TypeOf((*complex128)(nil)),
 		vdl.TypeOf((*types.NUint16)(nil)),
 		vdl.TypeOf((*types.NUint32)(nil)),
 		vdl.TypeOf((*types.NUint64)(nil)),
@@ -3432,8 +3216,6 @@
 		vdl.TypeOf((*types.NInt64)(nil)),
 		vdl.TypeOf((*types.NFloat32)(nil)),
 		vdl.TypeOf((*types.NFloat64)(nil)),
-		vdl.TypeOf((*types.NComplex64)(nil)),
-		vdl.TypeOf((*types.NComplex128)(nil)),
 	},
 	"string list/array": {
 		vdl.TypeOf((*[]string)(nil)),
@@ -3539,7 +3321,6 @@
 				vdl.ValueOf(int32(3)),
 				vdl.ValueOf(float64(3)),
 				vdl.ValueOf(int64(3)),
-				vdl.ValueOf(complex128(3)),
 			},
 		},
 		{
@@ -3550,7 +3331,6 @@
 				vdl.ValueOf(int32(256)),
 				vdl.ValueOf(float64(256)),
 				vdl.ValueOf(int64(256)),
-				vdl.ValueOf(complex128(256)),
 			},
 		},
 		{
@@ -3560,7 +3340,6 @@
 				vdl.ValueOf(int32(-5)),
 				vdl.ValueOf(float64(-5)),
 				vdl.ValueOf(int64(-5)),
-				vdl.ValueOf(complex128(-5)),
 			},
 		},
 		{
@@ -3568,7 +3347,6 @@
 			PrimaryType: vdl.TypeOf((*float64)(nil)),
 			Values: []*vdl.Value{
 				vdl.ValueOf(float64(3.3)),
-				vdl.ValueOf(complex128(3.3)),
 			},
 		},
 		{
@@ -3578,13 +3356,6 @@
 				vdl.ValueOf(int64(-9223372036854775808)),
 			},
 		},
-		{
-			Name:        "complex128",
-			PrimaryType: vdl.TypeOf((*complex128)(nil)),
-			Values: []*vdl.Value{
-				vdl.ValueOf(complex128(1.5 - 1i)),
-			},
-		},
 	},
 	"string and enum": {
 		{
@@ -3709,7 +3480,6 @@
 				vdl.ValueOf(types.StructOnlyMap{
 					"Key1": 4,
 					"Key2": 5,
-					"Key3": 0,
 				}),
 				vdl.ValueOf(types.MapOnlyStruct{
 					Key1: 4,
diff --git a/vom/testdata/data81/vomdata.vdl b/vom/testdata/data81/vomdata.vdl
index 076ed1a..f978ae6 100644
--- a/vom/testdata/data81/vomdata.vdl
+++ b/vom/testdata/data81/vomdata.vdl
@@ -1606,96 +1606,6 @@
 		"81", "", "16fd2050c0",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "18020000"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 2, MsgN: 2, Value: complex64(0+0i)}
-	{
-		`complex64(0)`,
-		complex64(0),
-		"complex64",
-		"8118020000",
-		"81", "", "18020000",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1808fd205040fd205040"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd205040             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 8, MsgN: 8, Value: complex64(64.5+64.5i)}
-	{
-		`complex64(64.5+64.5i)`,
-		complex64(64.5+64.5i),
-		"complex64",
-		"811808fd205040fd205040",
-		"81", "", "1808fd205040fd205040",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1808fd205040fd2050c0"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd2050c0             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 8, MsgN: 8, Value: complex64(64.5+-64.5i)}
-	{
-		`complex64(64.5-64.5i)`,
-		complex64(64.5-64.5i),
-		"complex64",
-		"811808fd205040fd2050c0",
-		"81", "", "1808fd205040fd2050c0",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "1a020000"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 2, MsgN: 2, Value: complex128(0+0i)}
-	{
-		`complex128(0)`,
-		complex128(0),
-		"complex128",
-		"811a020000",
-		"81", "", "1a020000",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1a08fd106040fd106040"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd106040             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 8, MsgN: 8, Value: complex128(128.5+128.5i)}
-	{
-		`complex128(128.5+128.5i)`,
-		complex128(128.5+128.5i),
-		"complex128",
-		"811a08fd106040fd106040",
-		"81", "", "1a08fd106040fd106040",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(10): "1a08fd106040fd1060c0"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd1060c0             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 8, MsgN: 8, Value: complex128(128.5+-128.5i)}
-	{
-		`complex128(128.5-128.5i)`,
-		complex128(128.5-128.5i),
-		"complex128",
-		"811a08fd106040fd1060c0",
-		"81", "", "1a08fd106040fd1060c0",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(43): "5127000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15201"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -2526,162 +2436,6 @@
 		"81", "512a000024762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e466c6f61743634010be1", "52fd2050c0",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce152020000"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(4): "52020000"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vom/testdata/types.NComplex64 complex64(0+0i)}
-	{
-		`types.NComplex64(0)`,
-		types.NComplex64(0),
-		"v.io/v23/vom/testdata/types.NComplex64 complex64",
-		"81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce152020000",
-		"81", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "52020000",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd205040"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(10): "5208fd205040fd205040"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd205040             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex64 complex64(64.5+64.5i)}
-	{
-		`types.NComplex64(64.5+64.5i)`,
-		types.NComplex64(64.5+64.5i),
-		"v.io/v23/vom/testdata/types.NComplex64 complex64",
-		"81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd205040",
-		"81", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "5208fd205040fd205040",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd2050c0"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(10): "5208fd205040fd2050c0"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// 08                   MsgLen                             8
-	// fd205040             PrimValue                       64.5 [complex real]
-	// fd2050c0             PrimValue                       64.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex64 complex64(64.5+-64.5i)}
-	{
-		`types.NComplex64(64.5-64.5i)`,
-		types.NComplex64(64.5-64.5i),
-		"v.io/v23/vom/testdata/types.NComplex64 complex64",
-		"81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce15208fd205040fd2050c0",
-		"81", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "5208fd205040fd2050c0",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(51): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de152020000"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(4): "52020000"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 2, MsgN: 2, Value: v.io/v23/vom/testdata/types.NComplex128 complex128(0+0i)}
-	{
-		`types.NComplex128(0)`,
-		types.NComplex128(0),
-		"v.io/v23/vom/testdata/types.NComplex128 complex128",
-		"81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de152020000",
-		"81", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "52020000",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(57): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd106040"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(10): "5208fd106040fd106040"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd106040             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex128 complex128(128.5+128.5i)}
-	{
-		`types.NComplex128(128.5+128.5i)`,
-		types.NComplex128(128.5+128.5i),
-		"v.io/v23/vom/testdata/types.NComplex128 complex128",
-		"81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd106040",
-		"81", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "5208fd106040fd106040",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(57): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd1060c0"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(10): "5208fd106040fd1060c0"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// 08                   MsgLen                             8
-	// fd106040             PrimValue                      128.5 [complex real]
-	// fd1060c0             PrimValue                      128.5 [complex imag]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.NComplex128 complex128(128.5+-128.5i)}
-	{
-		`types.NComplex128(128.5-128.5i)`,
-		types.NComplex128(128.5-128.5i),
-		"v.io/v23/vom/testdata/types.NComplex128 complex128",
-		"81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de15208fd106040fd1060c0",
-		"81", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "5208fd106040fd1060c0",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(56): "5131020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15203000102"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -4146,11 +3900,12 @@
 	// 04                   AnyMsgLen                          4
 	// 08                   MsgLen                             8
 	// 05                   Index                              5 [v.io/v23/vom/testdata/types.MStruct.F]
+	// 00                   TypeId                             0 [string]
 	// 00                   AnyMsgLen                          0 [len 4]
 	// 03                   ByteLen                            3 [string len]
 	// 616263               PrimValue                      "abc" [string]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.MStruct END]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 7, Value: v.io/v23/vom/testdata/types.MStruct struct{A bool;B v.io/v23/vom/testdata/types.NBool bool;C v.io/v23/vom/testdata/types.MBool bool;D ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};E typeobject;F any}{A: false, B: false, C: false, D: nil, E: any, F: "abc"}}
+	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.MStruct struct{A bool;B v.io/v23/vom/testdata/types.NBool bool;C v.io/v23/vom/testdata/types.MBool bool;D ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};E typeobject;F any}{A: false, B: false, C: false, D: nil, E: any, F: "abc"}}
 	{
 		`types.MStruct{F: "abc"}`,
 		types.MStruct{F: "abc"},
@@ -4274,10 +4029,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 05                   Index                              5 [v.io/v23/vom/testdata/types.MStruct.F]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.MBool bool]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   PrimValue                       true [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.MStruct END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.MStruct struct{A bool;B v.io/v23/vom/testdata/types.NBool bool;C v.io/v23/vom/testdata/types.MBool bool;D ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};E typeobject;F any}{A: false, B: false, C: false, D: nil, E: any, F: v.io/v23/vom/testdata/types.MBool bool(true)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.MStruct struct{A bool;B v.io/v23/vom/testdata/types.NBool bool;C v.io/v23/vom/testdata/types.MBool bool;D ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};E typeobject;F any}{A: false, B: false, C: false, D: nil, E: any, F: v.io/v23/vom/testdata/types.MBool bool(true)}}
 	{
 		`types.MStruct{F: types.MBool(true)}`,
 		types.MStruct{F: types.MBool(true)},
@@ -4401,13 +4157,14 @@
 	// 06                   AnyMsgLen                          6
 	// 0a                   MsgLen                            10
 	// 05                   Index                              5 [v.io/v23/vom/testdata/types.MStruct.F]
+	// 00                   TypeId                             0 [?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}]
 	// 00                   AnyMsgLen                          0 [len 6]
 	// 01                   Index                              1 [v.io/v23/vom/testdata/types.NStruct.B]
 	// 03                   ByteLen                            3 [string len]
 	// 616263               PrimValue                      "abc" [string]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.NStruct END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.MStruct END]
-	// DumpStatus{MsgId: 41, MsgLen: 10, MsgN: 9, Value: v.io/v23/vom/testdata/types.MStruct struct{A bool;B v.io/v23/vom/testdata/types.NBool bool;C v.io/v23/vom/testdata/types.MBool bool;D ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};E typeobject;F any}{A: false, B: false, C: false, D: nil, E: any, F: ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}({A: false, B: "abc", C: 0})}}
+	// DumpStatus{MsgId: 41, MsgLen: 10, MsgN: 10, Value: v.io/v23/vom/testdata/types.MStruct struct{A bool;B v.io/v23/vom/testdata/types.NBool bool;C v.io/v23/vom/testdata/types.MBool bool;D ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};E typeobject;F any}{A: false, B: false, C: false, D: nil, E: any, F: ?v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}({A: false, B: "abc", C: 0})}}
 	{
 		`types.MStruct{F: ?types.NStruct{B: "abc"}}`,
 		types.MStruct{F: ?types.NStruct{B: "abc"}},
@@ -5136,36 +4893,6 @@
 		"81", "", "1c010b00",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "1c010c00"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 01                   TypeIdsLen                         1
-	// 0c                   TypeId                            12
-	// 00                   TypeId                             0 [complex64]
-	// DumpStatus{MsgId: 14, MsgN: 4, Value: typeobject(complex64)}
-	{
-		`typeobject(complex64)`,
-		typeobject(complex64),
-		"typeobject",
-		"811c010c00",
-		"81", "", "1c010c00",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "1c010d00"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 01                   TypeIdsLen                         1
-	// 0d                   TypeId                            13
-	// 00                   TypeId                             0 [complex128]
-	// DumpStatus{MsgId: 14, MsgN: 4, Value: typeobject(complex128)}
-	{
-		`typeobject(complex128)`,
-		typeobject(complex128),
-		"typeobject",
-		"811c010d00",
-		"81", "", "1c010d00",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(45): "5127000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e11c012900"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -5400,58 +5127,6 @@
 		"81", "512a000024762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e466c6f61743634010be1", "1c012900",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(50): "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce11c012900"}
-	// 51                   MsgId                            -41
-	//                      TypeMsg                           41
-	// 2c                   MsgLen                            44
-	// 00                   WireTypeIndex                      0 [v.io/v23/vom.wireNamed]
-	// 00                   Index                              0 [v.io/v23/vom.wireNamed.Name]
-	// 26                   ByteLen                           38 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634 PrimValue       "v.io/v23/vom/testdata/types.NComplex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 44, MsgN: 44, Buf(4): "1c012900"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 01                   TypeIdsLen                         1
-	// 29                   TypeId                            41
-	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NComplex64 complex64]
-	// DumpStatus{MsgId: 14, MsgN: 4, Value: typeobject(v.io/v23/vom/testdata/types.NComplex64 complex64)}
-	{
-		`typeobject(types.NComplex64)`,
-		typeobject(types.NComplex64),
-		"typeobject",
-		"81512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce11c012900",
-		"81", "512c000026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c65783634010ce1", "1c012900",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(51): "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de11c012900"}
-	// 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]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238 PrimValue       "v.io/v23/vom/testdata/types.NComplex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireNamed.Base]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireNamed END]
-	// DumpStatus{MsgId: -41, MsgLen: 45, MsgN: 45, Buf(4): "1c012900"}
-	// 1c                   MsgId                             14
-	//                      ValueMsg                          14 [typeobject]
-	// 01                   TypeIdsLen                         1
-	// 29                   TypeId                            41
-	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NComplex128 complex128]
-	// DumpStatus{MsgId: 14, MsgN: 4, Value: typeobject(v.io/v23/vom/testdata/types.NComplex128 complex128)}
-	{
-		`typeobject(types.NComplex128)`,
-		typeobject(types.NComplex128),
-		"typeobject",
-		"81512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de11c012900",
-		"81", "512d000027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e436f6d706c6578313238010de1", "1c012900",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(55): "5131020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e11c012900"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -5837,10 +5512,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [bool]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                      false [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: false}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: false}}
 	{
 		`types.StructAny{Any: false}`,
 		types.StructAny{Any: false},
@@ -5875,10 +5551,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int16]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int16(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int16(0)}}
 	{
 		`types.StructAny{Any: int16(0)}`,
 		types.StructAny{Any: int16(0)},
@@ -5913,10 +5590,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int32]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int32(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int32(0)}}
 	{
 		`types.StructAny{Any: int32(0)}`,
 		types.StructAny{Any: int32(0)},
@@ -5951,10 +5629,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int64]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int64(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int64(0)}}
 	{
 		`types.StructAny{Any: int64(0)}`,
 		types.StructAny{Any: int64(0)},
@@ -5989,10 +5668,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [uint16]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint16(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint16(0)}}
 	{
 		`types.StructAny{Any: uint16(0)}`,
 		types.StructAny{Any: uint16(0)},
@@ -6027,10 +5707,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [uint32]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint32(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint32(0)}}
 	{
 		`types.StructAny{Any: uint32(0)}`,
 		types.StructAny{Any: uint32(0)},
@@ -6065,10 +5746,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [uint64]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint64(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint64(0)}}
 	{
 		`types.StructAny{Any: uint64(0)}`,
 		types.StructAny{Any: uint64(0)},
@@ -6103,10 +5785,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [float32]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [float]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float32(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float32(0)}}
 	{
 		`types.StructAny{Any: float32(0)}`,
 		types.StructAny{Any: float32(0)},
@@ -6141,10 +5824,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [float64]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                          0 [float]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float64(0)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float64(0)}}
 	{
 		`types.StructAny{Any: float64(0)}`,
 		types.StructAny{Any: float64(0)},
@@ -6153,84 +5837,6 @@
 		"81", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "52010b01010500000000e1",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(65): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010c0102060000000000e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(12): "52010c0102060000000000e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 01                   TypeIdsLen                         1
-	// 0c                   TypeId                            12
-	// 01                   AnyLensLen                         1
-	// 02                   AnyMsgLen                          2
-	// 06                   MsgLen                             6
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 00                   AnyMsgLen                          0 [len 2]
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex64(0+0i)}}
-	{
-		`types.StructAny{Any: complex64(0)}`,
-		types.StructAny{Any: complex64(0)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010c0102060000000000e1",
-		"81", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "52010c0102060000000000e1",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(65): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010d0102060000000000e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(12): "52010d0102060000000000e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 01                   TypeIdsLen                         1
-	// 0d                   TypeId                            13
-	// 01                   AnyLensLen                         1
-	// 02                   AnyMsgLen                          2
-	// 06                   MsgLen                             6
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 00                   AnyMsgLen                          0 [len 2]
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex128(0+0i)}}
-	{
-		`types.StructAny{Any: complex128(0)}`,
-		types.StructAny{Any: complex128(0)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010d0102060000000000e1",
-		"81", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "52010d0102060000000000e1",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(64): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010301010500000000e1"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -6257,11 +5863,12 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [string]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   ByteLen                            0 [string len]
 	//                      PrimValue                         "" [string]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: ""}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: ""}}
 	{
 		`types.StructAny{Any: ""}`,
 		types.StructAny{Any: ""},
@@ -6296,11 +5903,12 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [[]byte]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   ByteLen                            0 [bytes len]
 	//                      PrimValue                         "" [bytes]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: []byte("")}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: []byte("")}}
 	{
 		`types.StructAny{Any: []byte("")}`,
 		types.StructAny{Any: []byte("")},
@@ -6352,10 +5960,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry}]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.FoodEnum.Bean]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry}(Bean)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry}(Bean)}}
 	{
 		`types.StructAny{Any: types.FoodEnum.Bean}`,
 		types.StructAny{Any: types.FoodEnum.Bean},
@@ -6401,10 +6010,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NListUint64 []uint64]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   ValueLen                           0 [list len]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NListUint64 []uint64{}}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NListUint64 []uint64{}}}
 	{
 		`types.StructAny{Any: types.NListUint64{}}`,
 		types.StructAny{Any: types.NListUint64{}},
@@ -6452,11 +6062,12 @@
 	// 05                   AnyMsgLen                          5
 	// 09                   MsgLen                             9
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NByteArray [4]byte]
 	// 00                   AnyMsgLen                          0 [len 5]
 	// 00                   ByteLen                            4 [bytes len]
 	// 00000000             PrimValue         "\x00\x00\x00\x00" [bytes]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 8, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NByteArray [4]byte("\x00\x00\x00\x00")}}
+	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 9, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NByteArray [4]byte("\x00\x00\x00\x00")}}
 	{
 		`types.StructAny{Any: types.NByteArray("\x00\x00\x00\x00")}`,
 		types.StructAny{Any: types.NByteArray("\x00\x00\x00\x00")},
@@ -6504,12 +6115,13 @@
 	// 03                   AnyMsgLen                          3
 	// 07                   MsgLen                             7
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64]
 	// 00                   AnyMsgLen                          0 [len 3]
 	// 00                   ValueLen                           2 [list len]
 	// 00                   PrimValue                          0 [uint]
 	// 00                   PrimValue                          0 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64{0, 0}}}
+	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64{0, 0}}}
 	{
 		`types.StructAny{Any: types.NArray2Uint64{}}`,
 		types.StructAny{Any: types.NArray2Uint64{}},
@@ -6555,10 +6167,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NSetUint64 set[uint64]]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   ValueLen                           0 [set len]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NSetUint64 set[uint64]{}}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NSetUint64 set[uint64]{}}}
 	{
 		`types.StructAny{Any: types.NSetUint64{}}`,
 		types.StructAny{Any: types.NSetUint64{}},
@@ -6606,10 +6219,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   ValueLen                           0 [map len]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string{}}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string{}}}
 	{
 		`types.StructAny{Any: types.NMapUint64String{}}`,
 		types.StructAny{Any: types.NMapUint64String{}},
@@ -6673,10 +6287,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.NStruct END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}{A: false, B: "", C: 0}}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}{A: false, B: "", C: 0}}}
 	{
 		`types.StructAny{Any: types.NStruct{}}`,
 		types.StructAny{Any: types.NStruct{}},
@@ -6740,11 +6355,12 @@
 	// 02                   AnyMsgLen                          2
 	// 06                   MsgLen                             6
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64}]
 	// 00                   AnyMsgLen                          0 [len 2]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NUnion.A]
 	// 00                   PrimValue                      false [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64}{A: false}}}
+	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64}{A: false}}}
 	{
 		`types.StructAny{Any: types.NUnion{A: false}}`,
 		types.StructAny{Any: types.NUnion{A: false}},
@@ -6806,10 +6422,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructMap END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {}}}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {}}}}
 	{
 		`types.StructAny{Any: types.StructMap{}}`,
 		types.StructAny{Any: types.StructMap{}},
@@ -6871,6 +6488,7 @@
 	// 05                   AnyMsgLen                          5
 	// 09                   MsgLen                             9
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}]
 	// 00                   AnyMsgLen                          0 [len 5]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructMap.Map]
 	// 01                   ValueLen                           1 [map len]
@@ -6878,7 +6496,7 @@
 	// 00                   PrimValue                          0 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructMap END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 8, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {0: 0}}}}
+	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 9, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {0: 0}}}}
 	{
 		`types.StructAny{Any: types.StructMap{Map: {0: 0}}}`,
 		types.StructAny{Any: types.StructMap{Map: {0: 0}}},
@@ -6914,10 +6532,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [typeobject]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   TypeId                             1 [any]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: typeobject(any)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: typeobject(any)}}
 	{
 		`types.StructAny{Any: typeobject(any)}`,
 		types.StructAny{Any: typeobject(any)},
@@ -7042,10 +6661,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [bool]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 00                   PrimValue                      false [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: ?v.io/v23/vom/testdata/types.StructAny struct{Any any}({Any: false})}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: ?v.io/v23/vom/testdata/types.StructAny struct{Any any}({Any: false})}
 	{
 		`?types.StructAny{Any: false}`,
 		?types.StructAny{Any: false},
@@ -7115,10 +6735,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructMap END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: ?v.io/v23/vom/testdata/types.StructAny struct{Any any}({Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {}}})}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: ?v.io/v23/vom/testdata/types.StructAny struct{Any any}({Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {}}})}
 	{
 		`?types.StructAny{Any: types.StructMap{}}`,
 		?types.StructAny{Any: types.StructMap{}},
@@ -7188,6 +6809,7 @@
 	// 05                   AnyMsgLen                          5
 	// 09                   MsgLen                             9
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}]
 	// 00                   AnyMsgLen                          0 [len 5]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructMap.Map]
 	// 01                   ValueLen                           1 [map len]
@@ -7195,7 +6817,7 @@
 	// 00                   PrimValue                          0 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructMap END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 8, Value: ?v.io/v23/vom/testdata/types.StructAny struct{Any any}({Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {0: 0}}})}
+	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 9, Value: ?v.io/v23/vom/testdata/types.StructAny struct{Any any}({Any: v.io/v23/vom/testdata/types.StructMap struct{Map map[int64]int64}{Map: {0: 0}}})}
 	{
 		`?types.StructAny{Any: types.StructMap{Map: {0: 0}}}`,
 		?types.StructAny{Any: types.StructMap{Map: {0: 0}}},
@@ -7230,10 +6852,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [bool]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   PrimValue                       true [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: true}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: true}}
 	{
 		`types.StructAny{Any: true}`,
 		types.StructAny{Any: true},
@@ -7268,10 +6891,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [byte]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   PrimValue                          1 [byte]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: byte(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: byte(1)}}
 	{
 		`types.StructAny{Any: byte(1)}`,
 		types.StructAny{Any: byte(1)},
@@ -7306,10 +6930,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int16]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   PrimValue                          1 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int16(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int16(1)}}
 	{
 		`types.StructAny{Any: int16(1)}`,
 		types.StructAny{Any: int16(1)},
@@ -7344,10 +6969,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int32]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   PrimValue                          1 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int32(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int32(1)}}
 	{
 		`types.StructAny{Any: int32(1)}`,
 		types.StructAny{Any: int32(1)},
@@ -7382,10 +7008,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int64]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   PrimValue                          1 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int64(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int64(1)}}
 	{
 		`types.StructAny{Any: int64(1)}`,
 		types.StructAny{Any: int64(1)},
@@ -7420,10 +7047,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [uint16]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   PrimValue                          1 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint16(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint16(1)}}
 	{
 		`types.StructAny{Any: uint16(1)}`,
 		types.StructAny{Any: uint16(1)},
@@ -7458,10 +7086,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [uint32]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   PrimValue                          1 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint32(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint32(1)}}
 	{
 		`types.StructAny{Any: uint32(1)}`,
 		types.StructAny{Any: uint32(1)},
@@ -7496,10 +7125,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [uint64]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   PrimValue                          1 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint64(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: uint64(1)}}
 	{
 		`types.StructAny{Any: uint64(1)}`,
 		types.StructAny{Any: uint64(1)},
@@ -7534,10 +7164,11 @@
 	// 03                   AnyMsgLen                          3
 	// 07                   MsgLen                             7
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [float32]
 	// 00                   AnyMsgLen                          0 [len 3]
 	// fef03f               PrimValue                          1 [float]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float32(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float32(1)}}
 	{
 		`types.StructAny{Any: float32(1)}`,
 		types.StructAny{Any: float32(1)},
@@ -7572,10 +7203,11 @@
 	// 03                   AnyMsgLen                          3
 	// 07                   MsgLen                             7
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [float64]
 	// 00                   AnyMsgLen                          0 [len 3]
 	// fef03f               PrimValue                          1 [float]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float64(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: float64(1)}}
 	{
 		`types.StructAny{Any: float64(1)}`,
 		types.StructAny{Any: float64(1)},
@@ -7584,84 +7216,6 @@
 		"81", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "52010b010307000000fef03fe1",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(67): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010c010408000000fef03f00e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(14): "52010c010408000000fef03f00e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 01                   TypeIdsLen                         1
-	// 0c                   TypeId                            12
-	// 01                   AnyLensLen                         1
-	// 04                   AnyMsgLen                          4
-	// 08                   MsgLen                             8
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 00                   AnyMsgLen                          0 [len 4]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex64(1+0i)}}
-	{
-		`types.StructAny{Any: complex64(1)}`,
-		types.StructAny{Any: complex64(1)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010c010408000000fef03f00e1",
-		"81", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "52010c010408000000fef03f00e1",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(67): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010d010408000000fef03f00e1"}
-	// 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]
-	// 25                   ByteLen                           37 [string len]
-	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e79 PrimValue       "v.io/v23/vom/testdata/types.StructAny" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 01                   ValueLen                           1 [list len]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 03                   ByteLen                            3 [string len]
-	// 416e79               PrimValue                      "Any" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0f                   PrimValue                         15 [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(14): "52010d010408000000fef03f00e1"}
-	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructAny struct{Any any}]
-	// 01                   TypeIdsLen                         1
-	// 0d                   TypeId                            13
-	// 01                   AnyLensLen                         1
-	// 04                   AnyMsgLen                          4
-	// 08                   MsgLen                             8
-	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
-	// 00                   AnyMsgLen                          0 [len 4]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: complex128(1+0i)}}
-	{
-		`types.StructAny{Any: complex128(1)}`,
-		types.StructAny{Any: complex128(1)},
-		"v.io/v23/vom/testdata/types.StructAny struct{Any any}",
-		"815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152010d010408000000fef03f00e1",
-		"81", "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1", "52010d010408000000fef03f00e1",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(65): "5133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15201030102060000000141e1"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
@@ -7688,11 +7242,12 @@
 	// 02                   AnyMsgLen                          2
 	// 06                   MsgLen                             6
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [string]
 	// 00                   AnyMsgLen                          0 [len 2]
 	// 01                   ByteLen                            1 [string len]
 	// 41                   PrimValue                        "A" [string]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: "A"}}
+	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: "A"}}
 	{
 		`types.StructAny{Any: "A"}`,
 		types.StructAny{Any: "A"},
@@ -7727,11 +7282,12 @@
 	// 02                   AnyMsgLen                          2
 	// 06                   MsgLen                             6
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [[]byte]
 	// 00                   AnyMsgLen                          0 [len 2]
 	// 01                   ByteLen                            1 [bytes len]
 	// 41                   PrimValue                        "A" [bytes]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: []byte("A")}}
+	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: []byte("A")}}
 	{
 		`types.StructAny{Any: []byte("A")}`,
 		types.StructAny{Any: []byte("A")},
@@ -7783,10 +7339,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry}]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   Index                              2 [v.io/v23/vom/testdata/types.FoodEnum.Cherry]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry}(Cherry)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry}(Cherry)}}
 	{
 		`types.StructAny{Any: types.FoodEnum.Cherry}`,
 		types.StructAny{Any: types.FoodEnum.Cherry},
@@ -7832,11 +7389,12 @@
 	// 02                   AnyMsgLen                          2
 	// 06                   MsgLen                             6
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NListUint64 []uint64]
 	// 00                   AnyMsgLen                          0 [len 2]
 	// 01                   ValueLen                           1 [list len]
 	// 01                   PrimValue                          1 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NListUint64 []uint64{1}}}
+	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NListUint64 []uint64{1}}}
 	{
 		`types.StructAny{Any: types.NListUint64{1}}`,
 		types.StructAny{Any: types.NListUint64{1}},
@@ -7884,11 +7442,12 @@
 	// 05                   AnyMsgLen                          5
 	// 09                   MsgLen                             9
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NByteArray [4]byte]
 	// 00                   AnyMsgLen                          0 [len 5]
 	// 00                   ByteLen                            4 [bytes len]
 	// 41626364             PrimValue                     "Abcd" [bytes]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 8, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NByteArray [4]byte("Abcd")}}
+	// DumpStatus{MsgId: 41, MsgLen: 9, MsgN: 9, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NByteArray [4]byte("Abcd")}}
 	{
 		`types.StructAny{Any: types.NByteArray("Abcd")}`,
 		types.StructAny{Any: types.NByteArray("Abcd")},
@@ -7936,12 +7495,13 @@
 	// 03                   AnyMsgLen                          3
 	// 07                   MsgLen                             7
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64]
 	// 00                   AnyMsgLen                          0 [len 3]
 	// 00                   ValueLen                           2 [list len]
 	// 00                   PrimValue                          0 [uint]
 	// 01                   PrimValue                          1 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64{0, 1}}}
+	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64{0, 1}}}
 	{
 		`types.StructAny{Any: types.NArray2Uint64{0, 1}}`,
 		types.StructAny{Any: types.NArray2Uint64{0, 1}},
@@ -7987,11 +7547,12 @@
 	// 02                   AnyMsgLen                          2
 	// 06                   MsgLen                             6
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NSetUint64 set[uint64]]
 	// 00                   AnyMsgLen                          0 [len 2]
 	// 01                   ValueLen                           1 [set len]
 	// 01                   PrimValue                          1 [uint]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NSetUint64 set[uint64]{1}}}
+	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NSetUint64 set[uint64]{1}}}
 	{
 		`types.StructAny{Any: types.NSetUint64{1}}`,
 		types.StructAny{Any: types.NSetUint64{1}},
@@ -8039,13 +7600,14 @@
 	// 04                   AnyMsgLen                          4
 	// 08                   MsgLen                             8
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string]
 	// 00                   AnyMsgLen                          0 [len 4]
 	// 01                   ValueLen                           1 [map len]
 	// 01                   PrimValue                          1 [uint]
 	// 01                   ByteLen                            1 [string len]
 	// 41                   PrimValue                        "A" [string]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string{1: "A"}}}
+	// DumpStatus{MsgId: 41, MsgLen: 8, MsgN: 8, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string{1: "A"}}}
 	{
 		`types.StructAny{Any: types.NMapUint64String{1: "A"}}`,
 		types.StructAny{Any: types.NMapUint64String{1: "A"}},
@@ -8109,12 +7671,13 @@
 	// 03                   AnyMsgLen                          3
 	// 07                   MsgLen                             7
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}]
 	// 00                   AnyMsgLen                          0 [len 3]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NStruct.A]
 	// 01                   PrimValue                       true [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.NStruct END]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}{A: true, B: "", C: 0}}}
+	// DumpStatus{MsgId: 41, MsgLen: 7, MsgN: 7, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64}{A: true, B: "", C: 0}}}
 	{
 		`types.StructAny{Any: types.NStruct{A: true}}`,
 		types.StructAny{Any: types.NStruct{A: true}},
@@ -8178,11 +7741,12 @@
 	// 02                   AnyMsgLen                          2
 	// 06                   MsgLen                             6
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64}]
 	// 00                   AnyMsgLen                          0 [len 2]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NUnion.A]
 	// 01                   PrimValue                       true [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64}{A: true}}}
+	// DumpStatus{MsgId: 41, MsgLen: 6, MsgN: 6, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64}{A: true}}}
 	{
 		`types.StructAny{Any: types.NUnion{A: true}}`,
 		types.StructAny{Any: types.NUnion{A: true}},
@@ -8218,10 +7782,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [typeobject]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 01                   TypeId                             1 [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: typeobject(bool)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: typeobject(bool)}}
 	{
 		`types.StructAny{Any: typeobject(bool)}`,
 		types.StructAny{Any: typeobject(bool)},
@@ -8376,36 +7941,6 @@
 		"81", "", "1600",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "18020000"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 2, MsgN: 2, Value: complex64(0+0i)}
-	{
-		`complex64(0)`,
-		complex64(0),
-		"complex64",
-		"8118020000",
-		"81", "", "18020000",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(4): "1a020000"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 02                   MsgLen                             2
-	// 00                   PrimValue                          0 [complex real]
-	// 00                   PrimValue                          0 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 2, MsgN: 2, Value: complex128(0+0i)}
-	{
-		`complex128(0)`,
-		complex128(0),
-		"complex128",
-		"811a020000",
-		"81", "", "1a020000",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(2): "0600"}
 	// 06                   MsgId                              3
 	//                      ValueMsg                           3 [string]
@@ -8829,36 +8364,6 @@
 		"81", "", "16fef03f",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(6): "1804fef03f00"}
-	// 18                   MsgId                             12
-	//                      ValueMsg                          12 [complex64]
-	// 04                   MsgLen                             4
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// DumpStatus{MsgId: 12, MsgLen: 4, MsgN: 4, Value: complex64(1+0i)}
-	{
-		`complex64(1)`,
-		complex64(1),
-		"complex64",
-		"811804fef03f00",
-		"81", "", "1804fef03f00",
-	},
-	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(6): "1a04fef03f00"}
-	// 1a                   MsgId                             13
-	//                      ValueMsg                          13 [complex128]
-	// 04                   MsgLen                             4
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// DumpStatus{MsgId: 13, MsgLen: 4, MsgN: 4, Value: complex128(1+0i)}
-	{
-		`complex128(1)`,
-		complex128(1),
-		"complex128",
-		"811a04fef03f00",
-		"81", "", "1a04fef03f00",
-	},
-	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(3): "060141"}
 	// 06                   MsgId                              3
 	//                      ValueMsg                           3 [string]
@@ -9159,7 +8664,7 @@
 		"81", "", "1c010100",
 	},
 	// 81                   Version                          129 [vom version 81]
-	// DumpStatus{MsgId: 0, MsgN: 1, Buf(907): "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: 0, MsgN: 1, Buf(868): "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 53                   MsgId                            -42
 	//                      TypeMsg                           42
 	// 3b                   MsgLen                            59
@@ -9176,7 +8681,7 @@
 	// 06                   ByteLen                            6 [string len]
 	// 436865727279         PrimValue                   "Cherry" [string]
 	// e1                   Control                          End [v.io/v23/vom.wireEnum END]
-	// DumpStatus{MsgId: -42, MsgLen: 59, MsgN: 59, Buf(846): "552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -42, MsgLen: 59, MsgN: 59, Buf(807): "552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 55                   MsgId                            -43
 	//                      TypeMsg                           43
 	// 2d                   MsgLen                            45
@@ -9193,7 +8698,7 @@
 	// 01                   ByteLen                            1 [string len]
 	// 43                   PrimValue                        "C" [string]
 	// e1                   Control                          End [v.io/v23/vom.wireEnum END]
-	// DumpStatus{MsgId: -43, MsgLen: 45, MsgN: 45, Buf(799): "572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -43, MsgLen: 45, MsgN: 45, Buf(760): "572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 57                   MsgId                            -44
 	//                      TypeMsg                           44
 	// 2d                   MsgLen                            45
@@ -9204,7 +8709,7 @@
 	// 01                   Index                              1 [v.io/v23/vom.wireList.Elem]
 	// 06                   PrimValue                          6 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireList END]
-	// DumpStatus{MsgId: -44, MsgLen: 45, MsgN: 45, Buf(752): "592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -44, MsgLen: 45, MsgN: 45, Buf(713): "592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 59                   MsgId                            -45
 	//                      TypeMsg                           45
 	// 2e                   MsgLen                            46
@@ -9217,7 +8722,7 @@
 	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
 	// 04                   PrimValue                          4 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireArray END]
-	// DumpStatus{MsgId: -45, MsgLen: 46, MsgN: 46, Buf(704): "5b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -45, MsgLen: 46, MsgN: 46, Buf(665): "5b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 5b                   MsgId                            -46
 	//                      TypeMsg                           46
 	// 31                   MsgLen                            49
@@ -9230,7 +8735,7 @@
 	// 02                   Index                              2 [v.io/v23/vom.wireArray.Len]
 	// 02                   PrimValue                          2 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireArray END]
-	// DumpStatus{MsgId: -46, MsgLen: 49, MsgN: 49, Buf(653): "5d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -46, MsgLen: 49, MsgN: 49, Buf(614): "5d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 5d                   MsgId                            -47
 	//                      TypeMsg                           47
 	// 2c                   MsgLen                            44
@@ -9241,7 +8746,7 @@
 	// 01                   Index                              1 [v.io/v23/vom.wireSet.Key]
 	// 06                   PrimValue                          6 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireSet END]
-	// DumpStatus{MsgId: -47, MsgLen: 44, MsgN: 44, Buf(607): "5f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -47, MsgLen: 44, MsgN: 44, Buf(568): "5f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 5f                   MsgId                            -48
 	//                      TypeMsg                           48
 	// 34                   MsgLen                            52
@@ -9254,7 +8759,7 @@
 	// 02                   Index                              2 [v.io/v23/vom.wireMap.Elem]
 	// 03                   PrimValue                          3 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireMap END]
-	// DumpStatus{MsgId: -48, MsgLen: 52, MsgN: 52, Buf(553): "613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -48, MsgLen: 52, MsgN: 52, Buf(514): "613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 61                   MsgId                            -49
 	//                      TypeMsg                           49
 	// 3b                   MsgLen                            59
@@ -9283,7 +8788,7 @@
 	// 09                   PrimValue                          9 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
-	// DumpStatus{MsgId: -49, MsgLen: 59, MsgN: 59, Buf(492): "633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -49, MsgLen: 59, MsgN: 59, Buf(453): "633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 63                   MsgId                            -50
 	//                      TypeMsg                           50
 	// 3a                   MsgLen                            58
@@ -9312,16 +8817,16 @@
 	// 09                   PrimValue                          9 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// e1                   Control                          End [v.io/v23/vom.wireUnion END]
-	// DumpStatus{MsgId: -50, MsgLen: 58, MsgN: 58, Buf(432): "51fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -50, MsgLen: 58, MsgN: 58, Buf(393): "51fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 51                   MsgId                            -41
 	//                      TypeMsg                           41
-	// fe015f               MsgLen                           351
+	// fe0142               MsgLen                           322
 	// 06                   WireTypeIndex                      6 [v.io/v23/vom.wireStruct]
 	// 00                   Index                              0 [v.io/v23/vom.wireStruct.Name]
 	// 2b                   ByteLen                           43 [string len]
 	// 762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e795479706573 PrimValue       "v.io/v23/vom/testdata/types.StructManyTypes" [string]
 	// 01                   Index                              1 [v.io/v23/vom.wireStruct.Fields]
-	// 18                   ValueLen                          24 [list len]
+	// 16                   ValueLen                          22 [list len]
 	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
 	// 04                   ByteLen                            4 [string len]
 	// 426f6f6c             PrimValue                     "Bool" [string]
@@ -9395,18 +8900,6 @@
 	// 0b                   PrimValue                         11 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 09                   ByteLen                            9 [string len]
-	// 436f6d706c65783634   PrimValue                "Complex64" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0c                   PrimValue                         12 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireField END]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
-	// 0a                   ByteLen                           10 [string len]
-	// 436f6d706c6578313238 PrimValue               "Complex128" [string]
-	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
-	// 0d                   PrimValue                         13 [uint]
-	// e1                   Control                          End [v.io/v23/vom.wireField END]
-	// 00                   Index                              0 [v.io/v23/vom.wireField.Name]
 	// 08                   ByteLen                            8 [string len]
 	// 466f6f64456e756d     PrimValue                 "FoodEnum" [string]
 	// 01                   Index                              1 [v.io/v23/vom.wireField.Type]
@@ -9467,12 +8960,12 @@
 	// 0e                   PrimValue                         14 [uint]
 	// e1                   Control                          End [v.io/v23/vom.wireField END]
 	// e1                   Control                          End [v.io/v23/vom.wireStruct END]
-	// DumpStatus{MsgId: -41, MsgLen: 351, MsgN: 351, Buf(77): "52010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1"}
+	// DumpStatus{MsgId: -41, MsgLen: 322, MsgN: 322, Buf(67): "5201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1"}
 	// 52                   MsgId                             41
-	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}]
+	//                      ValueMsg                          41 [v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}]
 	// 01                   TypeIdsLen                         1
 	// 01                   TypeId                             1
-	// 49                   MsgLen                            73
+	// 3f                   MsgLen                            63
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructManyTypes.Bool]
 	// 01                   PrimValue                       true [bool]
 	// 01                   Index                              1 [v.io/v23/vom/testdata/types.StructManyTypes.AByte]
@@ -9499,49 +8992,43 @@
 	// fef03f               PrimValue                          1 [float]
 	// 0b                   Index                             11 [v.io/v23/vom/testdata/types.StructManyTypes.Float64]
 	// fef03f               PrimValue                          1 [float]
-	// 0c                   Index                             12 [v.io/v23/vom/testdata/types.StructManyTypes.Complex64]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// 0d                   Index                             13 [v.io/v23/vom/testdata/types.StructManyTypes.Complex128]
-	// fef03f               PrimValue                          1 [complex real]
-	// 00                   PrimValue                          1 [complex imag]
-	// 0e                   Index                             14 [v.io/v23/vom/testdata/types.StructManyTypes.FoodEnum]
+	// 0c                   Index                             12 [v.io/v23/vom/testdata/types.StructManyTypes.FoodEnum]
 	// 02                   Index                              2 [v.io/v23/vom/testdata/types.FoodEnum.Cherry]
-	// 10                   Index                             16 [v.io/v23/vom/testdata/types.StructManyTypes.NListUint64]
+	// 0e                   Index                             14 [v.io/v23/vom/testdata/types.StructManyTypes.NListUint64]
 	// 01                   ValueLen                           1 [list len]
 	// 01                   PrimValue                          1 [uint]
-	// 11                   Index                             17 [v.io/v23/vom/testdata/types.StructManyTypes.NByteArray]
+	// 0f                   Index                             15 [v.io/v23/vom/testdata/types.StructManyTypes.NByteArray]
 	// 00                   ByteLen                            4 [bytes len]
 	// 41626364             PrimValue                     "Abcd" [bytes]
-	// 12                   Index                             18 [v.io/v23/vom/testdata/types.StructManyTypes.NArray2Uint64]
+	// 10                   Index                             16 [v.io/v23/vom/testdata/types.StructManyTypes.NArray2Uint64]
 	// 00                   ValueLen                           2 [list len]
 	// 00                   PrimValue                          0 [uint]
 	// 01                   PrimValue                          1 [uint]
-	// 13                   Index                             19 [v.io/v23/vom/testdata/types.StructManyTypes.NSetUint64]
+	// 11                   Index                             17 [v.io/v23/vom/testdata/types.StructManyTypes.NSetUint64]
 	// 01                   ValueLen                           1 [set len]
 	// 01                   PrimValue                          1 [uint]
-	// 14                   Index                             20 [v.io/v23/vom/testdata/types.StructManyTypes.NMapUint64String]
+	// 12                   Index                             18 [v.io/v23/vom/testdata/types.StructManyTypes.NMapUint64String]
 	// 01                   ValueLen                           1 [map len]
 	// 01                   PrimValue                          1 [uint]
 	// 01                   ByteLen                            1 [string len]
 	// 41                   PrimValue                        "A" [string]
-	// 15                   Index                             21 [v.io/v23/vom/testdata/types.StructManyTypes.NStruct]
+	// 13                   Index                             19 [v.io/v23/vom/testdata/types.StructManyTypes.NStruct]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NStruct.A]
 	// 01                   PrimValue                       true [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.NStruct END]
-	// 16                   Index                             22 [v.io/v23/vom/testdata/types.StructManyTypes.NUnion]
+	// 14                   Index                             20 [v.io/v23/vom/testdata/types.StructManyTypes.NUnion]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.NUnion.A]
 	// 01                   PrimValue                       true [bool]
-	// 17                   Index                             23 [v.io/v23/vom/testdata/types.StructManyTypes.TypeObject]
+	// 15                   Index                             21 [v.io/v23/vom/testdata/types.StructManyTypes.TypeObject]
 	// 00                   TypeId                             0 [bool]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructManyTypes END]
-	// DumpStatus{MsgId: 41, MsgLen: 73, MsgN: 73, Value: v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, Complex64: 1+0i, Complex128: 1+0i, FoodEnum: Cherry, NEnum: A, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true, B: "", C: 0}, NUnion: {A: true}, TypeObject: bool}}
+	// DumpStatus{MsgId: 41, MsgLen: 63, MsgN: 63, Value: v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, FoodEnum: Cherry, NEnum: A, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true, B: "", C: 0}, NUnion: {A: true}, TypeObject: bool}}
 	{
-		`types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, Complex64: 1, Complex128: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}`,
-		types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, Complex64: 1, Complex128: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)},
-		"v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;Complex64 complex64;Complex128 complex128;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
-		"81533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e152010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1",
-		"81", "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe015f06002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301180004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10009436f6d706c65783634010ce1000a436f6d706c6578313238010de10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1", "52010149000101010202030204020501060107010801410901410afef03f0bfef03f0cfef03f000dfef03f000e02100101110041626364120000011301011401010141150001e11600011700e1",
+		`types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)}`,
+		types.StructManyTypes{Bool: true, AByte: 1, Int16: 1, Int32: 1, Int64: 1, Uint16: 1, Uint32: 1, Uint64: 1, String: "A", Bytes: "A", Float32: 1, Float64: 1, FoodEnum: types.FoodEnum.Cherry, NListUint64: {1}, NByteArray: "Abcd", NArray2Uint64: {0, 1}, NSetUint64: {1}, NMapUint64String: {1: "A"}, NStruct: {A: true}, NUnion: {A: true}, TypeObject: typeobject(bool)},
+		"v.io/v23/vom/testdata/types.StructManyTypes struct{Bool bool;AByte byte;Int16 int16;Int32 int32;Int64 int64;Uint16 uint16;Uint32 uint32;Uint64 uint64;String string;Bytes []byte;Float32 float32;Float64 float64;FoodEnum v.io/v23/vom/testdata/types.FoodEnum enum{Bean;Brie;Cherry};NEnum v.io/v23/vom/testdata/types.NEnum enum{A;B;C};NListUint64 v.io/v23/vom/testdata/types.NListUint64 []uint64;NByteArray v.io/v23/vom/testdata/types.NByteArray [4]byte;NArray2Uint64 v.io/v23/vom/testdata/types.NArray2Uint64 [2]uint64;NSetUint64 v.io/v23/vom/testdata/types.NSetUint64 set[uint64];NMapUint64String v.io/v23/vom/testdata/types.NMapUint64String map[uint64]string;NStruct v.io/v23/vom/testdata/types.NStruct struct{A bool;B string;C int64};NUnion v.io/v23/vom/testdata/types.NUnion union{A bool;B string;C int64};TypeObject typeobject}",
+		"81533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e15201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1",
+		"81", "533b010024762e696f2f7632332f766f6d2f74657374646174612f74797065732e466f6f64456e756d0103044265616e044272696506436865727279e1552d010021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e456e756d0103014101420143e1572d030027762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4c69737455696e7436340106e1592e020026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e42797465417272617901020204e15b31020029762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e41727261793255696e74363401060202e15d2c040026762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53657455696e7436340106e15f3405002c762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e4d617055696e743634537472696e6701060203e1613b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1633a070022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e556e696f6e01030001410101e10001420103e10001430109e1e151fe014206002b762e696f2f7632332f766f6d2f74657374646174612f74797065732e5374727563744d616e79547970657301160004426f6f6c0101e1000541427974650102e10005496e7431360107e10005496e7433320108e10005496e7436340109e1000655696e7431360104e1000655696e7433320105e1000655696e7436340106e10006537472696e670103e1000542797465730127e10007466c6f61743332010ae10007466c6f61743634010be10008466f6f64456e756d012ae100054e456e756d012be1000b4e4c69737455696e743634012ce1000a4e427974654172726179012de1000d4e41727261793255696e743634012ee1000a4e53657455696e743634012fe100104e4d617055696e743634537472696e670130e100074e5374727563740131e100064e556e696f6e0132e1000a547970654f626a656374010ee1e1", "5201013f000101010202030204020501060107010801410901410afef03f0bfef03f0c020e01010f0041626364100000011101011201010141130001e11400011500e1",
 	},
 	// 81                   Version                          129 [vom version 81]
 	// DumpStatus{MsgId: 0, MsgN: 1, Buf(194): "512a030024762e696f2f7632332f766f6d2f74657374646174612f74797065732e416e79536c696365010fe15328000022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e496e7431360107e15528000022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e496e7433320108e15728000022762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e496e7436340109e152032a2b2c04010101010d04000002010104020206010308"}
@@ -9602,15 +9089,19 @@
 	// 01                   AnyMsgLen                          1
 	// 0d                   MsgLen                            13
 	// 04                   ValueLen                           4 [list len]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NInt16 int16]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   PrimValue                          1 [int]
+	// 01                   TypeId                             1 [v.io/v23/vom/testdata/types.NInt32 int32]
 	// 01                   AnyMsgLen                          1 [len 1]
 	// 04                   PrimValue                          2 [int]
+	// 02                   TypeId                             2 [v.io/v23/vom/testdata/types.NInt64 int64]
 	// 02                   AnyMsgLen                          2 [len 1]
 	// 06                   PrimValue                          3 [int]
+	// 01                   TypeId                             1 [v.io/v23/vom/testdata/types.NInt32 int32]
 	// 03                   AnyMsgLen                          3 [len 1]
 	// 08                   PrimValue                          4 [int]
-	// DumpStatus{MsgId: 41, MsgLen: 13, MsgN: 9, Value: v.io/v23/vom/testdata/types.AnySlice []any{v.io/v23/vom/testdata/types.NInt16 int16(1), v.io/v23/vom/testdata/types.NInt32 int32(2), v.io/v23/vom/testdata/types.NInt64 int64(3), v.io/v23/vom/testdata/types.NInt32 int32(4)}}
+	// DumpStatus{MsgId: 41, MsgLen: 13, MsgN: 13, Value: v.io/v23/vom/testdata/types.AnySlice []any{v.io/v23/vom/testdata/types.NInt16 int16(1), v.io/v23/vom/testdata/types.NInt32 int32(2), v.io/v23/vom/testdata/types.NInt64 int64(3), v.io/v23/vom/testdata/types.NInt32 int32(4)}}
 	{
 		`types.AnySlice{types.NInt16(1), types.NInt32(2), types.NInt64(3), types.NInt32(4)}`,
 		types.AnySlice{types.NInt16(1), types.NInt32(2), types.NInt64(3), types.NInt32(4)},
@@ -9692,22 +9183,26 @@
 	// 15                   MsgLen                            21
 	// 04                   ValueLen                           4 [list len]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [v.io/v23/vom/testdata/types.NInt16 int16]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   PrimValue                          1 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 01                   TypeId                             1 [v.io/v23/vom/testdata/types.NInt32 int32]
 	// 01                   AnyMsgLen                          1 [len 1]
 	// 04                   PrimValue                          2 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 02                   TypeId                             2 [v.io/v23/vom/testdata/types.NInt64 int64]
 	// 02                   AnyMsgLen                          2 [len 1]
 	// 06                   PrimValue                          3 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 01                   TypeId                             1 [v.io/v23/vom/testdata/types.NInt32 int32]
 	// 03                   AnyMsgLen                          3 [len 1]
 	// 08                   PrimValue                          4 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 21, MsgN: 17, Value: []v.io/v23/vom/testdata/types.StructAny struct{Any any}{{Any: v.io/v23/vom/testdata/types.NInt16 int16(1)}, {Any: v.io/v23/vom/testdata/types.NInt32 int32(2)}, {Any: v.io/v23/vom/testdata/types.NInt64 int64(3)}, {Any: v.io/v23/vom/testdata/types.NInt32 int32(4)}}}
+	// DumpStatus{MsgId: 41, MsgLen: 21, MsgN: 21, Value: []v.io/v23/vom/testdata/types.StructAny struct{Any any}{{Any: v.io/v23/vom/testdata/types.NInt16 int16(1)}, {Any: v.io/v23/vom/testdata/types.NInt32 int32(2)}, {Any: v.io/v23/vom/testdata/types.NInt64 int64(3)}, {Any: v.io/v23/vom/testdata/types.NInt32 int32(4)}}}
 	{
 		`[]types.StructAny{{Any: types.NInt16(1)}, {Any: types.NInt32(2)}, {Any: types.NInt64(3)}, {Any: types.NInt32(4)}}`,
 		[]types.StructAny{{Any: types.NInt16(1)}, {Any: types.NInt32(2)}, {Any: types.NInt64(3)}, {Any: types.NInt32(4)}},
@@ -9923,10 +9418,11 @@
 	// 01                   AnyMsgLen                          1
 	// 05                   MsgLen                             5
 	// 00                   Index                              0 [v.io/v23/vom/testdata/types.StructAny.Any]
+	// 00                   TypeId                             0 [int8]
 	// 00                   AnyMsgLen                          0 [len 1]
 	// 02                   PrimValue                          1 [int]
 	// e1                   Control                          End [v.io/v23/vom/testdata/types.StructAny END]
-	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 4, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int8(1)}}
+	// DumpStatus{MsgId: 41, MsgLen: 5, MsgN: 5, Value: v.io/v23/vom/testdata/types.StructAny struct{Any any}{Any: int8(1)}}
 	{
 		`types.StructAny{Any: int8(1)}`,
 		types.StructAny{Any: int8(1)},
@@ -9946,7 +9442,7 @@
 	"map[string]X/struct": []typeobject{typeobject(types.MapOnlyStruct), typeobject(types.StructOnlyMap)},
 	"map[string]bool/set[string]/struct": []typeobject{typeobject(types.MapSetStruct), typeobject(types.SetStructMap), typeobject(types.MapStructSet)},
 	"number list/array": []typeobject{typeobject([]int32), typeobject(types.NArray2Uint64), typeobject(types.NListUint64)},
-	"number": []typeobject{typeobject(uint16), typeobject(uint32), typeobject(uint64), typeobject(int16), typeobject(int32), typeobject(int64), typeobject(float32), typeobject(float64), typeobject(complex64), typeobject(complex128), typeobject(types.NUint16), typeobject(types.NUint32), typeobject(types.NUint64), typeobject(types.NInt16), typeobject(types.NInt32), typeobject(types.NInt64), typeobject(types.NFloat32), typeobject(types.NFloat64), typeobject(types.NComplex64), typeobject(types.NComplex128)},
+	"number": []typeobject{typeobject(uint16), typeobject(uint32), typeobject(uint64), typeobject(int16), typeobject(int32), typeobject(int64), typeobject(float32), typeobject(float64), typeobject(types.NUint16), typeobject(types.NUint32), typeobject(types.NUint64), typeobject(types.NInt16), typeobject(types.NInt32), typeobject(types.NInt64), typeobject(types.NFloat32), typeobject(types.NFloat64)},
 	"string list/array": []typeobject{typeobject([]string), typeobject(types.ListString), typeobject(types.Array3String), typeobject(types.Array4String)},
 	"string/[]byte/enum": []typeobject{typeobject(string), typeobject(types.NString), typeobject([]byte), typeobject(types.NByteSlice), typeobject(types.NByteArray), typeobject(types.NEnum)},
 	"struct A": []typeobject{typeobject(types.NStruct), typeobject(types.AbcStruct), typeobject(types.AdeStruct)},
@@ -9990,33 +9486,28 @@
 		{
 			"byte",
 			typeobject(byte),
-			{ byte(3), uint16(3), int32(3), float64(3), int64(3), complex128(3), },
+			{ byte(3), uint16(3), int32(3), float64(3), int64(3), },
 		},
 		{
 			"uint16",
 			typeobject(uint16),
-			{ uint16(256), int32(256), float64(256), int64(256), complex128(256), },
+			{ uint16(256), int32(256), float64(256), int64(256), },
 		},
 		{
 			"int32",
 			typeobject(int32),
-			{ int32(-5), float64(-5), int64(-5), complex128(-5), },
+			{ int32(-5), float64(-5), int64(-5), },
 		},
 		{
 			"float64",
 			typeobject(float64),
-			{ float64(3.3), complex128(3.3), },
+			{ float64(3.3), },
 		},
 		{
 			"int64",
 			typeobject(int64),
 			{ int64(-9223372036854775808), },
 		},
-		{
-			"complex128",
-			typeobject(complex128),
-			{ complex128(1.5-1i), },
-		},
 	},
 	"string and enum": {
 		{
@@ -10069,7 +9560,7 @@
 		{
 			"struct+map",
 			typeobject(types.MapOnlyStruct),
-			{ types.StructOnlyMap{"Key1": 4, "Key2": 5, "Key3": 0}, types.MapOnlyStruct{Key1: 4, Key2: 5}, },
+			{ types.StructOnlyMap{"Key1": 4, "Key2": 5}, types.MapOnlyStruct{Key1: 4, Key2: 5}, },
 		},
 		{
 			"map+set",
diff --git a/vom/testdata/types/types.vdl.go b/vom/testdata/types/types.vdl.go
index d629803..04062e9 100644
--- a/vom/testdata/types/types.vdl.go
+++ b/vom/testdata/types/types.vdl.go
@@ -995,16 +995,6 @@
 
 	return nil
 }
-func (t *NByteTarget) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToUint8(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NByte(val)
-
-	return nil
-}
 
 type NUint16 uint16
 
@@ -1059,16 +1049,6 @@
 
 	return nil
 }
-func (t *NUint16Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToUint16(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NUint16(val)
-
-	return nil
-}
 
 type NUint32 uint32
 
@@ -1123,16 +1103,6 @@
 
 	return nil
 }
-func (t *NUint32Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToUint32(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NUint32(val)
-
-	return nil
-}
 
 type NUint64 uint64
 
@@ -1183,16 +1153,6 @@
 
 	return nil
 }
-func (t *NUint64Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToUint64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NUint64(val)
-
-	return nil
-}
 
 type NInt8 int8
 
@@ -1247,16 +1207,6 @@
 
 	return nil
 }
-func (t *NInt8Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToInt8(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NInt8(val)
-
-	return nil
-}
 
 type NInt16 int16
 
@@ -1311,16 +1261,6 @@
 
 	return nil
 }
-func (t *NInt16Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToInt16(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NInt16(val)
-
-	return nil
-}
 
 type NInt32 int32
 
@@ -1375,16 +1315,6 @@
 
 	return nil
 }
-func (t *NInt32Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToInt32(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NInt32(val)
-
-	return nil
-}
 
 type NInt64 int64
 
@@ -1435,16 +1365,6 @@
 
 	return nil
 }
-func (t *NInt64Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToInt64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NInt64(val)
-
-	return nil
-}
 
 type NFloat32 float32
 
@@ -1499,16 +1419,6 @@
 
 	return nil
 }
-func (t *NFloat32Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToFloat32(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NFloat32(val)
-
-	return nil
-}
 
 type NFloat64 float64
 
@@ -1559,140 +1469,6 @@
 
 	return nil
 }
-func (t *NFloat64Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToFloat64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NFloat64(val)
-
-	return nil
-}
-
-type NComplex64 complex64
-
-func (NComplex64) __VDLReflect(struct {
-	Name string `vdl:"v.io/v23/vom/testdata/types.NComplex64"`
-}) {
-}
-
-func (m *NComplex64) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
-	if err := t.FromComplex(complex128((*m)), tt); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (m *NComplex64) MakeVDLTarget() vdl.Target {
-	return &NComplex64Target{Value: m}
-}
-
-type NComplex64Target struct {
-	Value *NComplex64
-	vdl.TargetBase
-}
-
-func (t *NComplex64Target) FromUint(src uint64, tt *vdl.Type) error {
-
-	val, err := vdlconv.Uint64ToComplex64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex64(val)
-
-	return nil
-}
-func (t *NComplex64Target) FromInt(src int64, tt *vdl.Type) error {
-
-	val, err := vdlconv.Int64ToComplex64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex64(val)
-
-	return nil
-}
-func (t *NComplex64Target) FromFloat(src float64, tt *vdl.Type) error {
-
-	val, err := vdlconv.Float64ToComplex64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex64(val)
-
-	return nil
-}
-func (t *NComplex64Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToComplex64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex64(val)
-
-	return nil
-}
-
-type NComplex128 complex128
-
-func (NComplex128) __VDLReflect(struct {
-	Name string `vdl:"v.io/v23/vom/testdata/types.NComplex128"`
-}) {
-}
-
-func (m *NComplex128) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
-	if err := t.FromComplex(complex128((*m)), tt); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (m *NComplex128) MakeVDLTarget() vdl.Target {
-	return &NComplex128Target{Value: m}
-}
-
-type NComplex128Target struct {
-	Value *NComplex128
-	vdl.TargetBase
-}
-
-func (t *NComplex128Target) FromUint(src uint64, tt *vdl.Type) error {
-
-	val, err := vdlconv.Uint64ToComplex128(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex128(val)
-
-	return nil
-}
-func (t *NComplex128Target) FromInt(src int64, tt *vdl.Type) error {
-
-	val, err := vdlconv.Int64ToComplex128(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex128(val)
-
-	return nil
-}
-func (t *NComplex128Target) FromFloat(src float64, tt *vdl.Type) error {
-
-	val, err := vdlconv.Float64ToComplex128(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = NComplex128(val)
-
-	return nil
-}
-func (t *NComplex128Target) FromComplex(src complex128, tt *vdl.Type) error {
-
-	*t.Value = NComplex128(src)
-
-	return nil
-}
 
 type NArray2Uint64 [2]uint64
 
@@ -4660,7 +4436,6 @@
 type MapOnlyStruct struct {
 	Key1 int64
 	Key2 uint32
-	Key3 complex128
 }
 
 func (MapOnlyStruct) __VDLReflect(struct {
@@ -4698,18 +4473,6 @@
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Key3")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromComplex(complex128(m.Key3), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -4724,7 +4487,6 @@
 	Value      *MapOnlyStruct
 	key1Target vdl.Int64Target
 	key2Target vdl.Uint32Target
-	key3Target vdl.Complex128Target
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -4746,10 +4508,6 @@
 		t.key2Target.Value = &t.Value.Key2
 		target, err := &t.key2Target, error(nil)
 		return nil, target, err
-	case "Key3":
-		t.key3Target.Value = &t.Value.Key3
-		target, err := &t.key3Target, error(nil)
-		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/vom/testdata/types.MapOnlyStruct", name)
 	}
@@ -6616,8 +6374,6 @@
 	Bytes            []byte
 	Float32          float32
 	Float64          float64
-	Complex64        complex64
-	Complex128       complex128
 	FoodEnum         FoodEnum
 	NEnum            NEnum
 	NListUint64      NListUint64
@@ -6786,164 +6542,140 @@
 			return err
 		}
 	}
-	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("Complex64")
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("FoodEnum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget27.FromComplex(complex128(m.Complex64), tt.NonOptional().Field(12).Type); err != nil {
+
+		if err := m.FoodEnum.FillVDLTarget(fieldTarget27, tt.NonOptional().Field(12).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
-	keyTarget28, fieldTarget29, err := fieldsTarget1.StartField("Complex128")
+	keyTarget28, fieldTarget29, err := fieldsTarget1.StartField("NEnum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget29.FromComplex(complex128(m.Complex128), tt.NonOptional().Field(13).Type); err != nil {
+
+		if err := m.NEnum.FillVDLTarget(fieldTarget29, tt.NonOptional().Field(13).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget28, fieldTarget29); err != nil {
 			return err
 		}
 	}
-	keyTarget30, fieldTarget31, err := fieldsTarget1.StartField("FoodEnum")
+	keyTarget30, fieldTarget31, err := fieldsTarget1.StartField("NListUint64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.FoodEnum.FillVDLTarget(fieldTarget31, tt.NonOptional().Field(14).Type); err != nil {
+		if err := m.NListUint64.FillVDLTarget(fieldTarget31, tt.NonOptional().Field(14).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget30, fieldTarget31); err != nil {
 			return err
 		}
 	}
-	keyTarget32, fieldTarget33, err := fieldsTarget1.StartField("NEnum")
+	keyTarget32, fieldTarget33, err := fieldsTarget1.StartField("NByteArray")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NEnum.FillVDLTarget(fieldTarget33, tt.NonOptional().Field(15).Type); err != nil {
+		if err := m.NByteArray.FillVDLTarget(fieldTarget33, tt.NonOptional().Field(15).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget32, fieldTarget33); err != nil {
 			return err
 		}
 	}
-	keyTarget34, fieldTarget35, err := fieldsTarget1.StartField("NListUint64")
+	keyTarget34, fieldTarget35, err := fieldsTarget1.StartField("NArray2Uint64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NListUint64.FillVDLTarget(fieldTarget35, tt.NonOptional().Field(16).Type); err != nil {
+		if err := m.NArray2Uint64.FillVDLTarget(fieldTarget35, tt.NonOptional().Field(16).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget34, fieldTarget35); err != nil {
 			return err
 		}
 	}
-	keyTarget36, fieldTarget37, err := fieldsTarget1.StartField("NByteArray")
+	keyTarget36, fieldTarget37, err := fieldsTarget1.StartField("NSetUint64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NByteArray.FillVDLTarget(fieldTarget37, tt.NonOptional().Field(17).Type); err != nil {
+		if err := m.NSetUint64.FillVDLTarget(fieldTarget37, tt.NonOptional().Field(17).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget36, fieldTarget37); err != nil {
 			return err
 		}
 	}
-	keyTarget38, fieldTarget39, err := fieldsTarget1.StartField("NArray2Uint64")
+	keyTarget38, fieldTarget39, err := fieldsTarget1.StartField("NMapUint64String")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NArray2Uint64.FillVDLTarget(fieldTarget39, tt.NonOptional().Field(18).Type); err != nil {
+		if err := m.NMapUint64String.FillVDLTarget(fieldTarget39, tt.NonOptional().Field(18).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget38, fieldTarget39); err != nil {
 			return err
 		}
 	}
-	keyTarget40, fieldTarget41, err := fieldsTarget1.StartField("NSetUint64")
+	keyTarget40, fieldTarget41, err := fieldsTarget1.StartField("NStruct")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NSetUint64.FillVDLTarget(fieldTarget41, tt.NonOptional().Field(19).Type); err != nil {
+		if err := m.NStruct.FillVDLTarget(fieldTarget41, tt.NonOptional().Field(19).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget40, fieldTarget41); err != nil {
 			return err
 		}
 	}
-	keyTarget42, fieldTarget43, err := fieldsTarget1.StartField("NMapUint64String")
+	keyTarget42, fieldTarget43, err := fieldsTarget1.StartField("NUnion")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NMapUint64String.FillVDLTarget(fieldTarget43, tt.NonOptional().Field(20).Type); err != nil {
+		unionValue44 := m.NUnion
+		if unionValue44 == nil {
+			unionValue44 = NUnionA{}
+		}
+		if err := unionValue44.FillVDLTarget(fieldTarget43, tt.NonOptional().Field(20).Type); err != nil {
 			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget42, fieldTarget43); err != nil {
 			return err
 		}
 	}
-	keyTarget44, fieldTarget45, err := fieldsTarget1.StartField("NStruct")
+	keyTarget45, fieldTarget46, err := fieldsTarget1.StartField("TypeObject")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-
-		if err := m.NStruct.FillVDLTarget(fieldTarget45, tt.NonOptional().Field(21).Type); err != nil {
+		typeObjectVal47 := m.TypeObject
+		if typeObjectVal47 == nil {
+			typeObjectVal47 = vdl.AnyType
+		}
+		if err := fieldTarget46.FromTypeObject(typeObjectVal47); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget44, fieldTarget45); err != nil {
-			return err
-		}
-	}
-	keyTarget46, fieldTarget47, err := fieldsTarget1.StartField("NUnion")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		unionValue48 := m.NUnion
-		if unionValue48 == nil {
-			unionValue48 = NUnionA{}
-		}
-		if err := unionValue48.FillVDLTarget(fieldTarget47, tt.NonOptional().Field(22).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget46, fieldTarget47); err != nil {
-			return err
-		}
-	}
-	keyTarget49, fieldTarget50, err := fieldsTarget1.StartField("TypeObject")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		typeObjectVal51 := m.TypeObject
-		if typeObjectVal51 == nil {
-			typeObjectVal51 = vdl.AnyType
-		}
-		if err := fieldTarget50.FromTypeObject(typeObjectVal51); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget49, fieldTarget50); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget45, fieldTarget46); err != nil {
 			return err
 		}
 	}
@@ -6971,8 +6703,6 @@
 	bytesTarget            vdl.BytesTarget
 	float32Target          vdl.Float32Target
 	float64Target          vdl.Float64Target
-	complex64Target        vdl.Complex64Target
-	complex128Target       vdl.Complex128Target
 	foodEnumTarget         FoodEnumTarget
 	nEnumTarget            NEnumTarget
 	nListUint64Target      NListUint64Target
@@ -7044,14 +6774,6 @@
 		t.float64Target.Value = &t.Value.Float64
 		target, err := &t.float64Target, error(nil)
 		return nil, target, err
-	case "Complex64":
-		t.complex64Target.Value = &t.Value.Complex64
-		target, err := &t.complex64Target, error(nil)
-		return nil, target, err
-	case "Complex128":
-		t.complex128Target.Value = &t.Value.Complex128
-		target, err := &t.complex128Target, error(nil)
-		return nil, target, err
 	case "FoodEnum":
 		t.foodEnumTarget.Value = &t.Value.FoodEnum
 		target, err := &t.foodEnumTarget, error(nil)
@@ -7450,8 +7172,6 @@
 	__VDLZeroNInt64           = NInt64(0)
 	__VDLZeroNFloat32         = NFloat32(0)
 	__VDLZeroNFloat64         = NFloat64(0)
-	__VDLZeroNComplex64       = NComplex64(0)
-	__VDLZeroNComplex128      = NComplex128(0)
 	__VDLZeroNArray2Uint64    = NArray2Uint64{}
 	__VDLZeroNListUint64      = NListUint64(nil)
 	__VDLZeroNSetUint64       = NSetUint64(nil)
@@ -7558,8 +7278,6 @@
 	vdl.Register((*NInt64)(nil))
 	vdl.Register((*NFloat32)(nil))
 	vdl.Register((*NFloat64)(nil))
-	vdl.Register((*NComplex64)(nil))
-	vdl.Register((*NComplex128)(nil))
 	vdl.Register((*NArray2Uint64)(nil))
 	vdl.Register((*NListUint64)(nil))
 	vdl.Register((*NSetUint64)(nil))
diff --git a/vom/testdata/types/vomtype.vdl b/vom/testdata/types/vomtype.vdl
index 73b1fe1..ec064e8 100644
--- a/vom/testdata/types/vomtype.vdl
+++ b/vom/testdata/types/vomtype.vdl
@@ -28,8 +28,6 @@
 	NInt64      int64
 	NFloat32    float32
 	NFloat64    float64
-	NComplex64  complex64
-	NComplex128 complex128
 
 	NArray2Uint64    [2]uint64
 	NListUint64      []uint64
@@ -122,7 +120,6 @@
 	MapOnlyStruct struct {
 		Key1 int64
 		Key2 uint32
-		Key3 complex128
 	}
 	StructOnlyMap map[string]uint64
 
@@ -177,8 +174,6 @@
 		Bytes []byte
 		Float32 float32
 		Float64 float64
-		Complex64 complex64
-		Complex128 complex128
 		FoodEnum FoodEnum
 		NEnum NEnum
 		NListUint64 NListUint64
diff --git a/vom/testdata/vomdata.vdl.config b/vom/testdata/vomdata.vdl.config
index 2549c36..fbae2bc 100644
--- a/vom/testdata/vomdata.vdl.config
+++ b/vom/testdata/vomdata.vdl.config
@@ -117,8 +117,6 @@
 
 	float32(0), float32(32.5), float32(-32.5),
 	float64(0), float64(64.5), float64(-64.5),
-	complex64(0), complex64(64.5+64.5i), complex64(64.5-64.5i),
-	complex128(0), complex128(128.5+128.5i), complex128(128.5-128.5i),
 
 	// Values of simple named types.
 	t.NBool(true), t.NBool(false),
@@ -134,8 +132,6 @@
 	t.NInt64(0), t.NInt64(0x7fffffffffffffff), t.NInt64(-0x8000000000000000),
 	t.NFloat32(0), t.NFloat32(32.5), t.NFloat32(-32.5),
 	t.NFloat64(0), t.NFloat64(64.5), t.NFloat64(-64.5),
-	t.NComplex64(0), t.NComplex64(64.5+64.5i), t.NComplex64(64.5-64.5i),
-	t.NComplex128(0), t.NComplex128(128.5+128.5i), t.NComplex128(128.5-128.5i),
 
 	// Values of composite types.
 	//
@@ -179,12 +175,10 @@
 	typeobject(int16),typeobject(int32),typeobject(int64),
 	typeobject(int16),typeobject(int32),typeobject(int64),
 	typeobject(float32),typeobject(float64),
-	typeobject(complex64),typeobject(complex128),
 	typeobject(t.NBool),
 	typeobject(t.NUint16),typeobject(t.NUint32),typeobject(t.NUint64),
 	typeobject(t.NInt16),typeobject(t.NInt32),typeobject(t.NInt64),
 	typeobject(t.NFloat32),typeobject(t.NFloat64),
-	typeobject(t.NComplex64),typeobject(t.NComplex128),
 	typeobject(t.NArray2Uint64),
 	typeobject([]uint64), typeobject(t.NListUint64),
 	typeobject(set[uint64]), typeobject(t.NSetUint64),
@@ -199,7 +193,6 @@
 	t.StructAny{int16(0)}, t.StructAny{int32(0)}, t.StructAny{int64(0)},
 	t.StructAny{uint16(0)}, t.StructAny{uint32(0)}, t.StructAny{uint64(0)},
 	t.StructAny{float32(0)}, t.StructAny{float64(0)},
-	t.StructAny{complex64(0)}, t.StructAny{complex128(0)},
 	t.StructAny{""}, t.StructAny{[]byte{}},
 	t.StructAny{t.FoodEnum.Bean},
 	t.StructAny{t.NListUint64{}}, t.StructAny{t.NByteArray{}}, t.StructAny{t.NArray2Uint64{}},
@@ -214,7 +207,6 @@
 	t.StructAny{int16(1)}, t.StructAny{int32(1)}, t.StructAny{int64(1)},
 	t.StructAny{uint16(1)}, t.StructAny{uint32(1)}, t.StructAny{uint64(1)},
 	t.StructAny{float32(1)}, t.StructAny{float64(1)},
-	t.StructAny{complex64(1)}, t.StructAny{complex128(1)},
 	t.StructAny{"A"}, t.StructAny{[]byte("A")},
 	t.StructAny{t.FoodEnum.Cherry},
 	t.StructAny{t.NListUint64{1}}, t.StructAny{t.NByteArray("Abcd")}, t.StructAny{t.NArray2Uint64{0, 1}},
@@ -229,7 +221,6 @@
     any(int16(0)), any(int32(0)), any(int64(0)),
     any(uint16(0)), any(uint32(0)), any(uint64(0)),
     any(float32(0)), any(float64(0)),
-    any(complex64(0)), any(complex128(0)),
     any(""), any([]byte{}),
     any(t.FoodEnum.Bean),
     any(t.NListUint64{}), any(t.NByteArray{}), any(t.NArray2Uint64{}),
@@ -241,7 +232,6 @@
 	any(int16(1)), any(int32(1)), any(int64(1)),
 	any(uint16(1)), any(uint32(1)), any(uint64(1)),
 	any(float32(1)), any(float64(1)),
-	any(complex64(1)), any(complex128(1)),
 	any("A"), any([]byte("A")),
 	any(t.FoodEnum.Cherry),
 	any(t.NListUint64{1}), any(t.NByteArray("Abcd")), any(t.NArray2Uint64{0, 1}),
@@ -265,8 +255,6 @@
 		Bytes: []byte("A"),
 		Float32: 1,
 		Float64: 1,
-		Complex64: 1,
-		Complex128: 1,
 		FoodEnum: Cherry,
 		NListUint64: t.NListUint64{1},
 		NByteArray: t.NByteArray("Abcd"),
@@ -341,11 +329,9 @@
 		typeobject(uint16),typeobject(uint32),typeobject(uint64),
 		typeobject(int16),typeobject(int32),typeobject(int64),
 		typeobject(float32),typeobject(float64),
-		typeobject(complex64),typeobject(complex128),
 		typeobject(t.NUint16),typeobject(t.NUint32),typeobject(t.NUint64),
 		typeobject(t.NInt16),typeobject(t.NInt32),typeobject(t.NInt64),
 		typeobject(t.NFloat32),typeobject(t.NFloat64),
-		typeobject(t.NComplex64),typeobject(t.NComplex128),
 	},
 	"string/[]byte/enum": {
 		typeobject(string),typeobject(t.NString),
@@ -404,21 +390,21 @@
 			"byte",
 			typeobject(byte),
 			{
-				byte(3),uint16(3),int32(3),float64(3),int64(3),complex128(3),
+				byte(3),uint16(3),int32(3),float64(3),int64(3),
 			},
 		},
 		{
 			"uint16",
 			typeobject(uint16),
 			{
-				uint16(256),int32(256),float64(256),int64(256),complex128(256),
+				uint16(256),int32(256),float64(256),int64(256),
 			},
 		},
 		{
 			"int32",
 			typeobject(int32),
 			{
-				int32(-5),float64(-5),int64(-5),complex128(-5),
+				int32(-5),float64(-5),int64(-5),
 				// int8(-5), // TODO(bprosnitz) In order to add int8, we need VOM support in java because it uses VOM for conversion.
 			},
 		},
@@ -426,7 +412,7 @@
 			"float64",
 			typeobject(float64),
 			{
-				float64(3.3),complex128(3.3),
+				float64(3.3),
 			},
 		},
 		{
@@ -436,13 +422,6 @@
 				int64(-0x8000000000000000),
 			},
 		},
-		{
-			"complex128",
-			typeobject(complex128),
-			{
-				complex128(1.5-1i),
-			},
-		},
 	},
 	"string and enum": {
 		{
@@ -570,12 +549,10 @@
 				t.StructOnlyMap{
 					"Key1": 4,
 					"Key2": 5,
-					"Key3": 0,
 				},
 				t.MapOnlyStruct{
 					Key1: 4,
 					Key2: 5,
-					Key3: 0,
 				},
 			},
 		},
diff --git a/vom/type.go b/vom/type.go
index d44f005..4406410 100644
--- a/vom/type.go
+++ b/vom/type.go
@@ -89,8 +89,6 @@
 		WireIdInt64:      vdl.Int64Type,
 		WireIdFloat32:    vdl.Float32Type,
 		WireIdFloat64:    vdl.Float64Type,
-		WireIdComplex64:  vdl.Complex64Type,
-		WireIdComplex128: vdl.Complex128Type,
 		WireIdTypeObject: vdl.TypeObjectType,
 		WireIdAny:        vdl.AnyType,
 	} {
diff --git a/vom/type_encoder.go b/vom/type_encoder.go
index faa305c..e600fcd 100644
--- a/vom/type_encoder.go
+++ b/vom/type_encoder.go
@@ -110,7 +110,7 @@
 	// Construct the wireType.
 	var wt wireType
 	switch kind := tt.Kind(); kind {
-	case vdl.Bool, vdl.Byte, vdl.String, vdl.Uint16, vdl.Uint32, vdl.Uint64, vdl.Int8, vdl.Int16, vdl.Int32, vdl.Int64, vdl.Float32, vdl.Float64, vdl.Complex64, vdl.Complex128:
+	case vdl.Bool, vdl.Byte, vdl.String, vdl.Uint16, vdl.Uint32, vdl.Uint64, vdl.Int8, vdl.Int16, vdl.Int32, vdl.Int64, vdl.Float32, vdl.Float64:
 		wt = wireTypeNamedT{wireNamed{tt.Name(), bootstrapKindToId[kind]}}
 	case vdl.Enum:
 		wireEnum := wireEnum{tt.Name(), make([]string, tt.NumEnumLabel())}
diff --git a/vom/vom.vdl.go b/vom/vom.vdl.go
index fc716cd..d6d14ca 100644
--- a/vom/vom.vdl.go
+++ b/vom/vom.vdl.go
@@ -815,16 +815,6 @@
 
 	return nil
 }
-func (t *typeIdTarget) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToUint64(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = typeId(val)
-
-	return nil
-}
 
 // wireNamed represents a type definition for named primitives.
 type wireNamed struct {
@@ -2305,8 +2295,8 @@
 const WireIdInt64 = typeId(9)
 const WireIdFloat32 = typeId(10)
 const WireIdFloat64 = typeId(11)
-const WireIdComplex64 = typeId(12)
-const WireIdComplex128 = typeId(13)
+
+// Wire ids 12 and 13 were previously used for complex64 and complex 128.
 const WireIdTypeObject = typeId(14)
 const WireIdAny = typeId(15)
 const WireIdInt8 = typeId(16)
diff --git a/vom/wiretype.vdl b/vom/wiretype.vdl
index 8855bd3..560841a 100644
--- a/vom/wiretype.vdl
+++ b/vom/wiretype.vdl
@@ -18,8 +18,7 @@
 	WireIdInt64      = typeId(9)
 	WireIdFloat32    = typeId(10)
 	WireIdFloat64    = typeId(11)
-	WireIdComplex64  = typeId(12)
-	WireIdComplex128 = typeId(13)
+	// Wire ids 12 and 13 were previously used for complex64 and complex 128.
 	WireIdTypeObject = typeId(14)
 	WireIdAny        = typeId(15)
 	WireIdInt8       = typeId(16)
diff --git a/vtrace/.api b/vtrace/.api
index acd24a7..e19ebae 100644
--- a/vtrace/.api
+++ b/vtrace/.api
@@ -38,7 +38,6 @@
 pkg vtrace, method (*SpanRecordTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vtrace, method (*TraceFlags) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vtrace, method (*TraceFlags) MakeVDLTarget() vdl.Target
-pkg vtrace, method (*TraceFlagsTarget) FromComplex(complex128, *vdl.Type) error
 pkg vtrace, method (*TraceFlagsTarget) FromFloat(float64, *vdl.Type) error
 pkg vtrace, method (*TraceFlagsTarget) FromInt(int64, *vdl.Type) error
 pkg vtrace, method (*TraceFlagsTarget) FromUint(uint64, *vdl.Type) error
diff --git a/vtrace/vtrace.vdl.go b/vtrace/vtrace.vdl.go
index 564e0c0..6da4b89 100644
--- a/vtrace/vtrace.vdl.go
+++ b/vtrace/vtrace.vdl.go
@@ -537,16 +537,6 @@
 
 	return nil
 }
-func (t *TraceFlagsTarget) FromComplex(src complex128, tt *vdl.Type) error {
-
-	val, err := vdlconv.Complex128ToInt32(src)
-	if err != nil {
-		return err
-	}
-	*t.Value = TraceFlags(val)
-
-	return nil
-}
 
 // Request is the object that carries trace informtion between processes.
 type Request struct {