TBR v23: Add FromZero method to Target to efficiently fill in zero value

MultiPart: 1/6
Change-Id: I32016dc8ca3cdde6c8b563b51bb5e8258ee858e5
diff --git a/discovery/.api b/discovery/.api
index 5d4e1e0..44bb2a7 100644
--- a/discovery/.api
+++ b/discovery/.api
@@ -3,10 +3,12 @@
 pkg discovery, method (*AdId) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg discovery, method (*AdId) MakeVDLTarget() vdl.Target
 pkg discovery, method (*AdIdTarget) FromBytes([]byte, *vdl.Type) error
+pkg discovery, method (*AdIdTarget) FromZero(*vdl.Type) error
 pkg discovery, method (*Advertisement) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg discovery, method (*Advertisement) MakeVDLTarget() vdl.Target
 pkg discovery, method (*AdvertisementTarget) FinishField(vdl.Target, vdl.Target) error
 pkg discovery, method (*AdvertisementTarget) FinishFields(vdl.FieldsTarget) error
+pkg discovery, method (*AdvertisementTarget) FromZero(*vdl.Type) error
 pkg discovery, method (*AdvertisementTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg discovery, method (*AdvertisementTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg discovery, method (*Attachments) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -14,6 +16,7 @@
 pkg discovery, method (*AttachmentsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg discovery, method (*AttachmentsTarget) FinishKeyStartField(vdl.Target) (vdl.Target, error)
 pkg discovery, method (*AttachmentsTarget) FinishMap(vdl.MapTarget) error
+pkg discovery, method (*AttachmentsTarget) FromZero(*vdl.Type) error
 pkg discovery, method (*AttachmentsTarget) StartKey() (vdl.Target, error)
 pkg discovery, method (*AttachmentsTarget) StartMap(*vdl.Type, int) (vdl.MapTarget, error)
 pkg discovery, method (*Attributes) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -21,6 +24,7 @@
 pkg discovery, method (*AttributesTarget) FinishField(vdl.Target, vdl.Target) error
 pkg discovery, method (*AttributesTarget) FinishKeyStartField(vdl.Target) (vdl.Target, error)
 pkg discovery, method (*AttributesTarget) FinishMap(vdl.MapTarget) error
+pkg discovery, method (*AttributesTarget) FromZero(*vdl.Type) error
 pkg discovery, method (*AttributesTarget) StartKey() (vdl.Target, error)
 pkg discovery, method (*AttributesTarget) StartMap(*vdl.Type, int) (vdl.MapTarget, error)
 pkg discovery, method (AdId) IsValid() bool
diff --git a/discovery/discovery.vdl.go b/discovery/discovery.vdl.go
index 23dbf4c..f01f6f5 100644
--- a/discovery/discovery.vdl.go
+++ b/discovery/discovery.vdl.go
@@ -50,6 +50,10 @@
 
 	return nil
 }
+func (t *AdIdTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AdId{}
+	return nil
+}
 
 // Attributes represents service attributes as a key/value pair.
 type Attributes map[string]string
@@ -134,6 +138,10 @@
 
 	return nil
 }
+func (t *AttributesTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Attributes(nil)
+	return nil
+}
 
 // Attachments represents service attachments as a key/value pair.
 type Attachments map[string][]byte
@@ -219,6 +227,10 @@
 
 	return nil
 }
+func (t *AttachmentsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Attachments(nil)
+	return nil
+}
 
 // Advertisement represents a feed into advertiser to broadcast its contents
 // to scanners.
@@ -263,84 +275,132 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Id == AdId{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("InterfaceName")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.InterfaceName), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Addresses")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("InterfaceName")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget8, err := fieldTarget7.StartList(tt.NonOptional().Field(2).Type, len(m.Addresses))
-		if err != nil {
+		var7 := (m.InterfaceName == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.InterfaceName), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
-		for i, elem10 := range m.Addresses {
-			elemTarget9, err := listTarget8.StartElem(i)
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Addresses")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var10 bool
+		if len(m.Addresses) == 0 {
+			var10 = true
+		}
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(2).Type, len(m.Addresses))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget9.FromString(string(elem10), tt.NonOptional().Field(2).Type.Elem()); err != nil {
-				return err
+			for i, elem13 := range m.Addresses {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget12.FromString(string(elem13), tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
 			}
-			if err := listTarget8.FinishElem(elemTarget9); err != nil {
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget7.FinishList(listTarget8); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Attributes")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Attributes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Attributes.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var var16 bool
+		if len(m.Attributes) == 0 {
+			var16 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Attributes.FillVDLTarget(fieldTarget15, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("Attachments")
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("Attachments")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Attachments.FillVDLTarget(fieldTarget14, tt.NonOptional().Field(4).Type); err != nil {
-			return err
+		var var19 bool
+		if len(m.Attachments) == 0 {
+			var19 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Attachments.FillVDLTarget(fieldTarget18, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
 	}
@@ -405,14 +465,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroAdId          = AdId{}
-	__VDLZeroAttributes    = Attributes(nil)
-	__VDLZeroAttachments   = Attachments(nil)
-	__VDLZeroAdvertisement = Advertisement{}
-)
+func (t *AdvertisementTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Advertisement{}
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -433,6 +489,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*AdId)(nil))
diff --git a/flow/.api b/flow/.api
index 3537c45..b616cc1 100644
--- a/flow/.api
+++ b/flow/.api
@@ -80,12 +80,12 @@
 pkg flow, type Protocol interface, Dial(*context.T, string, string, time.Duration) (Conn, error)
 pkg flow, type Protocol interface, Listen(*context.T, string, string) (Listener, error)
 pkg flow, type Protocol interface, Resolve(*context.T, string, string) (string, []string, error)
-pkg flow, var ErrAborted verror.IDAction
-pkg flow, var ErrAuth verror.IDAction
-pkg flow, var ErrBadArg verror.IDAction
-pkg flow, var ErrBadState verror.IDAction
-pkg flow, var ErrDialFailed verror.IDAction
-pkg flow, var ErrNetwork verror.IDAction
-pkg flow, var ErrNotTrusted verror.IDAction
-pkg flow, var ErrProxy verror.IDAction
-pkg flow, var ErrResolveFailed verror.IDAction
+pkg flow, var ErrAborted unknown-type
+pkg flow, var ErrAuth unknown-type
+pkg flow, var ErrBadArg unknown-type
+pkg flow, var ErrBadState unknown-type
+pkg flow, var ErrDialFailed unknown-type
+pkg flow, var ErrNetwork unknown-type
+pkg flow, var ErrNotTrusted unknown-type
+pkg flow, var ErrProxy unknown-type
+pkg flow, var ErrResolveFailed unknown-type
diff --git a/flow/flow.vdl.go b/flow/flow.vdl.go
index 3036fcd..0fd90b7 100644
--- a/flow/flow.vdl.go
+++ b/flow/flow.vdl.go
@@ -93,6 +93,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrAuth.ID), "{1:}{2:} {:3}")
diff --git a/flow/message/.api b/flow/message/.api
index 8af5b06..fe361d7 100644
--- a/flow/message/.api
+++ b/flow/message/.api
@@ -50,7 +50,7 @@
 pkg message, type Setup struct, Versions version.RPCVersionRange
 pkg message, type TearDown struct
 pkg message, type TearDown struct, Message string
-pkg message, var ErrInvalidMsg verror.IDAction
-pkg message, var ErrInvalidSetupOption verror.IDAction
-pkg message, var ErrMissingBlessings verror.IDAction
-pkg message, var ErrUnknownMsg verror.IDAction
+pkg message, var ErrInvalidMsg unknown-type
+pkg message, var ErrInvalidSetupOption unknown-type
+pkg message, var ErrMissingBlessings unknown-type
+pkg message, var ErrUnknownMsg unknown-type
diff --git a/flow/message/message.vdl.go b/flow/message/message.vdl.go
index 6426217..459b73b 100644
--- a/flow/message/message.vdl.go
+++ b/flow/message/message.vdl.go
@@ -63,6 +63,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrInvalidMsg.ID), "{1:}{2:} message of type {3} and size {4} failed decoding at field {5}{:6}.")
diff --git a/naming/.api b/naming/.api
index 46e8919..3aab0ad 100644
--- a/naming/.api
+++ b/naming/.api
@@ -22,16 +22,19 @@
 pkg naming, func Unescape(string) (string, bool)
 pkg naming, method (*GlobChildrenReplyTarget) FinishField(vdl.Target, vdl.Target) error
 pkg naming, method (*GlobChildrenReplyTarget) FinishFields(vdl.FieldsTarget) error
+pkg naming, method (*GlobChildrenReplyTarget) FromZero(*vdl.Type) error
 pkg naming, method (*GlobChildrenReplyTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg naming, method (*GlobChildrenReplyTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg naming, method (*GlobError) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg naming, method (*GlobError) MakeVDLTarget() vdl.Target
 pkg naming, method (*GlobErrorTarget) FinishField(vdl.Target, vdl.Target) error
 pkg naming, method (*GlobErrorTarget) FinishFields(vdl.FieldsTarget) error
+pkg naming, method (*GlobErrorTarget) FromZero(*vdl.Type) error
 pkg naming, method (*GlobErrorTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg naming, method (*GlobErrorTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg naming, method (*GlobReplyTarget) FinishField(vdl.Target, vdl.Target) error
 pkg naming, method (*GlobReplyTarget) FinishFields(vdl.FieldsTarget) error
+pkg naming, method (*GlobReplyTarget) FromZero(*vdl.Type) error
 pkg naming, method (*GlobReplyTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg naming, method (*GlobReplyTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg naming, method (*MountEntry) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -39,6 +42,7 @@
 pkg naming, method (*MountEntry) Names() []string
 pkg naming, method (*MountEntryTarget) FinishField(vdl.Target, vdl.Target) error
 pkg naming, method (*MountEntryTarget) FinishFields(vdl.FieldsTarget) error
+pkg naming, method (*MountEntryTarget) FromZero(*vdl.Type) error
 pkg naming, method (*MountEntryTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg naming, method (*MountEntryTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg naming, method (*MountFlag) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -46,10 +50,12 @@
 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
+pkg naming, method (*MountFlagTarget) FromZero(*vdl.Type) error
 pkg naming, method (*MountedServer) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg naming, method (*MountedServer) MakeVDLTarget() vdl.Target
 pkg naming, method (*MountedServerTarget) FinishField(vdl.Target, vdl.Target) error
 pkg naming, method (*MountedServerTarget) FinishFields(vdl.FieldsTarget) error
+pkg naming, method (*MountedServerTarget) FromZero(*vdl.Type) error
 pkg naming, method (*MountedServerTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg naming, method (*MountedServerTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg naming, method (*RoutingID) FromString(string) error
diff --git a/naming/naming.vdl.go b/naming/naming.vdl.go
index 3ea123e..95687f8 100644
--- a/naming/naming.vdl.go
+++ b/naming/naming.vdl.go
@@ -74,6 +74,10 @@
 
 	return nil
 }
+func (t *MountFlagTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MountFlag(0)
+	return nil
+}
 
 // MountedServer represents a server mounted on a specific name.
 type MountedServer struct {
@@ -93,34 +97,49 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Server")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Server), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Server == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Server), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	var wireValue4 time.WireDeadline
-	if err := time.WireDeadlineFromNative(&wireValue4, m.Deadline); err != nil {
+	var wireValue5 time.WireDeadline
+	if err := time.WireDeadlineFromNative(&wireValue5, m.Deadline); err != nil {
 		return err
 	}
 
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Deadline")
+	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Deadline")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue4.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var8 := (wireValue5 == time.WireDeadline{})
+		if var8 {
+			if err := fieldTarget7.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue5.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
 			return err
 		}
 	}
@@ -170,6 +189,10 @@
 
 	return nil
 }
+func (t *MountedServerTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MountedServer{}
+	return nil
+}
 
 // MountEntry represents a given name mounted in the mounttable.
 type MountEntry struct {
@@ -193,73 +216,107 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Servers")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Servers")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Servers))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Servers) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Servers {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Servers))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Servers {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("ServesMountTable")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("ServesMountTable")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget10.FromBool(bool(m.ServesMountTable), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
-			return err
-		}
-	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("IsLeaf")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget12.FromBool(bool(m.IsLeaf), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var13 := (m.ServesMountTable == false)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromBool(bool(m.ServesMountTable), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("IsLeaf")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var16 := (m.IsLeaf == false)
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromBool(bool(m.IsLeaf), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -316,6 +373,10 @@
 
 	return nil
 }
+func (t *MountEntryTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MountEntry{}
+	return nil
+}
 
 // []MountedServer
 type __VDLTarget1_list struct {
@@ -349,6 +410,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []MountedServer(nil)
+	return nil
+}
 
 // GlobError is returned by namespace.Glob to indicate a subtree of the namespace
 // that could not be traversed.
@@ -369,40 +434,49 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Error")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Error")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Error == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.Error == (error)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			var wireError6 vdl.WireError
-			if err := verror.WireFromNative(&wireError6, m.Error); err != nil {
+
+			var wireError8 vdl.WireError
+			if err := verror.WireFromNative(&wireError8, m.Error); err != nil {
 				return err
 			}
-			if err := wireError6.FillVDLTarget(fieldTarget5, vdl.ErrorType); err != nil {
+			if err := wireError8.FillVDLTarget(fieldTarget6, vdl.ErrorType); err != nil {
 				return err
 			}
 
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -452,6 +526,10 @@
 
 	return nil
 }
+func (t *GlobErrorTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GlobError{}
+	return nil
+}
 
 type (
 	// GlobReply represents any single field of the GlobReply union type.
@@ -589,6 +667,10 @@
 
 	return nil
 }
+func (t *GlobReplyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GlobReply(GlobReplyEntry{})
+	return nil
+}
 
 type globReplyTargetFactory struct{}
 
@@ -734,6 +816,10 @@
 
 	return nil
 }
+func (t *GlobChildrenReplyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GlobChildrenReply(GlobChildrenReplyName{})
+	return nil
+}
 
 type globChildrenReplyTargetFactory struct{}
 
@@ -744,16 +830,6 @@
 	return nil, fmt.Errorf("got %T, want *GlobChildrenReply", union)
 }
 
-// Create zero values for each type.
-var (
-	__VDLZeroMountFlag         = MountFlag(0)
-	__VDLZeroMountedServer     = MountedServer{}
-	__VDLZeroMountEntry        = MountEntry{}
-	__VDLZeroGlobError         = GlobError{}
-	__VDLZeroGlobReply         = GlobReply(GlobReplyEntry{})
-	__VDLZeroGlobChildrenReply = GlobChildrenReply(GlobChildrenReplyName{})
-)
-
 //////////////////////////////////////////////////
 // Const definitions
 
@@ -780,6 +856,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*MountFlag)(nil))
diff --git a/query/engine/internal/testdata/testdata.vdl.go b/query/engine/internal/testdata/testdata.vdl.go
index d52fde0..c1fe3cf 100644
--- a/query/engine/internal/testdata/testdata.vdl.go
+++ b/query/engine/internal/testdata/testdata.vdl.go
@@ -37,55 +37,86 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Street")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Street), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Street == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Street), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("City")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("City")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.City), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.City == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.City), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("State")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.State), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Zip")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromString(string(m.Zip), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.State == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.State), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Zip")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Zip == "")
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromString(string(m.Zip), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -142,6 +173,10 @@
 
 	return nil
 }
+func (t *AddressInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AddressInfo{}
+	return nil
+}
 
 type CreditAgency int
 
@@ -225,11 +260,15 @@
 	case "TransUnion":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/query/engine/internal/testdata.CreditAgency", src)
+		return fmt.Errorf("label %s not in enum CreditAgency", src)
 	}
 
 	return nil
 }
+func (t *CreditAgencyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CreditAgencyEquifax
+	return nil
+}
 
 type ExperianRating int
 
@@ -305,11 +344,15 @@
 	case "Bad":
 		*t.Value = 1
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/query/engine/internal/testdata.ExperianRating", src)
+		return fmt.Errorf("label %s not in enum ExperianRating", src)
 	}
 
 	return nil
 }
+func (t *ExperianRatingTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ExperianRatingGood
+	return nil
+}
 
 type RatingsArray [4]int16
 
@@ -372,6 +415,10 @@
 
 	return nil
 }
+func (t *RatingsArrayTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RatingsArray{}
+	return nil
+}
 
 type EquifaxCreditReport struct {
 	Rating           byte
@@ -388,29 +435,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Rating == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("FourScoreRatings")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("FourScoreRatings")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.FourScoreRatings.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.FourScoreRatings == RatingsArray{})
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.FourScoreRatings.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -460,6 +522,10 @@
 
 	return nil
 }
+func (t *EquifaxCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = EquifaxCreditReport{}
+	return nil
+}
 
 type Tdh int
 
@@ -543,11 +609,15 @@
 	case "Harry":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/query/engine/internal/testdata.Tdh", src)
+		return fmt.Errorf("label %s not in enum Tdh", src)
 	}
 
 	return nil
 }
+func (t *TdhTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TdhTom
+	return nil
+}
 
 type ExperianCreditReport struct {
 	Rating       ExperianRating
@@ -565,60 +635,86 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Rating.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Rating == ExperianRatingGood)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Rating.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("TdhApprovals")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("TdhApprovals")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget6, err := fieldTarget5.StartSet(tt.NonOptional().Field(1).Type, len(m.TdhApprovals))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.TdhApprovals) == 0 {
+			var7 = true
 		}
-		for key8 := range m.TdhApprovals {
-			keyTarget7, err := setTarget6.StartKey()
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget8, err := fieldTarget6.StartSet(tt.NonOptional().Field(1).Type, len(m.TdhApprovals))
 			if err != nil {
 				return err
 			}
+			for key10 := range m.TdhApprovals {
+				keyTarget9, err := setTarget8.StartKey()
+				if err != nil {
+					return err
+				}
 
-			if err := key8.FillVDLTarget(keyTarget7, tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
+				if err := key10.FillVDLTarget(keyTarget9, tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget8.FinishKey(keyTarget9); err != nil {
+					return err
+				}
 			}
-			if err := setTarget6.FinishKey(keyTarget7); err != nil {
+			if err := fieldTarget6.FinishSet(setTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishSet(setTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Auditor")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Auditor")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Auditor.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var13 := (m.Auditor == TdhTom)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Auditor.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
@@ -673,6 +769,10 @@
 
 	return nil
 }
+func (t *ExperianCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ExperianCreditReport{}
+	return nil
+}
 
 // map[Tdh]struct{}
 type __VDLTarget1_set struct {
@@ -708,6 +808,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[Tdh]struct{}(nil)
+	return nil
+}
 
 type TransUnionCreditReport struct {
 	Rating          int16
@@ -724,52 +828,70 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Rating == int16(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("PreviousRatings")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("PreviousRatings")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget6, err := fieldTarget5.StartMap(tt.NonOptional().Field(1).Type, len(m.PreviousRatings))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.PreviousRatings) == 0 {
+			var7 = true
 		}
-		for key8, value10 := range m.PreviousRatings {
-			keyTarget7, err := mapTarget6.StartKey()
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget8, err := fieldTarget6.StartMap(tt.NonOptional().Field(1).Type, len(m.PreviousRatings))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget7.FromString(string(key8), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
+			for key10, value12 := range m.PreviousRatings {
+				keyTarget9, err := mapTarget8.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget9.FromString(string(key10), tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget11, err := mapTarget8.FinishKeyStartField(keyTarget9)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget11.FromInt(int64(value12), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget8.FinishField(keyTarget9, valueTarget11); err != nil {
+					return err
+				}
 			}
-			valueTarget9, err := mapTarget6.FinishKeyStartField(keyTarget7)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget9.FromInt(int64(value10), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget6.FinishField(keyTarget7, valueTarget9); err != nil {
+			if err := fieldTarget6.FinishMap(mapTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishMap(mapTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -819,6 +941,10 @@
 
 	return nil
 }
+func (t *TransUnionCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TransUnionCreditReport{}
+	return nil
+}
 
 // map[string]int16
 type __VDLTarget2_map struct {
@@ -862,6 +988,10 @@
 
 	return nil
 }
+func (t *__VDLTarget2_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]int16(nil)
+	return nil
+}
 
 type (
 	// AgencyReport represents any single field of the AgencyReport union type.
@@ -1037,6 +1167,10 @@
 
 	return nil
 }
+func (t *AgencyReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AgencyReport(AgencyReportEquifaxReport{})
+	return nil
+}
 
 type agencyReportTargetFactory struct{}
 
@@ -1062,34 +1196,54 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Agency")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Agency.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Agency == CreditAgencyEquifax)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Agency.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Report")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Report")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue6 := m.Report
-		if unionValue6 == nil {
-			unionValue6 = AgencyReportEquifaxReport{}
+		var var7 bool
+		if field, ok := m.Report.(AgencyReportEquifaxReport); ok {
+
+			var8 := (field.Value == EquifaxCreditReport{})
+			var7 = var8
 		}
-		if err := unionValue6.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue9 := m.Report
+			if unionValue9 == nil {
+				unionValue9 = AgencyReportEquifaxReport{}
+			}
+			if err := unionValue9.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1139,6 +1293,12 @@
 
 	return nil
 }
+func (t *CreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CreditReport{
+		Report: AgencyReportEquifaxReport{},
+	}
+	return nil
+}
 
 type Customer struct {
 	Name              string
@@ -1159,96 +1319,155 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Id")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Id), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Active")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromBool(bool(m.Active), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Address")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Address.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
+		var7 := (m.Id == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Id), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Active")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Active == false)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromBool(bool(m.Active), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("PreviousAddresses")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Address")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget12, err := fieldTarget11.StartList(tt.NonOptional().Field(4).Type, len(m.PreviousAddresses))
-		if err != nil {
+		var13 := (m.Address == AddressInfo{})
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Address.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
-		for i, elem14 := range m.PreviousAddresses {
-			elemTarget13, err := listTarget12.StartElem(i)
+	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("PreviousAddresses")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var16 bool
+		if len(m.PreviousAddresses) == 0 {
+			var16 = true
+		}
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget17, err := fieldTarget15.StartList(tt.NonOptional().Field(4).Type, len(m.PreviousAddresses))
 			if err != nil {
 				return err
 			}
+			for i, elem19 := range m.PreviousAddresses {
+				elemTarget18, err := listTarget17.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem14.FillVDLTarget(elemTarget13, tt.NonOptional().Field(4).Type.Elem()); err != nil {
-				return err
+				if err := elem19.FillVDLTarget(elemTarget18, tt.NonOptional().Field(4).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget17.FinishElem(elemTarget18); err != nil {
+					return err
+				}
 			}
-			if err := listTarget12.FinishElem(elemTarget13); err != nil {
+			if err := fieldTarget15.FinishList(listTarget17); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget11.FinishList(listTarget12); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget15, fieldTarget16, err := fieldsTarget1.StartField("Credit")
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("Credit")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Credit.FillVDLTarget(fieldTarget16, tt.NonOptional().Field(5).Type); err != nil {
-			return err
+		var22 := true
+		var23 := (m.Credit.Agency == CreditAgencyEquifax)
+		var22 = var22 && var23
+		var var24 bool
+		if field, ok := m.Credit.Report.(AgencyReportEquifaxReport); ok {
+
+			var25 := (field.Value == EquifaxCreditReport{})
+			var24 = var25
 		}
-		if err := fieldsTarget1.FinishField(keyTarget15, fieldTarget16); err != nil {
+		var22 = var22 && var24
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Credit.FillVDLTarget(fieldTarget21, tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
 	}
@@ -1318,6 +1537,14 @@
 
 	return nil
 }
+func (t *CustomerTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Customer{
+		Credit: CreditReport{
+			Report: AgencyReportEquifaxReport{},
+		},
+	}
+	return nil
+}
 
 // []AddressInfo
 type __VDLTarget3_list struct {
@@ -1351,6 +1578,10 @@
 
 	return nil
 }
+func (t *__VDLTarget3_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []AddressInfo(nil)
+	return nil
+}
 
 type Invoice struct {
 	CustId      int64
@@ -1370,71 +1601,110 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("CustId")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.CustId), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.CustId == int64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.CustId), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("InvoiceNum")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.InvoiceNum), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	var wireValue6 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue6, m.InvoiceDate); err != nil {
-		return err
-	}
-
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("InvoiceDate")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("InvoiceNum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue6.FillVDLTarget(fieldTarget8, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var7 := (m.InvoiceNum == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.InvoiceNum), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Amount")
+	var wireValue8 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue8, m.InvoiceDate); err != nil {
+		return err
+	}
+
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("InvoiceDate")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget10.FromInt(int64(m.Amount), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var11 := (wireValue8 == time_2.Time{})
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue8.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("ShipTo")
+	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Amount")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.ShipTo.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(4).Type); err != nil {
+		var14 := (m.Amount == int64(0))
+		if var14 {
+			if err := fieldTarget13.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget13.FromInt(int64(m.Amount), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+	}
+	keyTarget15, fieldTarget16, err := fieldsTarget1.StartField("ShipTo")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var17 := (m.ShipTo == AddressInfo{})
+		if var17 {
+			if err := fieldTarget16.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.ShipTo.FillVDLTarget(fieldTarget16, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget15, fieldTarget16); err != nil {
 			return err
 		}
 	}
@@ -1499,6 +1769,10 @@
 
 	return nil
 }
+func (t *InvoiceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Invoice{}
+	return nil
+}
 
 type Numbers struct {
 	B    byte
@@ -1522,112 +1796,183 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.B), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.B == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.B), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Ui16")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Ui16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromUint(uint64(m.Ui16), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Ui16 == uint16(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromUint(uint64(m.Ui16), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Ui32")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Ui32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromUint(uint64(m.Ui32), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Ui64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromUint(uint64(m.Ui64), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.Ui32 == uint32(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromUint(uint64(m.Ui32), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("I16")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Ui64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget11.FromInt(int64(m.I16), tt.NonOptional().Field(4).Type); err != nil {
-			return err
+
+		var13 := (m.Ui64 == uint64(0))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromUint(uint64(m.Ui64), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("I32")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("I16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget13.FromInt(int64(m.I32), tt.NonOptional().Field(5).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
-			return err
-		}
-	}
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("I64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget15.FromInt(int64(m.I64), tt.NonOptional().Field(6).Type); err != nil {
-			return err
+
+		var16 := (m.I16 == int16(0))
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromInt(int64(m.I16), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("F32")
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("I32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget17.FromFloat(float64(m.F32), tt.NonOptional().Field(7).Type); err != nil {
-			return err
+
+		var19 := (m.I32 == int32(0))
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget18.FromInt(int64(m.I32), tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
 	}
-	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("F64")
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("I64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget19.FromFloat(float64(m.F64), tt.NonOptional().Field(8).Type); err != nil {
+
+		var22 := (m.I64 == int64(0))
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget21.FromInt(int64(m.I64), tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
+	}
+	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("F32")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var25 := (m.F32 == float32(0))
+		if var25 {
+			if err := fieldTarget24.FromZero(tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget24.FromFloat(float64(m.F32), tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
+			return err
+		}
+	}
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("F64")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var28 := (m.F64 == float64(0))
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget27.FromFloat(float64(m.F64), tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
@@ -1712,6 +2057,10 @@
 
 	return nil
 }
+func (t *NumbersTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Numbers{}
+	return nil
+}
 
 type (
 	// TitleOrValueType represents any single field of the TitleOrValueType union type.
@@ -1845,6 +2194,10 @@
 
 	return nil
 }
+func (t *TitleOrValueTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TitleOrValueType(TitleOrValueTypeTitle{})
+	return nil
+}
 
 type titleOrValueTypeTargetFactory struct{}
 
@@ -1870,33 +2223,53 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("TitleOrValue")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("TitleOrValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue6 := m.TitleOrValue
-		if unionValue6 == nil {
-			unionValue6 = TitleOrValueTypeTitle{}
+		var var7 bool
+		if field, ok := m.TitleOrValue.(TitleOrValueTypeTitle); ok {
+
+			var8 := (field.Value == "")
+			var7 = var8
 		}
-		if err := unionValue6.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue9 := m.TitleOrValue
+			if unionValue9 == nil {
+				unionValue9 = TitleOrValueTypeTitle{}
+			}
+			if err := unionValue9.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1946,6 +2319,12 @@
 
 	return nil
 }
+func (t *BazTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BazType{
+		TitleOrValue: TitleOrValueTypeTitle{},
+	}
+	return nil
+}
 
 type BarType struct {
 	Baz BazType
@@ -1961,15 +2340,24 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Baz")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Baz.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Baz == BazType{
+			TitleOrValue: TitleOrValueTypeTitle{},
+		})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Baz.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -2016,6 +2404,14 @@
 
 	return nil
 }
+func (t *BarTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BarType{
+		Baz: BazType{
+			TitleOrValue: TitleOrValueTypeTitle{},
+		},
+	}
+	return nil
+}
 
 type FooType struct {
 	Bar BarType
@@ -2031,15 +2427,26 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Bar")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Bar.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Bar == BarType{
+			Baz: BazType{
+				TitleOrValue: TitleOrValueTypeTitle{},
+			},
+		})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Bar.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -2086,6 +2493,16 @@
 
 	return nil
 }
+func (t *FooTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = FooType{
+		Bar: BarType{
+			Baz: BazType{
+				TitleOrValue: TitleOrValueTypeTitle{},
+			},
+		},
+	}
+	return nil
+}
 
 type K struct {
 	A byte
@@ -2102,28 +2519,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.A), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.A == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.A), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("B")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.B), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.B == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.B), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -2173,6 +2605,10 @@
 
 	return nil
 }
+func (t *KTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = K{}
+	return nil
+}
 
 type V struct {
 	A string
@@ -2189,28 +2625,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.A), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.A == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.A), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("B")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromFloat(float64(m.B), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.B == float32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromFloat(float64(m.B), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -2260,6 +2711,10 @@
 
 	return nil
 }
+func (t *VTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = V{}
+	return nil
+}
 
 type FunWithMaps struct {
 	Key       K
@@ -2277,125 +2732,154 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Key.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Key == K{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Key.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Map")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Map")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget6, err := fieldTarget5.StartMap(tt.NonOptional().Field(1).Type, len(m.Map))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Map) == 0 {
+			var7 = true
 		}
-		for key8, value10 := range m.Map {
-			keyTarget7, err := mapTarget6.StartKey()
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget8, err := fieldTarget6.StartMap(tt.NonOptional().Field(1).Type, len(m.Map))
 			if err != nil {
 				return err
 			}
+			for key10, value12 := range m.Map {
+				keyTarget9, err := mapTarget8.StartKey()
+				if err != nil {
+					return err
+				}
 
-			if err := key8.FillVDLTarget(keyTarget7, tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget9, err := mapTarget6.FinishKeyStartField(keyTarget7)
-			if err != nil {
-				return err
-			}
+				if err := key10.FillVDLTarget(keyTarget9, tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget11, err := mapTarget8.FinishKeyStartField(keyTarget9)
+				if err != nil {
+					return err
+				}
 
-			if err := value10.FillVDLTarget(valueTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := value12.FillVDLTarget(valueTarget11, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget8.FinishField(keyTarget9, valueTarget11); err != nil {
+					return err
+				}
 			}
-			if err := mapTarget6.FinishField(keyTarget7, valueTarget9); err != nil {
+			if err := fieldTarget6.FinishMap(mapTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishMap(mapTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Confusing")
+	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("Confusing")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget13, err := fieldTarget12.StartMap(tt.NonOptional().Field(2).Type, len(m.Confusing))
-		if err != nil {
-			return err
+		var var15 bool
+		if len(m.Confusing) == 0 {
+			var15 = true
 		}
-		for key15, value17 := range m.Confusing {
-			keyTarget14, err := mapTarget13.StartKey()
-			if err != nil {
+		if var15 {
+			if err := fieldTarget14.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
-			if err := keyTarget14.FromInt(int64(key15), tt.NonOptional().Field(2).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget16, err := mapTarget13.FinishKeyStartField(keyTarget14)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			listTarget18, err := valueTarget16.StartList(tt.NonOptional().Field(2).Type.Elem(), len(value17))
+			mapTarget16, err := fieldTarget14.StartMap(tt.NonOptional().Field(2).Type, len(m.Confusing))
 			if err != nil {
 				return err
 			}
-			for i, elem20 := range value17 {
-				elemTarget19, err := listTarget18.StartElem(i)
+			for key18, value20 := range m.Confusing {
+				keyTarget17, err := mapTarget16.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget17.FromInt(int64(key18), tt.NonOptional().Field(2).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget19, err := mapTarget16.FinishKeyStartField(keyTarget17)
 				if err != nil {
 					return err
 				}
 
-				setTarget21, err := elemTarget19.StartSet(tt.NonOptional().Field(2).Type.Elem().Elem(), len(elem20))
+				listTarget21, err := valueTarget19.StartList(tt.NonOptional().Field(2).Type.Elem(), len(value20))
 				if err != nil {
 					return err
 				}
-				for key23 := range elem20 {
-					keyTarget22, err := setTarget21.StartKey()
+				for i, elem23 := range value20 {
+					elemTarget22, err := listTarget21.StartElem(i)
 					if err != nil {
 						return err
 					}
-					if err := keyTarget22.FromString(string(key23), tt.NonOptional().Field(2).Type.Elem().Elem().Key()); err != nil {
+
+					setTarget24, err := elemTarget22.StartSet(tt.NonOptional().Field(2).Type.Elem().Elem(), len(elem23))
+					if err != nil {
 						return err
 					}
-					if err := setTarget21.FinishKey(keyTarget22); err != nil {
+					for key26 := range elem23 {
+						keyTarget25, err := setTarget24.StartKey()
+						if err != nil {
+							return err
+						}
+						if err := keyTarget25.FromString(string(key26), tt.NonOptional().Field(2).Type.Elem().Elem().Key()); err != nil {
+							return err
+						}
+						if err := setTarget24.FinishKey(keyTarget25); err != nil {
+							return err
+						}
+					}
+					if err := elemTarget22.FinishSet(setTarget24); err != nil {
+						return err
+					}
+					if err := listTarget21.FinishElem(elemTarget22); err != nil {
 						return err
 					}
 				}
-				if err := elemTarget19.FinishSet(setTarget21); err != nil {
+				if err := valueTarget19.FinishList(listTarget21); err != nil {
 					return err
 				}
-				if err := listTarget18.FinishElem(elemTarget19); err != nil {
+				if err := mapTarget16.FinishField(keyTarget17, valueTarget19); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget16.FinishList(listTarget18); err != nil {
-				return err
-			}
-			if err := mapTarget13.FinishField(keyTarget14, valueTarget16); err != nil {
+			if err := fieldTarget14.FinishMap(mapTarget16); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget12.FinishMap(mapTarget13); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
 			return err
 		}
 	}
@@ -2450,6 +2934,10 @@
 
 	return nil
 }
+func (t *FunWithMapsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = FunWithMaps{}
+	return nil
+}
 
 // map[K]V
 type __VDLTarget4_map struct {
@@ -2493,6 +2981,10 @@
 
 	return nil
 }
+func (t *__VDLTarget4_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[K]V(nil)
+	return nil
+}
 
 // map[int16][]map[string]struct{}
 type __VDLTarget5_map struct {
@@ -2536,6 +3028,10 @@
 
 	return nil
 }
+func (t *__VDLTarget5_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int16][]map[string]struct{}(nil)
+	return nil
+}
 
 // []map[string]struct{}
 type __VDLTarget6_list struct {
@@ -2569,6 +3065,10 @@
 
 	return nil
 }
+func (t *__VDLTarget6_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []map[string]struct{}(nil)
+	return nil
+}
 
 // map[string]struct{}
 type __VDLTarget7_set struct {
@@ -2604,6 +3104,10 @@
 
 	return nil
 }
+func (t *__VDLTarget7_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]struct{}(nil)
+	return nil
+}
 
 type FunWithTypes struct {
 	T1 *vdl.Type
@@ -2620,36 +3124,51 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("T1")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		typeObjectVal4 := m.T1
-		if typeObjectVal4 == nil {
-			typeObjectVal4 = vdl.AnyType
-		}
-		if err := fieldTarget3.FromTypeObject(typeObjectVal4); err != nil {
-			return err
+
+		var4 := (m.T1 == vdl.AnyType)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal5 := m.T1
+			if typeObjectVal5 == nil {
+				typeObjectVal5 = vdl.AnyType
+			}
+			if err := fieldTarget3.FromTypeObject(typeObjectVal5); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("T2")
+	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("T2")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		typeObjectVal7 := m.T2
-		if typeObjectVal7 == nil {
-			typeObjectVal7 = vdl.AnyType
+
+		var8 := (m.T2 == vdl.AnyType)
+		if var8 {
+			if err := fieldTarget7.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal9 := m.T2
+			if typeObjectVal9 == nil {
+				typeObjectVal9 = vdl.AnyType
+			}
+			if err := fieldTarget7.FromTypeObject(typeObjectVal9); err != nil {
+				return err
+			}
 		}
-		if err := fieldTarget6.FromTypeObject(typeObjectVal7); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
 			return err
 		}
 	}
@@ -2699,6 +3218,13 @@
 
 	return nil
 }
+func (t *FunWithTypesTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = FunWithTypes{
+		T1: vdl.AnyType,
+		T2: vdl.AnyType,
+	}
+	return nil
+}
 
 type ManyMaps struct {
 	B   map[bool]string
@@ -2726,502 +3252,644 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.B))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.B) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.B {
-			keyTarget5, err := mapTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.B))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget5.FromBool(bool(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
+			for key7, value9 := range m.B {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromBool(bool(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget8.FromString(string(value9), tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget7.FromString(string(value8), tt.NonOptional().Field(0).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("By")
+	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("By")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget11, err := fieldTarget10.StartMap(tt.NonOptional().Field(1).Type, len(m.By))
-		if err != nil {
-			return err
+		var var12 bool
+		if len(m.By) == 0 {
+			var12 = true
 		}
-		for key13, value15 := range m.By {
-			keyTarget12, err := mapTarget11.StartKey()
+		if var12 {
+			if err := fieldTarget11.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget13, err := fieldTarget11.StartMap(tt.NonOptional().Field(1).Type, len(m.By))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget12.FromUint(uint64(key13), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
+			for key15, value17 := range m.By {
+				keyTarget14, err := mapTarget13.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget14.FromUint(uint64(key15), tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget16, err := mapTarget13.FinishKeyStartField(keyTarget14)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget16.FromString(string(value17), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget13.FinishField(keyTarget14, valueTarget16); err != nil {
+					return err
+				}
 			}
-			valueTarget14, err := mapTarget11.FinishKeyStartField(keyTarget12)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget14.FromString(string(value15), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget11.FinishField(keyTarget12, valueTarget14); err != nil {
+			if err := fieldTarget11.FinishMap(mapTarget13); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget10.FinishMap(mapTarget11); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("U16")
+	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("U16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget18, err := fieldTarget17.StartMap(tt.NonOptional().Field(2).Type, len(m.U16))
-		if err != nil {
-			return err
+		var var20 bool
+		if len(m.U16) == 0 {
+			var20 = true
 		}
-		for key20, value22 := range m.U16 {
-			keyTarget19, err := mapTarget18.StartKey()
+		if var20 {
+			if err := fieldTarget19.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget21, err := fieldTarget19.StartMap(tt.NonOptional().Field(2).Type, len(m.U16))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget19.FromUint(uint64(key20), tt.NonOptional().Field(2).Type.Key()); err != nil {
-				return err
+			for key23, value25 := range m.U16 {
+				keyTarget22, err := mapTarget21.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget22.FromUint(uint64(key23), tt.NonOptional().Field(2).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget24, err := mapTarget21.FinishKeyStartField(keyTarget22)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget24.FromString(string(value25), tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget21.FinishField(keyTarget22, valueTarget24); err != nil {
+					return err
+				}
 			}
-			valueTarget21, err := mapTarget18.FinishKeyStartField(keyTarget19)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget21.FromString(string(value22), tt.NonOptional().Field(2).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget18.FinishField(keyTarget19, valueTarget21); err != nil {
+			if err := fieldTarget19.FinishMap(mapTarget21); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget17.FinishMap(mapTarget18); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
 			return err
 		}
 	}
-	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("U32")
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("U32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget25, err := fieldTarget24.StartMap(tt.NonOptional().Field(3).Type, len(m.U32))
-		if err != nil {
-			return err
+		var var28 bool
+		if len(m.U32) == 0 {
+			var28 = true
 		}
-		for key27, value29 := range m.U32 {
-			keyTarget26, err := mapTarget25.StartKey()
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget29, err := fieldTarget27.StartMap(tt.NonOptional().Field(3).Type, len(m.U32))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget26.FromUint(uint64(key27), tt.NonOptional().Field(3).Type.Key()); err != nil {
-				return err
+			for key31, value33 := range m.U32 {
+				keyTarget30, err := mapTarget29.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget30.FromUint(uint64(key31), tt.NonOptional().Field(3).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget32, err := mapTarget29.FinishKeyStartField(keyTarget30)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget32.FromString(string(value33), tt.NonOptional().Field(3).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget29.FinishField(keyTarget30, valueTarget32); err != nil {
+					return err
+				}
 			}
-			valueTarget28, err := mapTarget25.FinishKeyStartField(keyTarget26)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget28.FromString(string(value29), tt.NonOptional().Field(3).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget25.FinishField(keyTarget26, valueTarget28); err != nil {
+			if err := fieldTarget27.FinishMap(mapTarget29); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget24.FinishMap(mapTarget25); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
-	keyTarget30, fieldTarget31, err := fieldsTarget1.StartField("U64")
+	keyTarget34, fieldTarget35, err := fieldsTarget1.StartField("U64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget32, err := fieldTarget31.StartMap(tt.NonOptional().Field(4).Type, len(m.U64))
-		if err != nil {
-			return err
+		var var36 bool
+		if len(m.U64) == 0 {
+			var36 = true
 		}
-		for key34, value36 := range m.U64 {
-			keyTarget33, err := mapTarget32.StartKey()
+		if var36 {
+			if err := fieldTarget35.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget37, err := fieldTarget35.StartMap(tt.NonOptional().Field(4).Type, len(m.U64))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget33.FromUint(uint64(key34), tt.NonOptional().Field(4).Type.Key()); err != nil {
-				return err
+			for key39, value41 := range m.U64 {
+				keyTarget38, err := mapTarget37.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget38.FromUint(uint64(key39), tt.NonOptional().Field(4).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget40, err := mapTarget37.FinishKeyStartField(keyTarget38)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget40.FromString(string(value41), tt.NonOptional().Field(4).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget37.FinishField(keyTarget38, valueTarget40); err != nil {
+					return err
+				}
 			}
-			valueTarget35, err := mapTarget32.FinishKeyStartField(keyTarget33)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget35.FromString(string(value36), tt.NonOptional().Field(4).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget32.FinishField(keyTarget33, valueTarget35); err != nil {
+			if err := fieldTarget35.FinishMap(mapTarget37); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget31.FinishMap(mapTarget32); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget30, fieldTarget31); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget34, fieldTarget35); err != nil {
 			return err
 		}
 	}
-	keyTarget37, fieldTarget38, err := fieldsTarget1.StartField("I16")
+	keyTarget42, fieldTarget43, err := fieldsTarget1.StartField("I16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget39, err := fieldTarget38.StartMap(tt.NonOptional().Field(5).Type, len(m.I16))
-		if err != nil {
-			return err
+		var var44 bool
+		if len(m.I16) == 0 {
+			var44 = true
 		}
-		for key41, value43 := range m.I16 {
-			keyTarget40, err := mapTarget39.StartKey()
+		if var44 {
+			if err := fieldTarget43.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget45, err := fieldTarget43.StartMap(tt.NonOptional().Field(5).Type, len(m.I16))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget40.FromInt(int64(key41), tt.NonOptional().Field(5).Type.Key()); err != nil {
-				return err
+			for key47, value49 := range m.I16 {
+				keyTarget46, err := mapTarget45.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget46.FromInt(int64(key47), tt.NonOptional().Field(5).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget48, err := mapTarget45.FinishKeyStartField(keyTarget46)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget48.FromString(string(value49), tt.NonOptional().Field(5).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget45.FinishField(keyTarget46, valueTarget48); err != nil {
+					return err
+				}
 			}
-			valueTarget42, err := mapTarget39.FinishKeyStartField(keyTarget40)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget42.FromString(string(value43), tt.NonOptional().Field(5).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget39.FinishField(keyTarget40, valueTarget42); err != nil {
+			if err := fieldTarget43.FinishMap(mapTarget45); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget38.FinishMap(mapTarget39); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget37, fieldTarget38); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget42, fieldTarget43); err != nil {
 			return err
 		}
 	}
-	keyTarget44, fieldTarget45, err := fieldsTarget1.StartField("I32")
+	keyTarget50, fieldTarget51, err := fieldsTarget1.StartField("I32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget46, err := fieldTarget45.StartMap(tt.NonOptional().Field(6).Type, len(m.I32))
-		if err != nil {
-			return err
+		var var52 bool
+		if len(m.I32) == 0 {
+			var52 = true
 		}
-		for key48, value50 := range m.I32 {
-			keyTarget47, err := mapTarget46.StartKey()
+		if var52 {
+			if err := fieldTarget51.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget53, err := fieldTarget51.StartMap(tt.NonOptional().Field(6).Type, len(m.I32))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget47.FromInt(int64(key48), tt.NonOptional().Field(6).Type.Key()); err != nil {
-				return err
+			for key55, value57 := range m.I32 {
+				keyTarget54, err := mapTarget53.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget54.FromInt(int64(key55), tt.NonOptional().Field(6).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget56, err := mapTarget53.FinishKeyStartField(keyTarget54)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget56.FromString(string(value57), tt.NonOptional().Field(6).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget53.FinishField(keyTarget54, valueTarget56); err != nil {
+					return err
+				}
 			}
-			valueTarget49, err := mapTarget46.FinishKeyStartField(keyTarget47)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget49.FromString(string(value50), tt.NonOptional().Field(6).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget46.FinishField(keyTarget47, valueTarget49); err != nil {
+			if err := fieldTarget51.FinishMap(mapTarget53); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget45.FinishMap(mapTarget46); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget44, fieldTarget45); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget50, fieldTarget51); err != nil {
 			return err
 		}
 	}
-	keyTarget51, fieldTarget52, err := fieldsTarget1.StartField("I64")
+	keyTarget58, fieldTarget59, err := fieldsTarget1.StartField("I64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget53, err := fieldTarget52.StartMap(tt.NonOptional().Field(7).Type, len(m.I64))
-		if err != nil {
-			return err
+		var var60 bool
+		if len(m.I64) == 0 {
+			var60 = true
 		}
-		for key55, value57 := range m.I64 {
-			keyTarget54, err := mapTarget53.StartKey()
-			if err != nil {
+		if var60 {
+			if err := fieldTarget59.FromZero(tt.NonOptional().Field(7).Type); err != nil {
 				return err
 			}
-			if err := keyTarget54.FromInt(int64(key55), tt.NonOptional().Field(7).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget56, err := mapTarget53.FinishKeyStartField(keyTarget54)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget56.FromString(string(value57), tt.NonOptional().Field(7).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget53.FinishField(keyTarget54, valueTarget56); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget52.FinishMap(mapTarget53); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget51, fieldTarget52); err != nil {
-			return err
-		}
-	}
-	keyTarget58, fieldTarget59, err := fieldsTarget1.StartField("F32")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		} else {
 
-		mapTarget60, err := fieldTarget59.StartMap(tt.NonOptional().Field(8).Type, len(m.F32))
-		if err != nil {
-			return err
-		}
-		for key62, value64 := range m.F32 {
-			keyTarget61, err := mapTarget60.StartKey()
+			mapTarget61, err := fieldTarget59.StartMap(tt.NonOptional().Field(7).Type, len(m.I64))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget61.FromFloat(float64(key62), tt.NonOptional().Field(8).Type.Key()); err != nil {
+			for key63, value65 := range m.I64 {
+				keyTarget62, err := mapTarget61.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget62.FromInt(int64(key63), tt.NonOptional().Field(7).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget64, err := mapTarget61.FinishKeyStartField(keyTarget62)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget64.FromString(string(value65), tt.NonOptional().Field(7).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget61.FinishField(keyTarget62, valueTarget64); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget59.FinishMap(mapTarget61); err != nil {
 				return err
 			}
-			valueTarget63, err := mapTarget60.FinishKeyStartField(keyTarget61)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget63.FromString(string(value64), tt.NonOptional().Field(8).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget60.FinishField(keyTarget61, valueTarget63); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget59.FinishMap(mapTarget60); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget58, fieldTarget59); err != nil {
 			return err
 		}
 	}
-	keyTarget65, fieldTarget66, err := fieldsTarget1.StartField("F64")
+	keyTarget66, fieldTarget67, err := fieldsTarget1.StartField("F32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget67, err := fieldTarget66.StartMap(tt.NonOptional().Field(9).Type, len(m.F64))
-		if err != nil {
-			return err
+		var var68 bool
+		if len(m.F32) == 0 {
+			var68 = true
 		}
-		for key69, value71 := range m.F64 {
-			keyTarget68, err := mapTarget67.StartKey()
-			if err != nil {
+		if var68 {
+			if err := fieldTarget67.FromZero(tt.NonOptional().Field(8).Type); err != nil {
 				return err
 			}
-			if err := keyTarget68.FromFloat(float64(key69), tt.NonOptional().Field(9).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget70, err := mapTarget67.FinishKeyStartField(keyTarget68)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget70.FromString(string(value71), tt.NonOptional().Field(9).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget67.FinishField(keyTarget68, valueTarget70); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget66.FinishMap(mapTarget67); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget65, fieldTarget66); err != nil {
-			return err
-		}
-	}
-	keyTarget72, fieldTarget73, err := fieldsTarget1.StartField("S")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		} else {
 
-		mapTarget74, err := fieldTarget73.StartMap(tt.NonOptional().Field(10).Type, len(m.S))
-		if err != nil {
-			return err
-		}
-		for key76, value78 := range m.S {
-			keyTarget75, err := mapTarget74.StartKey()
+			mapTarget69, err := fieldTarget67.StartMap(tt.NonOptional().Field(8).Type, len(m.F32))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget75.FromString(string(key76), tt.NonOptional().Field(10).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget77, err := mapTarget74.FinishKeyStartField(keyTarget75)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget77.FromString(string(value78), tt.NonOptional().Field(10).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget74.FinishField(keyTarget75, valueTarget77); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget73.FinishMap(mapTarget74); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget72, fieldTarget73); err != nil {
-			return err
-		}
-	}
-	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.Ms))
-		if err != nil {
-			return err
-		}
-		for key83, value85 := range m.Ms {
-			keyTarget82, err := mapTarget81.StartKey()
-			if err != nil {
-				return err
-			}
-			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
-			}
-
-			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()
+			for key71, value73 := range m.F32 {
+				keyTarget70, err := mapTarget69.StartKey()
 				if err != nil {
 					return err
 				}
-				if err := keyTarget87.FromString(string(key88), tt.NonOptional().Field(11).Type.Elem().Key()); err != nil {
+				if err := keyTarget70.FromFloat(float64(key71), tt.NonOptional().Field(8).Type.Key()); err != nil {
 					return err
 				}
-				valueTarget89, err := mapTarget86.FinishKeyStartField(keyTarget87)
+				valueTarget72, err := mapTarget69.FinishKeyStartField(keyTarget70)
 				if err != nil {
 					return err
 				}
-				if err := valueTarget89.FromString(string(value90), tt.NonOptional().Field(11).Type.Elem().Elem()); err != nil {
+				if err := valueTarget72.FromString(string(value73), tt.NonOptional().Field(8).Type.Elem()); err != nil {
 					return err
 				}
-				if err := mapTarget86.FinishField(keyTarget87, valueTarget89); err != nil {
+				if err := mapTarget69.FinishField(keyTarget70, valueTarget72); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget84.FinishMap(mapTarget86); err != nil {
-				return err
-			}
-			if err := mapTarget81.FinishField(keyTarget82, valueTarget84); err != nil {
+			if err := fieldTarget67.FinishMap(mapTarget69); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget80.FinishMap(mapTarget81); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget79, fieldTarget80); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget66, fieldTarget67); err != nil {
 			return err
 		}
 	}
-	keyTarget91, fieldTarget92, err := fieldsTarget1.StartField("T")
+	keyTarget74, fieldTarget75, err := fieldsTarget1.StartField("F64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget93, err := fieldTarget92.StartMap(tt.NonOptional().Field(12).Type, len(m.T))
-		if err != nil {
-			return err
+		var var76 bool
+		if len(m.F64) == 0 {
+			var76 = true
 		}
-		for key95, value97 := range m.T {
-			keyTarget94, err := mapTarget93.StartKey()
+		if var76 {
+			if err := fieldTarget75.FromZero(tt.NonOptional().Field(9).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget77, err := fieldTarget75.StartMap(tt.NonOptional().Field(9).Type, len(m.F64))
 			if err != nil {
 				return err
 			}
-
-			var wireValue98 time_2.Time
-			if err := time_2.TimeFromNative(&wireValue98, key95); err != nil {
+			for key79, value81 := range m.F64 {
+				keyTarget78, err := mapTarget77.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget78.FromFloat(float64(key79), tt.NonOptional().Field(9).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget80, err := mapTarget77.FinishKeyStartField(keyTarget78)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget80.FromString(string(value81), tt.NonOptional().Field(9).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget77.FinishField(keyTarget78, valueTarget80); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget75.FinishMap(mapTarget77); err != nil {
 				return err
 			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget74, fieldTarget75); err != nil {
+			return err
+		}
+	}
+	keyTarget82, fieldTarget83, err := fieldsTarget1.StartField("S")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
 
-			if err := wireValue98.FillVDLTarget(keyTarget94, tt.NonOptional().Field(12).Type.Key()); err != nil {
+		var var84 bool
+		if len(m.S) == 0 {
+			var84 = true
+		}
+		if var84 {
+			if err := fieldTarget83.FromZero(tt.NonOptional().Field(10).Type); err != nil {
 				return err
 			}
-			valueTarget96, err := mapTarget93.FinishKeyStartField(keyTarget94)
+		} else {
+
+			mapTarget85, err := fieldTarget83.StartMap(tt.NonOptional().Field(10).Type, len(m.S))
 			if err != nil {
 				return err
 			}
-			if err := valueTarget96.FromString(string(value97), tt.NonOptional().Field(12).Type.Elem()); err != nil {
-				return err
+			for key87, value89 := range m.S {
+				keyTarget86, err := mapTarget85.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget86.FromString(string(key87), tt.NonOptional().Field(10).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget88, err := mapTarget85.FinishKeyStartField(keyTarget86)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget88.FromString(string(value89), tt.NonOptional().Field(10).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget85.FinishField(keyTarget86, valueTarget88); err != nil {
+					return err
+				}
 			}
-			if err := mapTarget93.FinishField(keyTarget94, valueTarget96); err != nil {
+			if err := fieldTarget83.FinishMap(mapTarget85); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget92.FinishMap(mapTarget93); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget82, fieldTarget83); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget91, fieldTarget92); err != nil {
+	}
+	keyTarget90, fieldTarget91, err := fieldsTarget1.StartField("Ms")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var92 bool
+		if len(m.Ms) == 0 {
+			var92 = true
+		}
+		if var92 {
+			if err := fieldTarget91.FromZero(tt.NonOptional().Field(11).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget93, err := fieldTarget91.StartMap(tt.NonOptional().Field(11).Type, len(m.Ms))
+			if err != nil {
+				return err
+			}
+			for key95, value97 := range m.Ms {
+				keyTarget94, err := mapTarget93.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget94.FromString(string(key95), tt.NonOptional().Field(11).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget96, err := mapTarget93.FinishKeyStartField(keyTarget94)
+				if err != nil {
+					return err
+				}
+
+				mapTarget98, err := valueTarget96.StartMap(tt.NonOptional().Field(11).Type.Elem(), len(value97))
+				if err != nil {
+					return err
+				}
+				for key100, value102 := range value97 {
+					keyTarget99, err := mapTarget98.StartKey()
+					if err != nil {
+						return err
+					}
+					if err := keyTarget99.FromString(string(key100), tt.NonOptional().Field(11).Type.Elem().Key()); err != nil {
+						return err
+					}
+					valueTarget101, err := mapTarget98.FinishKeyStartField(keyTarget99)
+					if err != nil {
+						return err
+					}
+					if err := valueTarget101.FromString(string(value102), tt.NonOptional().Field(11).Type.Elem().Elem()); err != nil {
+						return err
+					}
+					if err := mapTarget98.FinishField(keyTarget99, valueTarget101); err != nil {
+						return err
+					}
+				}
+				if err := valueTarget96.FinishMap(mapTarget98); err != nil {
+					return err
+				}
+				if err := mapTarget93.FinishField(keyTarget94, valueTarget96); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget91.FinishMap(mapTarget93); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget90, fieldTarget91); err != nil {
+			return err
+		}
+	}
+	keyTarget103, fieldTarget104, err := fieldsTarget1.StartField("T")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var105 bool
+		if len(m.T) == 0 {
+			var105 = true
+		}
+		if var105 {
+			if err := fieldTarget104.FromZero(tt.NonOptional().Field(12).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget106, err := fieldTarget104.StartMap(tt.NonOptional().Field(12).Type, len(m.T))
+			if err != nil {
+				return err
+			}
+			for key108, value110 := range m.T {
+				keyTarget107, err := mapTarget106.StartKey()
+				if err != nil {
+					return err
+				}
+
+				var wireValue111 time_2.Time
+				if err := time_2.TimeFromNative(&wireValue111, key108); err != nil {
+					return err
+				}
+
+				if err := wireValue111.FillVDLTarget(keyTarget107, tt.NonOptional().Field(12).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget109, err := mapTarget106.FinishKeyStartField(keyTarget107)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget109.FromString(string(value110), tt.NonOptional().Field(12).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget106.FinishField(keyTarget107, valueTarget109); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget104.FinishMap(mapTarget106); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget103, fieldTarget104); err != nil {
 			return err
 		}
 	}
@@ -3326,6 +3994,10 @@
 
 	return nil
 }
+func (t *ManyMapsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ManyMaps{}
+	return nil
+}
 
 // map[bool]string
 type __VDLTarget8_map struct {
@@ -3369,6 +4041,10 @@
 
 	return nil
 }
+func (t *__VDLTarget8_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[bool]string(nil)
+	return nil
+}
 
 // map[byte]string
 type __VDLTarget9_map struct {
@@ -3412,6 +4088,10 @@
 
 	return nil
 }
+func (t *__VDLTarget9_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[byte]string(nil)
+	return nil
+}
 
 // map[uint16]string
 type __VDLTarget10_map struct {
@@ -3455,6 +4135,10 @@
 
 	return nil
 }
+func (t *__VDLTarget10_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint16]string(nil)
+	return nil
+}
 
 // map[uint32]string
 type __VDLTarget11_map struct {
@@ -3498,6 +4182,10 @@
 
 	return nil
 }
+func (t *__VDLTarget11_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint32]string(nil)
+	return nil
+}
 
 // map[uint64]string
 type __VDLTarget12_map struct {
@@ -3541,6 +4229,10 @@
 
 	return nil
 }
+func (t *__VDLTarget12_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint64]string(nil)
+	return nil
+}
 
 // map[int16]string
 type __VDLTarget13_map struct {
@@ -3584,6 +4276,10 @@
 
 	return nil
 }
+func (t *__VDLTarget13_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int16]string(nil)
+	return nil
+}
 
 // map[int32]string
 type __VDLTarget14_map struct {
@@ -3627,6 +4323,10 @@
 
 	return nil
 }
+func (t *__VDLTarget14_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int32]string(nil)
+	return nil
+}
 
 // map[int64]string
 type __VDLTarget15_map struct {
@@ -3670,6 +4370,10 @@
 
 	return nil
 }
+func (t *__VDLTarget15_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int64]string(nil)
+	return nil
+}
 
 // map[float32]string
 type __VDLTarget16_map struct {
@@ -3713,6 +4417,10 @@
 
 	return nil
 }
+func (t *__VDLTarget16_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[float32]string(nil)
+	return nil
+}
 
 // map[float64]string
 type __VDLTarget17_map struct {
@@ -3756,6 +4464,10 @@
 
 	return nil
 }
+func (t *__VDLTarget17_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[float64]string(nil)
+	return nil
+}
 
 // map[string]string
 type __VDLTarget18_map struct {
@@ -3799,6 +4511,10 @@
 
 	return nil
 }
+func (t *__VDLTarget18_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]string(nil)
+	return nil
+}
 
 // map[string]map[string]string
 type __VDLTarget19_map struct {
@@ -3842,6 +4558,10 @@
 
 	return nil
 }
+func (t *__VDLTarget19_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]map[string]string(nil)
+	return nil
+}
 
 // map[time.Time]string
 type __VDLTarget20_map struct {
@@ -3885,6 +4605,10 @@
 
 	return nil
 }
+func (t *__VDLTarget20_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[time.Time]string(nil)
+	return nil
+}
 
 type ManySets struct {
 	B   map[bool]struct{}
@@ -3911,358 +4635,489 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget4, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.B))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.B) == 0 {
+			var4 = true
 		}
-		for key6 := range m.B {
-			keyTarget5, err := setTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget5, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.B))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget5.FromBool(bool(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
+			for key7 := range m.B {
+				keyTarget6, err := setTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromBool(bool(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget5.FinishKey(keyTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishSet(setTarget5); err != nil {
 				return err
 			}
-			if err := setTarget4.FinishKey(keyTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishSet(setTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("By")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("By")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget9, err := fieldTarget8.StartSet(tt.NonOptional().Field(1).Type, len(m.By))
-		if err != nil {
-			return err
+		var var10 bool
+		if len(m.By) == 0 {
+			var10 = true
 		}
-		for key11 := range m.By {
-			keyTarget10, err := setTarget9.StartKey()
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget11, err := fieldTarget9.StartSet(tt.NonOptional().Field(1).Type, len(m.By))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget10.FromUint(uint64(key11), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
+			for key13 := range m.By {
+				keyTarget12, err := setTarget11.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget12.FromUint(uint64(key13), tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget11.FinishKey(keyTarget12); err != nil {
+					return err
+				}
 			}
-			if err := setTarget9.FinishKey(keyTarget10); err != nil {
+			if err := fieldTarget9.FinishSet(setTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget8.FinishSet(setTarget9); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("U16")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("U16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget14, err := fieldTarget13.StartSet(tt.NonOptional().Field(2).Type, len(m.U16))
-		if err != nil {
-			return err
+		var var16 bool
+		if len(m.U16) == 0 {
+			var16 = true
 		}
-		for key16 := range m.U16 {
-			keyTarget15, err := setTarget14.StartKey()
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget17, err := fieldTarget15.StartSet(tt.NonOptional().Field(2).Type, len(m.U16))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget15.FromUint(uint64(key16), tt.NonOptional().Field(2).Type.Key()); err != nil {
-				return err
+			for key19 := range m.U16 {
+				keyTarget18, err := setTarget17.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget18.FromUint(uint64(key19), tt.NonOptional().Field(2).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget17.FinishKey(keyTarget18); err != nil {
+					return err
+				}
 			}
-			if err := setTarget14.FinishKey(keyTarget15); err != nil {
+			if err := fieldTarget15.FinishSet(setTarget17); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget13.FinishSet(setTarget14); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("U32")
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("U32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget19, err := fieldTarget18.StartSet(tt.NonOptional().Field(3).Type, len(m.U32))
-		if err != nil {
-			return err
+		var var22 bool
+		if len(m.U32) == 0 {
+			var22 = true
 		}
-		for key21 := range m.U32 {
-			keyTarget20, err := setTarget19.StartKey()
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget23, err := fieldTarget21.StartSet(tt.NonOptional().Field(3).Type, len(m.U32))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget20.FromUint(uint64(key21), tt.NonOptional().Field(3).Type.Key()); err != nil {
-				return err
+			for key25 := range m.U32 {
+				keyTarget24, err := setTarget23.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget24.FromUint(uint64(key25), tt.NonOptional().Field(3).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget23.FinishKey(keyTarget24); err != nil {
+					return err
+				}
 			}
-			if err := setTarget19.FinishKey(keyTarget20); err != nil {
+			if err := fieldTarget21.FinishSet(setTarget23); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget18.FinishSet(setTarget19); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
 	}
-	keyTarget22, fieldTarget23, err := fieldsTarget1.StartField("U64")
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("U64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget24, err := fieldTarget23.StartSet(tt.NonOptional().Field(4).Type, len(m.U64))
-		if err != nil {
-			return err
+		var var28 bool
+		if len(m.U64) == 0 {
+			var28 = true
 		}
-		for key26 := range m.U64 {
-			keyTarget25, err := setTarget24.StartKey()
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget29, err := fieldTarget27.StartSet(tt.NonOptional().Field(4).Type, len(m.U64))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget25.FromUint(uint64(key26), tt.NonOptional().Field(4).Type.Key()); err != nil {
-				return err
+			for key31 := range m.U64 {
+				keyTarget30, err := setTarget29.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget30.FromUint(uint64(key31), tt.NonOptional().Field(4).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget29.FinishKey(keyTarget30); err != nil {
+					return err
+				}
 			}
-			if err := setTarget24.FinishKey(keyTarget25); err != nil {
+			if err := fieldTarget27.FinishSet(setTarget29); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget23.FinishSet(setTarget24); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget22, fieldTarget23); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
-	keyTarget27, fieldTarget28, err := fieldsTarget1.StartField("I16")
+	keyTarget32, fieldTarget33, err := fieldsTarget1.StartField("I16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget29, err := fieldTarget28.StartSet(tt.NonOptional().Field(5).Type, len(m.I16))
-		if err != nil {
-			return err
+		var var34 bool
+		if len(m.I16) == 0 {
+			var34 = true
 		}
-		for key31 := range m.I16 {
-			keyTarget30, err := setTarget29.StartKey()
-			if err != nil {
+		if var34 {
+			if err := fieldTarget33.FromZero(tt.NonOptional().Field(5).Type); err != nil {
 				return err
 			}
-			if err := keyTarget30.FromInt(int64(key31), tt.NonOptional().Field(5).Type.Key()); err != nil {
-				return err
-			}
-			if err := setTarget29.FinishKey(keyTarget30); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget28.FinishSet(setTarget29); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget27, fieldTarget28); err != nil {
-			return err
-		}
-	}
-	keyTarget32, fieldTarget33, err := fieldsTarget1.StartField("I32")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		} else {
 
-		setTarget34, err := fieldTarget33.StartSet(tt.NonOptional().Field(6).Type, len(m.I32))
-		if err != nil {
-			return err
-		}
-		for key36 := range m.I32 {
-			keyTarget35, err := setTarget34.StartKey()
+			setTarget35, err := fieldTarget33.StartSet(tt.NonOptional().Field(5).Type, len(m.I16))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget35.FromInt(int64(key36), tt.NonOptional().Field(6).Type.Key()); err != nil {
+			for key37 := range m.I16 {
+				keyTarget36, err := setTarget35.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget36.FromInt(int64(key37), tt.NonOptional().Field(5).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget35.FinishKey(keyTarget36); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget33.FinishSet(setTarget35); err != nil {
 				return err
 			}
-			if err := setTarget34.FinishKey(keyTarget35); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget33.FinishSet(setTarget34); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget32, fieldTarget33); err != nil {
 			return err
 		}
 	}
-	keyTarget37, fieldTarget38, err := fieldsTarget1.StartField("I64")
+	keyTarget38, fieldTarget39, err := fieldsTarget1.StartField("I32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget39, err := fieldTarget38.StartSet(tt.NonOptional().Field(7).Type, len(m.I64))
-		if err != nil {
-			return err
+		var var40 bool
+		if len(m.I32) == 0 {
+			var40 = true
 		}
-		for key41 := range m.I64 {
-			keyTarget40, err := setTarget39.StartKey()
+		if var40 {
+			if err := fieldTarget39.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget41, err := fieldTarget39.StartSet(tt.NonOptional().Field(6).Type, len(m.I32))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget40.FromInt(int64(key41), tt.NonOptional().Field(7).Type.Key()); err != nil {
-				return err
+			for key43 := range m.I32 {
+				keyTarget42, err := setTarget41.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget42.FromInt(int64(key43), tt.NonOptional().Field(6).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget41.FinishKey(keyTarget42); err != nil {
+					return err
+				}
 			}
-			if err := setTarget39.FinishKey(keyTarget40); err != nil {
+			if err := fieldTarget39.FinishSet(setTarget41); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget38.FinishSet(setTarget39); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget37, fieldTarget38); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget38, fieldTarget39); err != nil {
 			return err
 		}
 	}
-	keyTarget42, fieldTarget43, err := fieldsTarget1.StartField("F32")
+	keyTarget44, fieldTarget45, err := fieldsTarget1.StartField("I64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget44, err := fieldTarget43.StartSet(tt.NonOptional().Field(8).Type, len(m.F32))
-		if err != nil {
-			return err
+		var var46 bool
+		if len(m.I64) == 0 {
+			var46 = true
 		}
-		for key46 := range m.F32 {
-			keyTarget45, err := setTarget44.StartKey()
+		if var46 {
+			if err := fieldTarget45.FromZero(tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget47, err := fieldTarget45.StartSet(tt.NonOptional().Field(7).Type, len(m.I64))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget45.FromFloat(float64(key46), tt.NonOptional().Field(8).Type.Key()); err != nil {
-				return err
+			for key49 := range m.I64 {
+				keyTarget48, err := setTarget47.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget48.FromInt(int64(key49), tt.NonOptional().Field(7).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget47.FinishKey(keyTarget48); err != nil {
+					return err
+				}
 			}
-			if err := setTarget44.FinishKey(keyTarget45); err != nil {
+			if err := fieldTarget45.FinishSet(setTarget47); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget43.FinishSet(setTarget44); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget42, fieldTarget43); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget44, fieldTarget45); err != nil {
 			return err
 		}
 	}
-	keyTarget47, fieldTarget48, err := fieldsTarget1.StartField("F64")
+	keyTarget50, fieldTarget51, err := fieldsTarget1.StartField("F32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget49, err := fieldTarget48.StartSet(tt.NonOptional().Field(9).Type, len(m.F64))
-		if err != nil {
-			return err
+		var var52 bool
+		if len(m.F32) == 0 {
+			var52 = true
 		}
-		for key51 := range m.F64 {
-			keyTarget50, err := setTarget49.StartKey()
+		if var52 {
+			if err := fieldTarget51.FromZero(tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget53, err := fieldTarget51.StartSet(tt.NonOptional().Field(8).Type, len(m.F32))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget50.FromFloat(float64(key51), tt.NonOptional().Field(9).Type.Key()); err != nil {
-				return err
+			for key55 := range m.F32 {
+				keyTarget54, err := setTarget53.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget54.FromFloat(float64(key55), tt.NonOptional().Field(8).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget53.FinishKey(keyTarget54); err != nil {
+					return err
+				}
 			}
-			if err := setTarget49.FinishKey(keyTarget50); err != nil {
+			if err := fieldTarget51.FinishSet(setTarget53); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget48.FinishSet(setTarget49); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget47, fieldTarget48); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget50, fieldTarget51); err != nil {
 			return err
 		}
 	}
-	keyTarget52, fieldTarget53, err := fieldsTarget1.StartField("S")
+	keyTarget56, fieldTarget57, err := fieldsTarget1.StartField("F64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget54, err := fieldTarget53.StartSet(tt.NonOptional().Field(10).Type, len(m.S))
-		if err != nil {
-			return err
+		var var58 bool
+		if len(m.F64) == 0 {
+			var58 = true
 		}
-		for key56 := range m.S {
-			keyTarget55, err := setTarget54.StartKey()
+		if var58 {
+			if err := fieldTarget57.FromZero(tt.NonOptional().Field(9).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget59, err := fieldTarget57.StartSet(tt.NonOptional().Field(9).Type, len(m.F64))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget55.FromString(string(key56), tt.NonOptional().Field(10).Type.Key()); err != nil {
-				return err
+			for key61 := range m.F64 {
+				keyTarget60, err := setTarget59.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget60.FromFloat(float64(key61), tt.NonOptional().Field(9).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget59.FinishKey(keyTarget60); err != nil {
+					return err
+				}
 			}
-			if err := setTarget54.FinishKey(keyTarget55); err != nil {
+			if err := fieldTarget57.FinishSet(setTarget59); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget53.FinishSet(setTarget54); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget52, fieldTarget53); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget56, fieldTarget57); err != nil {
 			return err
 		}
 	}
-	keyTarget57, fieldTarget58, err := fieldsTarget1.StartField("T")
+	keyTarget62, fieldTarget63, err := fieldsTarget1.StartField("S")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget59, err := fieldTarget58.StartSet(tt.NonOptional().Field(11).Type, len(m.T))
-		if err != nil {
-			return err
+		var var64 bool
+		if len(m.S) == 0 {
+			var64 = true
 		}
-		for key61 := range m.T {
-			keyTarget60, err := setTarget59.StartKey()
+		if var64 {
+			if err := fieldTarget63.FromZero(tt.NonOptional().Field(10).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget65, err := fieldTarget63.StartSet(tt.NonOptional().Field(10).Type, len(m.S))
 			if err != nil {
 				return err
 			}
-
-			var wireValue62 time_2.Time
-			if err := time_2.TimeFromNative(&wireValue62, key61); err != nil {
-				return err
+			for key67 := range m.S {
+				keyTarget66, err := setTarget65.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget66.FromString(string(key67), tt.NonOptional().Field(10).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget65.FinishKey(keyTarget66); 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 {
+			if err := fieldTarget63.FinishSet(setTarget65); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget58.FinishSet(setTarget59); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget62, fieldTarget63); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget57, fieldTarget58); err != nil {
+	}
+	keyTarget68, fieldTarget69, err := fieldsTarget1.StartField("T")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var70 bool
+		if len(m.T) == 0 {
+			var70 = true
+		}
+		if var70 {
+			if err := fieldTarget69.FromZero(tt.NonOptional().Field(11).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget71, err := fieldTarget69.StartSet(tt.NonOptional().Field(11).Type, len(m.T))
+			if err != nil {
+				return err
+			}
+			for key73 := range m.T {
+				keyTarget72, err := setTarget71.StartKey()
+				if err != nil {
+					return err
+				}
+
+				var wireValue74 time_2.Time
+				if err := time_2.TimeFromNative(&wireValue74, key73); err != nil {
+					return err
+				}
+
+				if err := wireValue74.FillVDLTarget(keyTarget72, tt.NonOptional().Field(11).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget71.FinishKey(keyTarget72); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget69.FinishSet(setTarget71); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget68, fieldTarget69); err != nil {
 			return err
 		}
 	}
@@ -4362,6 +5217,10 @@
 
 	return nil
 }
+func (t *ManySetsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ManySets{}
+	return nil
+}
 
 // map[bool]struct{}
 type __VDLTarget21_set struct {
@@ -4397,6 +5256,10 @@
 
 	return nil
 }
+func (t *__VDLTarget21_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[bool]struct{}(nil)
+	return nil
+}
 
 // map[byte]struct{}
 type __VDLTarget22_set struct {
@@ -4432,6 +5295,10 @@
 
 	return nil
 }
+func (t *__VDLTarget22_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[byte]struct{}(nil)
+	return nil
+}
 
 // map[uint16]struct{}
 type __VDLTarget23_set struct {
@@ -4467,6 +5334,10 @@
 
 	return nil
 }
+func (t *__VDLTarget23_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint16]struct{}(nil)
+	return nil
+}
 
 // map[uint32]struct{}
 type __VDLTarget24_set struct {
@@ -4502,6 +5373,10 @@
 
 	return nil
 }
+func (t *__VDLTarget24_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint32]struct{}(nil)
+	return nil
+}
 
 // map[uint64]struct{}
 type __VDLTarget25_set struct {
@@ -4537,6 +5412,10 @@
 
 	return nil
 }
+func (t *__VDLTarget25_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint64]struct{}(nil)
+	return nil
+}
 
 // map[int16]struct{}
 type __VDLTarget26_set struct {
@@ -4572,6 +5451,10 @@
 
 	return nil
 }
+func (t *__VDLTarget26_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int16]struct{}(nil)
+	return nil
+}
 
 // map[int32]struct{}
 type __VDLTarget27_set struct {
@@ -4607,6 +5490,10 @@
 
 	return nil
 }
+func (t *__VDLTarget27_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int32]struct{}(nil)
+	return nil
+}
 
 // map[int64]struct{}
 type __VDLTarget28_set struct {
@@ -4642,6 +5529,10 @@
 
 	return nil
 }
+func (t *__VDLTarget28_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int64]struct{}(nil)
+	return nil
+}
 
 // map[float32]struct{}
 type __VDLTarget29_set struct {
@@ -4677,6 +5568,10 @@
 
 	return nil
 }
+func (t *__VDLTarget29_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[float32]struct{}(nil)
+	return nil
+}
 
 // map[float64]struct{}
 type __VDLTarget30_set struct {
@@ -4712,6 +5607,10 @@
 
 	return nil
 }
+func (t *__VDLTarget30_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[float64]struct{}(nil)
+	return nil
+}
 
 // map[time.Time]struct{}
 type __VDLTarget31_set struct {
@@ -4747,6 +5646,10 @@
 
 	return nil
 }
+func (t *__VDLTarget31_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[time.Time]struct{}(nil)
+	return nil
+}
 
 type BigData struct {
 	Key string // A dup of the key stored in the value.
@@ -4762,14 +5665,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -4816,55 +5726,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroAddressInfo            = AddressInfo{}
-	__VDLZeroCreditAgency           = CreditAgencyEquifax
-	__VDLZeroExperianRating         = ExperianRatingGood
-	__VDLZeroRatingsArray           = RatingsArray{}
-	__VDLZeroEquifaxCreditReport    = EquifaxCreditReport{}
-	__VDLZeroTdh                    = TdhTom
-	__VDLZeroExperianCreditReport   = ExperianCreditReport{}
-	__VDLZeroTransUnionCreditReport = TransUnionCreditReport{}
-	__VDLZeroAgencyReport           = AgencyReport(AgencyReportEquifaxReport{})
-	__VDLZeroCreditReport           = CreditReport{
-		Report: AgencyReportEquifaxReport{},
-	}
-	__VDLZeroCustomer = Customer{
-		Credit: CreditReport{
-			Report: AgencyReportEquifaxReport{},
-		},
-	}
-	__VDLZeroInvoice          = Invoice{}
-	__VDLZeroNumbers          = Numbers{}
-	__VDLZeroTitleOrValueType = TitleOrValueType(TitleOrValueTypeTitle{})
-	__VDLZeroBazType          = BazType{
-		TitleOrValue: TitleOrValueTypeTitle{},
-	}
-	__VDLZeroBarType = BarType{
-		Baz: BazType{
-			TitleOrValue: TitleOrValueTypeTitle{},
-		},
-	}
-	__VDLZeroFooType = FooType{
-		Bar: BarType{
-			Baz: BazType{
-				TitleOrValue: TitleOrValueTypeTitle{},
-			},
-		},
-	}
-	__VDLZeroK            = K{}
-	__VDLZeroV            = V{}
-	__VDLZeroFunWithMaps  = FunWithMaps{}
-	__VDLZeroFunWithTypes = FunWithTypes{
-		T1: vdl.AnyType,
-		T2: vdl.AnyType,
-	}
-	__VDLZeroManyMaps = ManyMaps{}
-	__VDLZeroManySets = ManySets{}
-	__VDLZeroBigData  = BigData{}
-)
+func (t *BigDataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BigData{}
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -4885,6 +5750,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*AddressInfo)(nil))
diff --git a/query/syncql/.api b/query/syncql/.api
index 6a25eb9..9a0794d 100644
--- a/query/syncql/.api
+++ b/query/syncql/.api
@@ -60,59 +60,59 @@
 pkg syncql, type ResultStream interface, Cancel()
 pkg syncql, type ResultStream interface, Err() error
 pkg syncql, type ResultStream interface, Result() []*vom.RawBytes
-pkg syncql, var ErrArgMustBeField verror.IDAction
-pkg syncql, var ErrBadFieldInWhere verror.IDAction
-pkg syncql, var ErrBigIntConversionError verror.IDAction
-pkg syncql, var ErrBigRatConversionError verror.IDAction
-pkg syncql, var ErrBoolConversionError verror.IDAction
-pkg syncql, var ErrBoolInvalidExpression verror.IDAction
-pkg syncql, var ErrCheckOfUnknownStatementType verror.IDAction
-pkg syncql, var ErrComplexConversionError verror.IDAction
-pkg syncql, var ErrCouldNotConvert verror.IDAction
-pkg syncql, var ErrDidYouMeanFunction verror.IDAction
-pkg syncql, var ErrDidYouMeanLowercaseK verror.IDAction
-pkg syncql, var ErrDidYouMeanLowercaseV verror.IDAction
-pkg syncql, var ErrDotNotationDisallowedForKey verror.IDAction
-pkg syncql, var ErrErrorCompilingRegularExpression verror.IDAction
-pkg syncql, var ErrExecOfUnknownStatementType verror.IDAction
-pkg syncql, var ErrExpected verror.IDAction
-pkg syncql, var ErrExpectedFrom verror.IDAction
-pkg syncql, var ErrExpectedIdentifier verror.IDAction
-pkg syncql, var ErrExpectedOperand verror.IDAction
-pkg syncql, var ErrExpectedOperator verror.IDAction
-pkg syncql, var ErrFloatConversionError verror.IDAction
-pkg syncql, var ErrFunctionArgBad verror.IDAction
-pkg syncql, var ErrFunctionArgCount verror.IDAction
-pkg syncql, var ErrFunctionAtLeastArgCount verror.IDAction
-pkg syncql, var ErrFunctionLenInvalidArg verror.IDAction
-pkg syncql, var ErrFunctionNotFound verror.IDAction
-pkg syncql, var ErrFunctionTypeInvalidArg verror.IDAction
-pkg syncql, var ErrIndexKindNotSupported verror.IDAction
-pkg syncql, var ErrIntConversionError verror.IDAction
-pkg syncql, var ErrInvalidEscapeChar verror.IDAction
-pkg syncql, var ErrInvalidEscapeSequence verror.IDAction
-pkg syncql, var ErrInvalidIndexField verror.IDAction
-pkg syncql, var ErrInvalidSelectField verror.IDAction
-pkg syncql, var ErrIsIsNotRequireLhsValue verror.IDAction
-pkg syncql, var ErrIsIsNotRequireRhsNil verror.IDAction
-pkg syncql, var ErrKeyExpressionLiteral verror.IDAction
-pkg syncql, var ErrKeyValueStreamError verror.IDAction
-pkg syncql, var ErrLikeExpressionsRequireRhsString verror.IDAction
-pkg syncql, var ErrLimitMustBeGt0 verror.IDAction
-pkg syncql, var ErrLocationConversionError verror.IDAction
-pkg syncql, var ErrMaxStatementLenExceeded verror.IDAction
-pkg syncql, var ErrNoStatementFound verror.IDAction
-pkg syncql, var ErrNotEnoughParamValuesSpecified verror.IDAction
-pkg syncql, var ErrNotWritable verror.IDAction
-pkg syncql, var ErrOffsetMustBeGe0 verror.IDAction
-pkg syncql, var ErrOperationNotSupported verror.IDAction
-pkg syncql, var ErrPreparedStatementNotFound verror.IDAction
-pkg syncql, var ErrScanError verror.IDAction
-pkg syncql, var ErrStringConversionError verror.IDAction
-pkg syncql, var ErrTableCantAccess verror.IDAction
-pkg syncql, var ErrTimeConversionError verror.IDAction
-pkg syncql, var ErrTooManyParamValuesSpecified verror.IDAction
-pkg syncql, var ErrUintConversionError verror.IDAction
-pkg syncql, var ErrUnexpected verror.IDAction
-pkg syncql, var ErrUnexpectedEndOfStatement verror.IDAction
-pkg syncql, var ErrUnknownIdentifier verror.IDAction
+pkg syncql, var ErrArgMustBeField unknown-type
+pkg syncql, var ErrBadFieldInWhere unknown-type
+pkg syncql, var ErrBigIntConversionError unknown-type
+pkg syncql, var ErrBigRatConversionError unknown-type
+pkg syncql, var ErrBoolConversionError unknown-type
+pkg syncql, var ErrBoolInvalidExpression unknown-type
+pkg syncql, var ErrCheckOfUnknownStatementType unknown-type
+pkg syncql, var ErrComplexConversionError unknown-type
+pkg syncql, var ErrCouldNotConvert unknown-type
+pkg syncql, var ErrDidYouMeanFunction unknown-type
+pkg syncql, var ErrDidYouMeanLowercaseK unknown-type
+pkg syncql, var ErrDidYouMeanLowercaseV unknown-type
+pkg syncql, var ErrDotNotationDisallowedForKey unknown-type
+pkg syncql, var ErrErrorCompilingRegularExpression unknown-type
+pkg syncql, var ErrExecOfUnknownStatementType unknown-type
+pkg syncql, var ErrExpected unknown-type
+pkg syncql, var ErrExpectedFrom unknown-type
+pkg syncql, var ErrExpectedIdentifier unknown-type
+pkg syncql, var ErrExpectedOperand unknown-type
+pkg syncql, var ErrExpectedOperator unknown-type
+pkg syncql, var ErrFloatConversionError unknown-type
+pkg syncql, var ErrFunctionArgBad unknown-type
+pkg syncql, var ErrFunctionArgCount unknown-type
+pkg syncql, var ErrFunctionAtLeastArgCount unknown-type
+pkg syncql, var ErrFunctionLenInvalidArg unknown-type
+pkg syncql, var ErrFunctionNotFound unknown-type
+pkg syncql, var ErrFunctionTypeInvalidArg unknown-type
+pkg syncql, var ErrIndexKindNotSupported unknown-type
+pkg syncql, var ErrIntConversionError unknown-type
+pkg syncql, var ErrInvalidEscapeChar unknown-type
+pkg syncql, var ErrInvalidEscapeSequence unknown-type
+pkg syncql, var ErrInvalidIndexField unknown-type
+pkg syncql, var ErrInvalidSelectField unknown-type
+pkg syncql, var ErrIsIsNotRequireLhsValue unknown-type
+pkg syncql, var ErrIsIsNotRequireRhsNil unknown-type
+pkg syncql, var ErrKeyExpressionLiteral unknown-type
+pkg syncql, var ErrKeyValueStreamError unknown-type
+pkg syncql, var ErrLikeExpressionsRequireRhsString unknown-type
+pkg syncql, var ErrLimitMustBeGt0 unknown-type
+pkg syncql, var ErrLocationConversionError unknown-type
+pkg syncql, var ErrMaxStatementLenExceeded unknown-type
+pkg syncql, var ErrNoStatementFound unknown-type
+pkg syncql, var ErrNotEnoughParamValuesSpecified unknown-type
+pkg syncql, var ErrNotWritable unknown-type
+pkg syncql, var ErrOffsetMustBeGe0 unknown-type
+pkg syncql, var ErrOperationNotSupported unknown-type
+pkg syncql, var ErrPreparedStatementNotFound unknown-type
+pkg syncql, var ErrScanError unknown-type
+pkg syncql, var ErrStringConversionError unknown-type
+pkg syncql, var ErrTableCantAccess unknown-type
+pkg syncql, var ErrTimeConversionError unknown-type
+pkg syncql, var ErrTooManyParamValuesSpecified unknown-type
+pkg syncql, var ErrUintConversionError unknown-type
+pkg syncql, var ErrUnexpected unknown-type
+pkg syncql, var ErrUnexpectedEndOfStatement unknown-type
+pkg syncql, var ErrUnknownIdentifier unknown-type
diff --git a/query/syncql/syncql.vdl.go b/query/syncql/syncql.vdl.go
index 9608197..1091109 100644
--- a/query/syncql/syncql.vdl.go
+++ b/query/syncql/syncql.vdl.go
@@ -375,6 +375,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrBadFieldInWhere.ID), "{1:}{2:} [{3}]Where field must be 'k' or 'v[{.<ident>}...]'.")
diff --git a/rpc/.api b/rpc/.api
index f8da1bb..989b974 100644
--- a/rpc/.api
+++ b/rpc/.api
@@ -19,12 +19,14 @@
 pkg rpc, method (*Request) MakeVDLTarget() vdl.Target
 pkg rpc, method (*RequestTarget) FinishField(vdl.Target, vdl.Target) error
 pkg rpc, method (*RequestTarget) FinishFields(vdl.FieldsTarget) error
+pkg rpc, method (*RequestTarget) FromZero(*vdl.Type) error
 pkg rpc, method (*RequestTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg rpc, method (*RequestTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg rpc, method (*Response) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg rpc, method (*Response) MakeVDLTarget() vdl.Target
 pkg rpc, method (*ResponseTarget) FinishField(vdl.Target, vdl.Target) error
 pkg rpc, method (*ResponseTarget) FinishFields(vdl.FieldsTarget) error
+pkg rpc, method (*ResponseTarget) FromZero(*vdl.Type) error
 pkg rpc, method (*ResponseTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg rpc, method (*ResponseTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg rpc, method (AddressChooserFunc) ChooseAddresses(string, []net.Addr) ([]net.Addr, error)
diff --git a/rpc/reserved/.api b/rpc/reserved/.api
index d861fde..a38fe9c 100644
--- a/rpc/reserved/.api
+++ b/rpc/reserved/.api
@@ -3,6 +3,6 @@
 pkg reserved, func NewErrGlobMaxRecursionReached(*context.T) error
 pkg reserved, func NewErrGlobNotImplemented(*context.T) error
 pkg reserved, func Signature(*context.T, string, ...rpc.CallOpt) ([]signature.Interface, error)
-pkg reserved, var ErrGlobMatchesOmitted verror.IDAction
-pkg reserved, var ErrGlobMaxRecursionReached verror.IDAction
-pkg reserved, var ErrGlobNotImplemented verror.IDAction
+pkg reserved, var ErrGlobMatchesOmitted unknown-type
+pkg reserved, var ErrGlobMaxRecursionReached unknown-type
+pkg reserved, var ErrGlobNotImplemented unknown-type
diff --git a/rpc/reserved/reserved.vdl.go b/rpc/reserved/reserved.vdl.go
index 5fb574e..6a59bc1 100644
--- a/rpc/reserved/reserved.vdl.go
+++ b/rpc/reserved/reserved.vdl.go
@@ -64,6 +64,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrGlobMaxRecursionReached.ID), "{1:}{2:} max recursion level reached{:_}")
diff --git a/rpc/rpc.vdl.go b/rpc/rpc.vdl.go
index 2347a4e..d5f8282 100644
--- a/rpc/rpc.vdl.go
+++ b/rpc/rpc.vdl.go
@@ -10,6 +10,7 @@
 import (
 	"fmt"
 	"v.io/v23/security"
+	"v.io/v23/uniqueid"
 	"v.io/v23/vdl"
 	"v.io/v23/vdlroot/time"
 	"v.io/v23/verror"
@@ -69,113 +70,181 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Suffix")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Suffix), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Suffix == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Suffix), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Method")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Method")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Method), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Method == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Method), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("NumPosArgs")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("NumPosArgs")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromUint(uint64(m.NumPosArgs), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("EndStreamArgs")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromBool(bool(m.EndStreamArgs), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.NumPosArgs == uint64(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromUint(uint64(m.NumPosArgs), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	var wireValue10 time.WireDeadline
-	if err := time.WireDeadlineFromNative(&wireValue10, m.Deadline); err != nil {
-		return err
-	}
-
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Deadline")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("EndStreamArgs")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue10.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(4).Type); err != nil {
-			return err
+		var13 := (m.EndStreamArgs == false)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromBool(bool(m.EndStreamArgs), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	var wireValue13 security.WireBlessings
-	if err := security.WireBlessingsFromNative(&wireValue13, m.GrantedBlessings); err != nil {
+	var wireValue14 time.WireDeadline
+	if err := time.WireDeadlineFromNative(&wireValue14, m.Deadline); err != nil {
 		return err
 	}
 
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("GrantedBlessings")
+	keyTarget15, fieldTarget16, err := fieldsTarget1.StartField("Deadline")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue13.FillVDLTarget(fieldTarget15, tt.NonOptional().Field(5).Type); err != nil {
-			return err
+		var17 := (wireValue14 == time.WireDeadline{})
+		if var17 {
+			if err := fieldTarget16.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue14.FillVDLTarget(fieldTarget16, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget15, fieldTarget16); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("TraceRequest")
+	var wireValue18 security.WireBlessings
+	if err := security.WireBlessingsFromNative(&wireValue18, m.GrantedBlessings); err != nil {
+		return err
+	}
+
+	keyTarget19, fieldTarget20, err := fieldsTarget1.StartField("GrantedBlessings")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.TraceRequest.FillVDLTarget(fieldTarget17, tt.NonOptional().Field(6).Type); err != nil {
-			return err
+		var21 := true
+		var var22 bool
+		if len(wireValue18.CertificateChains) == 0 {
+			var22 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		var21 = var21 && var22
+		if var21 {
+			if err := fieldTarget20.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue18.FillVDLTarget(fieldTarget20, tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget19, fieldTarget20); err != nil {
 			return err
 		}
 	}
-	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("Language")
+	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("TraceRequest")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget19.FromString(string(m.Language), tt.NonOptional().Field(7).Type); err != nil {
+
+		var25 := (m.TraceRequest == vtrace.Request{})
+		if var25 {
+			if err := fieldTarget24.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.TraceRequest.FillVDLTarget(fieldTarget24, tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
+	}
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("Language")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var28 := (m.Language == "")
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget27.FromString(string(m.Language), tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
@@ -255,6 +324,10 @@
 
 	return nil
 }
+func (t *RequestTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Request{}
+	return nil
+}
 
 // Response describes the response header sent by the server to the client.  A
 // zero response header is sent before each streaming arg.  Thereafter a
@@ -288,23 +361,24 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Error")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Error == nil {
-			if err := fieldTarget3.FromNil(tt.NonOptional().Field(0).Type); err != nil {
+		var4 := (m.Error == (error)(nil))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
 		} else {
-			var wireError4 vdl.WireError
-			if err := verror.WireFromNative(&wireError4, m.Error); err != nil {
+
+			var wireError5 vdl.WireError
+			if err := verror.WireFromNative(&wireError5, m.Error); err != nil {
 				return err
 			}
-			if err := wireError4.FillVDLTarget(fieldTarget3, vdl.ErrorType); err != nil {
+			if err := wireError5.FillVDLTarget(fieldTarget3, vdl.ErrorType); err != nil {
 				return err
 			}
 
@@ -313,52 +387,95 @@
 			return err
 		}
 	}
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("EndStreamResults")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget6.FromBool(bool(m.EndStreamResults), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
-			return err
-		}
-	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("NumPosResults")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget8.FromUint(uint64(m.NumPosResults), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
-			return err
-		}
-	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("TraceResponse")
+	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("EndStreamResults")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.TraceResponse.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(3).Type); err != nil {
+		var8 := (m.EndStreamResults == false)
+		if var8 {
+			if err := fieldTarget7.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget7.FromBool(bool(m.EndStreamResults), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
 			return err
 		}
+	}
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("NumPosResults")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var11 := (m.NumPosResults == uint64(0))
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget10.FromUint(uint64(m.NumPosResults), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("AckBlessings")
+	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("TraceResponse")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget12.FromBool(bool(m.AckBlessings), tt.NonOptional().Field(4).Type); err != nil {
+
+		var14 := true
+		var15 := (m.TraceResponse.Flags == vtrace.TraceFlags(0))
+		var14 = var14 && var15
+		var16 := true
+		var17 := (m.TraceResponse.Trace.Id == uniqueid.Id{})
+		var16 = var16 && var17
+		var var18 bool
+		if len(m.TraceResponse.Trace.Spans) == 0 {
+			var18 = true
+		}
+		var16 = var16 && var18
+		var14 = var14 && var16
+		if var14 {
+			if err := fieldTarget13.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.TraceResponse.FillVDLTarget(fieldTarget13, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+	}
+	keyTarget19, fieldTarget20, err := fieldsTarget1.StartField("AckBlessings")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var21 := (m.AckBlessings == false)
+		if var21 {
+			if err := fieldTarget20.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget20.FromBool(bool(m.AckBlessings), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget19, fieldTarget20); err != nil {
 			return err
 		}
 	}
@@ -423,12 +540,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroRequest  = Request{}
-	__VDLZeroResponse = Response{}
-)
+func (t *ResponseTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Response{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -457,6 +572,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Request)(nil))
diff --git a/rpc/version/.api b/rpc/version/.api
index 836c50c..db2c98a 100644
--- a/rpc/version/.api
+++ b/rpc/version/.api
@@ -11,4 +11,4 @@
 pkg version, type RPCVersionRange struct
 pkg version, type RPCVersionRange struct, Max RPCVersion
 pkg version, type RPCVersionRange struct, Min RPCVersion
-pkg version, var ErrNoCompatibleVersion verror.IDAction
+pkg version, var ErrNoCompatibleVersion unknown-type
diff --git a/rpc/version/version.vdl.go b/rpc/version/version.vdl.go
index 190a039..dbaa677 100644
--- a/rpc/version/version.vdl.go
+++ b/rpc/version/version.vdl.go
@@ -45,6 +45,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrNoCompatibleVersion.ID), "{1:}{2:} There were no compatible versions between ({3},{4}) and ({5},{6}).")
diff --git a/security/.api b/security/.api
index c45a321..562bc1f 100644
--- a/security/.api
+++ b/security/.api
@@ -58,6 +58,7 @@
 pkg security, method (*BlessingPattern) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*BlessingPattern) MakeVDLTarget() vdl.Target
 pkg security, method (*BlessingPatternTarget) FromString(string, *vdl.Type) error
+pkg security, method (*BlessingPatternTarget) FromZero(*vdl.Type) error
 pkg security, method (*CallParams) Copy(Call)
 pkg security, method (*Caveat) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*Caveat) MakeVDLTarget() vdl.Target
@@ -67,31 +68,37 @@
 pkg security, method (*CaveatDescriptor) MakeVDLTarget() vdl.Target
 pkg security, method (*CaveatDescriptorTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*CaveatDescriptorTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*CaveatDescriptorTarget) FromZero(*vdl.Type) error
 pkg security, method (*CaveatDescriptorTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*CaveatDescriptorTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*CaveatTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*CaveatTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*CaveatTarget) FromZero(*vdl.Type) error
 pkg security, method (*CaveatTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*CaveatTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*Certificate) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*Certificate) MakeVDLTarget() vdl.Target
 pkg security, method (*CertificateTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*CertificateTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*CertificateTarget) FromZero(*vdl.Type) error
 pkg security, method (*CertificateTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*CertificateTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*DischargeImpetus) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*DischargeImpetus) MakeVDLTarget() vdl.Target
 pkg security, method (*DischargeImpetusTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*DischargeImpetusTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*DischargeImpetusTarget) FromZero(*vdl.Type) error
 pkg security, method (*DischargeImpetusTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*DischargeImpetusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*Hash) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*Hash) MakeVDLTarget() vdl.Target
 pkg security, method (*HashTarget) FromString(string, *vdl.Type) error
+pkg security, method (*HashTarget) FromZero(*vdl.Type) error
 pkg security, method (*RejectedBlessing) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*RejectedBlessing) MakeVDLTarget() vdl.Target
 pkg security, method (*RejectedBlessingTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*RejectedBlessingTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*RejectedBlessingTarget) FromZero(*vdl.Type) error
 pkg security, method (*RejectedBlessingTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*RejectedBlessingTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*Signature) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -99,22 +106,26 @@
 pkg security, method (*Signature) Verify(PublicKey, []byte) bool
 pkg security, method (*SignatureTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*SignatureTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*SignatureTarget) FromZero(*vdl.Type) error
 pkg security, method (*SignatureTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*SignatureTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*ThirdPartyRequirements) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*ThirdPartyRequirements) MakeVDLTarget() vdl.Target
 pkg security, method (*ThirdPartyRequirementsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*ThirdPartyRequirementsTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*ThirdPartyRequirementsTarget) FromZero(*vdl.Type) error
 pkg security, method (*ThirdPartyRequirementsTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*ThirdPartyRequirementsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*WireBlessings) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg security, method (*WireBlessings) MakeVDLTarget() vdl.Target
 pkg security, method (*WireBlessingsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*WireBlessingsTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*WireBlessingsTarget) FromZero(*vdl.Type) error
 pkg security, method (*WireBlessingsTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*WireBlessingsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (*WireDischargeTarget) FinishField(vdl.Target, vdl.Target) error
 pkg security, method (*WireDischargeTarget) FinishFields(vdl.FieldsTarget) error
+pkg security, method (*WireDischargeTarget) FromZero(*vdl.Type) error
 pkg security, method (*WireDischargeTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg security, method (*WireDischargeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg security, method (BlessingPattern) IsValid() bool
@@ -284,20 +295,20 @@
 pkg security, type WireDischargeTarget struct, embedded vdl.FieldsTargetBase
 pkg security, type WireDischargeTarget struct, embedded vdl.TargetBase
 pkg security, var ConstCaveat CaveatDescriptor
-pkg security, var ErrAuthorizationFailed verror.IDAction
-pkg security, var ErrCaveatNotRegistered verror.IDAction
-pkg security, var ErrCaveatParamAny verror.IDAction
-pkg security, var ErrCaveatParamCoding verror.IDAction
-pkg security, var ErrCaveatParamTypeMismatch verror.IDAction
-pkg security, var ErrCaveatValidation verror.IDAction
-pkg security, var ErrConstCaveatValidation verror.IDAction
-pkg security, var ErrEndpointAuthorizationFailed verror.IDAction
-pkg security, var ErrExpiryCaveatValidation verror.IDAction
-pkg security, var ErrInvalidSigningBlessingCaveat verror.IDAction
-pkg security, var ErrMethodCaveatValidation verror.IDAction
-pkg security, var ErrPeerBlessingsCaveatValidation verror.IDAction
-pkg security, var ErrPublicKeyNotAllowed verror.IDAction
-pkg security, var ErrUnrecognizedRoot verror.IDAction
+pkg security, var ErrAuthorizationFailed unknown-type
+pkg security, var ErrCaveatNotRegistered unknown-type
+pkg security, var ErrCaveatParamAny unknown-type
+pkg security, var ErrCaveatParamCoding unknown-type
+pkg security, var ErrCaveatParamTypeMismatch unknown-type
+pkg security, var ErrCaveatValidation unknown-type
+pkg security, var ErrConstCaveatValidation unknown-type
+pkg security, var ErrEndpointAuthorizationFailed unknown-type
+pkg security, var ErrExpiryCaveatValidation unknown-type
+pkg security, var ErrInvalidSigningBlessingCaveat unknown-type
+pkg security, var ErrMethodCaveatValidation unknown-type
+pkg security, var ErrPeerBlessingsCaveatValidation unknown-type
+pkg security, var ErrPublicKeyNotAllowed unknown-type
+pkg security, var ErrUnrecognizedRoot unknown-type
 pkg security, var ExpiryCaveat CaveatDescriptor
 pkg security, var MethodCaveat CaveatDescriptor
 pkg security, var PeerBlessingsCaveat CaveatDescriptor
diff --git a/security/access/.api b/security/access/.api
index bbd3383..2c94cf3 100644
--- a/security/access/.api
+++ b/security/access/.api
@@ -22,6 +22,7 @@
 pkg access, method (*AccessList) MakeVDLTarget() vdl.Target
 pkg access, method (*AccessListTarget) FinishField(vdl.Target, vdl.Target) error
 pkg access, method (*AccessListTarget) FinishFields(vdl.FieldsTarget) error
+pkg access, method (*AccessListTarget) FromZero(*vdl.Type) error
 pkg access, method (*AccessListTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg access, method (*AccessListTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg access, method (*Permissions) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -29,11 +30,13 @@
 pkg access, method (*PermissionsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg access, method (*PermissionsTarget) FinishKeyStartField(vdl.Target) (vdl.Target, error)
 pkg access, method (*PermissionsTarget) FinishMap(vdl.MapTarget) error
+pkg access, method (*PermissionsTarget) FromZero(*vdl.Type) error
 pkg access, method (*PermissionsTarget) StartKey() (vdl.Target, error)
 pkg access, method (*PermissionsTarget) StartMap(*vdl.Type, int) (vdl.MapTarget, error)
 pkg access, method (*Tag) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg access, method (*Tag) MakeVDLTarget() vdl.Target
 pkg access, method (*TagTarget) FromString(string, *vdl.Type) error
+pkg access, method (*TagTarget) FromZero(*vdl.Type) error
 pkg access, method (AccessList) Authorize(*context.T, security.Call) error
 pkg access, method (AccessList) Enforceable(*context.T, security.Principal) error
 pkg access, method (AccessList) Includes(...string) bool
@@ -59,9 +62,9 @@
 pkg access, type TagTarget struct, Value *Tag
 pkg access, type TagTarget struct, embedded vdl.TargetBase
 pkg access, var AccessTagCaveat security.CaveatDescriptor
-pkg access, var ErrAccessListMatch verror.IDAction
-pkg access, var ErrAccessTagCaveatValidation verror.IDAction
-pkg access, var ErrInvalidOpenAccessList verror.IDAction
-pkg access, var ErrNoPermissions verror.IDAction
-pkg access, var ErrTooBig verror.IDAction
-pkg access, var ErrUnenforceablePatterns verror.IDAction
+pkg access, var ErrAccessListMatch unknown-type
+pkg access, var ErrAccessTagCaveatValidation unknown-type
+pkg access, var ErrInvalidOpenAccessList unknown-type
+pkg access, var ErrNoPermissions unknown-type
+pkg access, var ErrTooBig unknown-type
+pkg access, var ErrUnenforceablePatterns unknown-type
diff --git a/security/access/access.vdl.go b/security/access/access.vdl.go
index b4cd6ea..c719e9c 100644
--- a/security/access/access.vdl.go
+++ b/security/access/access.vdl.go
@@ -151,63 +151,84 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("In")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget4, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.In))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.In) == 0 {
+			var4 = true
 		}
-		for i, elem6 := range m.In {
-			elemTarget5, err := listTarget4.StartElem(i)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.In))
 			if err != nil {
 				return err
 			}
+			for i, elem7 := range m.In {
+				elemTarget6, err := listTarget5.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem6.FillVDLTarget(elemTarget5, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+				if err := elem7.FillVDLTarget(elemTarget6, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
 				return err
 			}
-			if err := listTarget4.FinishElem(elemTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishList(listTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("NotIn")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("NotIn")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget9, err := fieldTarget8.StartList(tt.NonOptional().Field(1).Type, len(m.NotIn))
-		if err != nil {
-			return err
+		var var10 bool
+		if len(m.NotIn) == 0 {
+			var10 = true
 		}
-		for i, elem11 := range m.NotIn {
-			elemTarget10, err := listTarget9.StartElem(i)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(1).Type, len(m.NotIn))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget10.FromString(string(elem11), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+			for i, elem13 := range m.NotIn {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget12.FromString(string(elem13), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
 			}
-			if err := listTarget9.FinishElem(elemTarget10); err != nil {
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget8.FinishList(listTarget9); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -257,6 +278,10 @@
 
 	return nil
 }
+func (t *AccessListTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AccessList{}
+	return nil
+}
 
 // []security.BlessingPattern
 type __VDLTarget1_list struct {
@@ -290,6 +315,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []security.BlessingPattern(nil)
+	return nil
+}
 
 // Permissions maps string tags to access lists specifying the blessings
 // required to invoke methods with that tag.
@@ -381,6 +410,10 @@
 
 	return nil
 }
+func (t *PermissionsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Permissions(nil)
+	return nil
+}
 
 // Tag is used to associate methods with an AccessList in a Permissions.
 //
@@ -419,13 +452,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroAccessList  = AccessList{}
-	__VDLZeroPermissions = Permissions(nil)
-	__VDLZeroTag         = Tag("")
-)
+func (t *TagTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Tag("")
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -521,6 +551,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*AccessList)(nil))
diff --git a/security/access/internal/internal.vdl.go b/security/access/internal/internal.vdl.go
index 5f1e217..d3d2661 100644
--- a/security/access/internal/internal.vdl.go
+++ b/security/access/internal/internal.vdl.go
@@ -56,11 +56,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroMyTag = MyTag("")
-)
+func (t *MyTagTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MyTag("")
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -236,6 +235,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*MyTag)(nil))
diff --git a/security/security.vdl.go b/security/security.vdl.go
index 3a61113..071811d 100644
--- a/security/security.vdl.go
+++ b/security/security.vdl.go
@@ -57,6 +57,10 @@
 
 	return nil
 }
+func (t *nonceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = nonce{}
+	return nil
+}
 
 // Caveat is a condition on the validity of a blessing/discharge.
 //
@@ -81,30 +85,48 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Id == uniqueid.Id{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("ParamVom")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("ParamVom")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.ParamVom), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.ParamVom) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.ParamVom), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -154,6 +176,10 @@
 
 	return nil
 }
+func (t *CaveatTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Caveat{}
+	return nil
+}
 
 // ThirdPartyRequirements specifies the information required by the third-party
 // that will issue discharges for third-party caveats.
@@ -176,40 +202,63 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("ReportServer")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.ReportServer), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.ReportServer == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.ReportServer), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("ReportMethod")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("ReportMethod")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromBool(bool(m.ReportMethod), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.ReportMethod == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.ReportMethod), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("ReportArguments")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ReportArguments")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromBool(bool(m.ReportArguments), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.ReportArguments == false)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromBool(bool(m.ReportArguments), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -264,6 +313,10 @@
 
 	return nil
 }
+func (t *ThirdPartyRequirementsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ThirdPartyRequirements{}
+	return nil
+}
 
 // publicKeyThirdPartyCaveatParam represents a third-party caveat that requires
 // discharges to be issued by a principal identified by a public key.
@@ -305,85 +358,130 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Nonce")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Nonce.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Nonce == nonce{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Nonce.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Caveats")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Caveats")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Caveats))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Caveats) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Caveats {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Caveats))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Caveats {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("DischargerKey")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("DischargerKey")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget10.FromBytes([]byte(m.DischargerKey), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var var13 bool
+		if len(m.DischargerKey) == 0 {
+			var13 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
-			return err
-		}
-	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("DischargerLocation")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget12.FromString(string(m.DischargerLocation), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget12.FromBytes([]byte(m.DischargerKey), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("DischargerRequirements")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("DischargerLocation")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.DischargerRequirements.FillVDLTarget(fieldTarget14, tt.NonOptional().Field(4).Type); err != nil {
+		var16 := (m.DischargerLocation == "")
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromString(string(m.DischargerLocation), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
+	}
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("DischargerRequirements")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var19 := (m.DischargerRequirements == ThirdPartyRequirements{})
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.DischargerRequirements.FillVDLTarget(fieldTarget18, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
 	}
@@ -448,6 +546,10 @@
 
 	return nil
 }
+func (t *publicKeyThirdPartyCaveatParamTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = publicKeyThirdPartyCaveatParam{}
+	return nil
+}
 
 // []Caveat
 type __VDLTarget1_list struct {
@@ -481,6 +583,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Caveat(nil)
+	return nil
+}
 
 // Hash identifies a cryptographic hash function approved for use in signature algorithms.
 type Hash string
@@ -515,6 +621,10 @@
 
 	return nil
 }
+func (t *HashTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Hash("")
+	return nil
+}
 
 // Signature represents a digital signature.
 type Signature struct {
@@ -539,59 +649,99 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Purpose")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget3.FromBytes([]byte(m.Purpose), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var var4 bool
+		if len(m.Purpose) == 0 {
+			var4 = true
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget3.FromBytes([]byte(m.Purpose), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Hash")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Hash")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Hash.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Hash == Hash(""))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Hash.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("R")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("R")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget7.FromBytes([]byte(m.R), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var var10 bool
+		if len(m.R) == 0 {
+			var10 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("S")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
 
-		if err := fieldTarget9.FromBytes([]byte(m.S), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+			if err := fieldTarget9.FromBytes([]byte(m.R), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("S")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var13 bool
+		if len(m.S) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget12.FromBytes([]byte(m.S), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -648,6 +798,10 @@
 
 	return nil
 }
+func (t *SignatureTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Signature{}
+	return nil
+}
 
 // publicKeyDischarge represents the discharge issued for publicKeyThirdPartyCaveatParams.
 //
@@ -671,59 +825,102 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("ThirdPartyCaveatId")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.ThirdPartyCaveatId), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.ThirdPartyCaveatId == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.ThirdPartyCaveatId), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Caveats")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Caveats")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Caveats))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Caveats) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Caveats {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Caveats))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Caveats {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Signature")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Signature")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Signature.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var13 := true
+		var var14 bool
+		if len(m.Signature.Purpose) == 0 {
+			var14 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		var13 = var13 && var14
+		var15 := (m.Signature.Hash == Hash(""))
+		var13 = var13 && var15
+		var var16 bool
+		if len(m.Signature.R) == 0 {
+			var16 = true
+		}
+		var13 = var13 && var16
+		var var17 bool
+		if len(m.Signature.S) == 0 {
+			var17 = true
+		}
+		var13 = var13 && var17
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Signature.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
@@ -778,6 +975,10 @@
 
 	return nil
 }
+func (t *publicKeyDischargeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = publicKeyDischarge{}
+	return nil
+}
 
 // BlessingPattern is a pattern that is matched by specific blessings.
 //
@@ -824,6 +1025,10 @@
 
 	return nil
 }
+func (t *BlessingPatternTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlessingPattern("")
+	return nil
+}
 
 // DischargeImpetus encapsulates the motivation for a discharge being sought.
 //
@@ -851,82 +1056,111 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Server")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget4, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.Server))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.Server) == 0 {
+			var4 = true
 		}
-		for i, elem6 := range m.Server {
-			elemTarget5, err := listTarget4.StartElem(i)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.Server))
 			if err != nil {
 				return err
 			}
+			for i, elem7 := range m.Server {
+				elemTarget6, err := listTarget5.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem6.FillVDLTarget(elemTarget5, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+				if err := elem7.FillVDLTarget(elemTarget6, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
 				return err
 			}
-			if err := listTarget4.FinishElem(elemTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishList(listTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Method")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget8.FromString(string(m.Method), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
-			return err
-		}
-	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Arguments")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Method")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget11, err := fieldTarget10.StartList(tt.NonOptional().Field(2).Type, len(m.Arguments))
-		if err != nil {
+		var10 := (m.Method == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Method), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
-		for i, elem13 := range m.Arguments {
-			elemTarget12, err := listTarget11.StartElem(i)
+	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Arguments")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var13 bool
+		if len(m.Arguments) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget14, err := fieldTarget12.StartList(tt.NonOptional().Field(2).Type, len(m.Arguments))
 			if err != nil {
 				return err
 			}
-
-			if elem13 == nil {
-				if err := elemTarget12.FromNil(tt.NonOptional().Field(2).Type.Elem()); err != nil {
+			for i, elem16 := range m.Arguments {
+				elemTarget15, err := listTarget14.StartElem(i)
+				if err != nil {
 					return err
 				}
-			} else {
-				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(2).Type.Elem()); err != nil {
+
+				if elem16 == nil {
+					if err := elemTarget15.FromZero(tt.NonOptional().Field(2).Type.Elem()); err != nil {
+						return err
+					}
+				} else {
+					if err := elem16.FillVDLTarget(elemTarget15, tt.NonOptional().Field(2).Type.Elem()); err != nil {
+						return err
+					}
+				}
+				if err := listTarget14.FinishElem(elemTarget15); err != nil {
 					return err
 				}
 			}
-			if err := listTarget11.FinishElem(elemTarget12); err != nil {
+			if err := fieldTarget12.FinishList(listTarget14); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget10.FinishList(listTarget11); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
@@ -981,6 +1215,10 @@
 
 	return nil
 }
+func (t *DischargeImpetusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = DischargeImpetus{}
+	return nil
+}
 
 // []BlessingPattern
 type __VDLTarget2_list struct {
@@ -1014,6 +1252,10 @@
 
 	return nil
 }
+func (t *__VDLTarget2_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []BlessingPattern(nil)
+	return nil
+}
 
 // []*vom.RawBytes
 type __VDLTarget3_list struct {
@@ -1046,6 +1288,10 @@
 
 	return nil
 }
+func (t *__VDLTarget3_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []*vom.RawBytes(nil)
+	return nil
+}
 
 // Certificate represents the cryptographic proof of the binding of
 // extensions of a blessing held by one principal to another (represented by
@@ -1071,72 +1317,126 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Extension")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Extension), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Extension == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Extension), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("PublicKey")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("PublicKey")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.PublicKey), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.PublicKey) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.PublicKey), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Caveats")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Caveats")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget8, err := fieldTarget7.StartList(tt.NonOptional().Field(2).Type, len(m.Caveats))
-		if err != nil {
-			return err
+		var var10 bool
+		if len(m.Caveats) == 0 {
+			var10 = true
 		}
-		for i, elem10 := range m.Caveats {
-			elemTarget9, err := listTarget8.StartElem(i)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(2).Type, len(m.Caveats))
 			if err != nil {
 				return err
 			}
+			for i, elem13 := range m.Caveats {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(2).Type.Elem()); err != nil {
-				return err
+				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
 			}
-			if err := listTarget8.FinishElem(elemTarget9); err != nil {
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget7.FinishList(listTarget8); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Signature")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Signature")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Signature.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var16 := true
+		var var17 bool
+		if len(m.Signature.Purpose) == 0 {
+			var17 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+		var16 = var16 && var17
+		var18 := (m.Signature.Hash == Hash(""))
+		var16 = var16 && var18
+		var var19 bool
+		if len(m.Signature.R) == 0 {
+			var19 = true
+		}
+		var16 = var16 && var19
+		var var20 bool
+		if len(m.Signature.S) == 0 {
+			var20 = true
+		}
+		var16 = var16 && var20
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Signature.FillVDLTarget(fieldTarget15, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
@@ -1196,6 +1496,10 @@
 
 	return nil
 }
+func (t *CertificateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Certificate{}
+	return nil
+}
 
 // CaveatDescriptor defines an association between a caveat validation function
 // (addressed by globally unique identifier) and the data needed by the
@@ -1218,33 +1522,48 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Id == uniqueid.Id{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("ParamType")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("ParamType")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		typeObjectVal6 := m.ParamType
-		if typeObjectVal6 == nil {
-			typeObjectVal6 = vdl.AnyType
+
+		var7 := (m.ParamType == vdl.AnyType)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal8 := m.ParamType
+			if typeObjectVal8 == nil {
+				typeObjectVal8 = vdl.AnyType
+			}
+			if err := fieldTarget6.FromTypeObject(typeObjectVal8); err != nil {
+				return err
+			}
 		}
-		if err := fieldTarget5.FromTypeObject(typeObjectVal6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1294,6 +1613,12 @@
 
 	return nil
 }
+func (t *CaveatDescriptorTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CaveatDescriptor{
+		ParamType: vdl.AnyType,
+	}
+	return nil
+}
 
 // WireBlessings encapsulates wire format of a set of blessings and the
 // corresponding cryptographic proof that binds them to a principal
@@ -1319,49 +1644,59 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("CertificateChains")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget4, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.CertificateChains))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.CertificateChains) == 0 {
+			var4 = true
 		}
-		for i, elem6 := range m.CertificateChains {
-			elemTarget5, err := listTarget4.StartElem(i)
-			if err != nil {
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
+		} else {
 
-			listTarget7, err := elemTarget5.StartList(tt.NonOptional().Field(0).Type.Elem(), len(elem6))
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.CertificateChains))
 			if err != nil {
 				return err
 			}
-			for i, elem9 := range elem6 {
-				elemTarget8, err := listTarget7.StartElem(i)
+			for i, elem7 := range m.CertificateChains {
+				elemTarget6, err := listTarget5.StartElem(i)
 				if err != nil {
 					return err
 				}
 
-				if err := elem9.FillVDLTarget(elemTarget8, tt.NonOptional().Field(0).Type.Elem().Elem()); err != nil {
+				listTarget8, err := elemTarget6.StartList(tt.NonOptional().Field(0).Type.Elem(), len(elem7))
+				if err != nil {
 					return err
 				}
-				if err := listTarget7.FinishElem(elemTarget8); err != nil {
+				for i, elem10 := range elem7 {
+					elemTarget9, err := listTarget8.StartElem(i)
+					if err != nil {
+						return err
+					}
+
+					if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(0).Type.Elem().Elem()); err != nil {
+						return err
+					}
+					if err := listTarget8.FinishElem(elemTarget9); err != nil {
+						return err
+					}
+				}
+				if err := elemTarget6.FinishList(listTarget8); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
 					return err
 				}
 			}
-			if err := elemTarget5.FinishList(listTarget7); err != nil {
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
 				return err
 			}
-			if err := listTarget4.FinishElem(elemTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishList(listTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -1412,6 +1747,16 @@
 	}
 	return nil
 }
+func (t *WireBlessingsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = func() Blessings {
+		var native Blessings
+		if err := vdl.Convert(&native, WireBlessings{}); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+	return nil
+}
 
 // [][]Certificate
 type __VDLTarget4_list struct {
@@ -1445,6 +1790,10 @@
 
 	return nil
 }
+func (t *__VDLTarget4_list) FromZero(tt *vdl.Type) error {
+	*t.Value = [][]Certificate(nil)
+	return nil
+}
 
 // []Certificate
 type __VDLTarget5_list struct {
@@ -1478,6 +1827,10 @@
 
 	return nil
 }
+func (t *__VDLTarget5_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Certificate(nil)
+	return nil
+}
 
 type (
 	// WireDischarge represents any single field of the WireDischarge union type.
@@ -1580,6 +1933,16 @@
 	}
 	return nil
 }
+func (t *WireDischargeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = func() Discharge {
+		var native Discharge
+		if err := vdl.Convert(&native, WireDischarge(WireDischargePublicKey{})); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+	return nil
+}
 
 type wireDischargeTargetFactory struct{}
 
@@ -1606,40 +1969,49 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Blessing")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Blessing), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Blessing == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Blessing), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Err")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Err")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Err == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.Err == (error)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			var wireError6 vdl.WireError
-			if err := verror.WireFromNative(&wireError6, m.Err); err != nil {
+
+			var wireError8 vdl.WireError
+			if err := verror.WireFromNative(&wireError8, m.Err); err != nil {
 				return err
 			}
-			if err := wireError6.FillVDLTarget(fieldTarget5, vdl.ErrorType); err != nil {
+			if err := wireError8.FillVDLTarget(fieldTarget6, vdl.ErrorType); err != nil {
 				return err
 			}
 
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1689,38 +2061,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZerononce                          = nonce{}
-	__VDLZeroCaveat                         = Caveat{}
-	__VDLZeroThirdPartyRequirements         = ThirdPartyRequirements{}
-	__VDLZeropublicKeyThirdPartyCaveatParam = publicKeyThirdPartyCaveatParam{}
-	__VDLZeroHash                           = Hash("")
-	__VDLZeroSignature                      = Signature{}
-	__VDLZeropublicKeyDischarge             = publicKeyDischarge{}
-	__VDLZeroBlessingPattern                = BlessingPattern("")
-	__VDLZeroDischargeImpetus               = DischargeImpetus{}
-	__VDLZeroCertificate                    = Certificate{}
-	__VDLZeroCaveatDescriptor               = CaveatDescriptor{
-		ParamType: vdl.AnyType,
-	}
-	__VDLZeroWireBlessings = func() Blessings {
-		var native Blessings
-		if err := vdl.Convert(&native, WireBlessings{}); err != nil {
-			panic(err)
-		}
-		return native
-	}()
-	__VDLZeroWireDischarge = func() Discharge {
-		var native Discharge
-		if err := vdl.Convert(&native, WireDischarge(WireDischargePublicKey{})); err != nil {
-			panic(err)
-		}
-		return native
-	}()
-	__VDLZeroRejectedBlessing = RejectedBlessing{}
-)
+func (t *RejectedBlessingTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RejectedBlessing{}
+	return nil
+}
 
 // Type-check native conversion functions.
 var (
@@ -1959,6 +2303,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register native type conversions first, so that vdl.TypeOf works.
 	vdl.RegisterNative(WireBlessingsToNative, WireBlessingsFromNative)
diff --git a/services/appcycle/.api b/services/appcycle/.api
index 6c4b7b2..f9c4269 100644
--- a/services/appcycle/.api
+++ b/services/appcycle/.api
@@ -6,14 +6,15 @@
 pkg appcycle, method (*Task) MakeVDLTarget() vdl.Target
 pkg appcycle, method (*TaskTarget) FinishField(vdl.Target, vdl.Target) error
 pkg appcycle, method (*TaskTarget) FinishFields(vdl.FieldsTarget) error
+pkg appcycle, method (*TaskTarget) FromZero(*vdl.Type) error
 pkg appcycle, method (*TaskTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg appcycle, method (*TaskTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg appcycle, type AppCycleClientMethods interface { ForceStop, Stop }
 pkg appcycle, type AppCycleClientMethods interface, ForceStop(*context.T, ...rpc.CallOpt) error
 pkg appcycle, type AppCycleClientMethods interface, Stop(*context.T, ...rpc.CallOpt) (AppCycleStopClientCall, error)
-pkg appcycle, type AppCycleClientStub interface { ForceStop, Stop }
 pkg appcycle, type AppCycleClientStub interface, ForceStop(*context.T, ...rpc.CallOpt) error
 pkg appcycle, type AppCycleClientStub interface, Stop(*context.T, ...rpc.CallOpt) (AppCycleStopClientCall, error)
+pkg appcycle, type AppCycleClientStub interface, unexported methods
 pkg appcycle, type AppCycleServerMethods interface { ForceStop, Stop }
 pkg appcycle, type AppCycleServerMethods interface, ForceStop(*context.T, rpc.ServerCall) error
 pkg appcycle, type AppCycleServerMethods interface, Stop(*context.T, AppCycleStopServerCall) error
@@ -29,14 +30,8 @@
 pkg appcycle, type AppCycleStopClientCall interface, RecvStream() interface {  Advance() bool;; Value() Task;; Err() error;}
 pkg appcycle, type AppCycleStopClientStream interface { RecvStream }
 pkg appcycle, type AppCycleStopClientStream interface, RecvStream() interface {  Advance() bool;; Value() Task;; Err() error;}
-pkg appcycle, type AppCycleStopServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg appcycle, type AppCycleStopServerCall interface, GrantedBlessings() security.Blessings
-pkg appcycle, type AppCycleStopServerCall interface, LocalEndpoint() naming.Endpoint
-pkg appcycle, type AppCycleStopServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg appcycle, type AppCycleStopServerCall interface, Security() security.Call
 pkg appcycle, type AppCycleStopServerCall interface, SendStream() interface {  Send(item Task) error;}
-pkg appcycle, type AppCycleStopServerCall interface, Server() Server
-pkg appcycle, type AppCycleStopServerCall interface, Suffix() string
+pkg appcycle, type AppCycleStopServerCall interface, unexported methods
 pkg appcycle, type AppCycleStopServerCallStub struct
 pkg appcycle, type AppCycleStopServerCallStub struct, embedded rpc.StreamServerCall
 pkg appcycle, type AppCycleStopServerStream interface { SendStream }
diff --git a/services/appcycle/appcycle.vdl.go b/services/appcycle/appcycle.vdl.go
index 9d655b1..afb53de 100644
--- a/services/appcycle/appcycle.vdl.go
+++ b/services/appcycle/appcycle.vdl.go
@@ -47,28 +47,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Progress")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Progress), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Progress == int32(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Progress), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Goal")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Goal")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Goal), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Goal == int32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Goal), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -118,11 +133,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroTask = Task{}
-)
+func (t *TaskTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Task{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Interface definitions
@@ -397,6 +411,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Task)(nil))
diff --git a/services/application/.api b/services/application/.api
index 6ea9973..aa19b28 100644
--- a/services/application/.api
+++ b/services/application/.api
@@ -4,6 +4,7 @@
 pkg application, method (*Envelope) UnmarshalJSON([]byte) error
 pkg application, method (*EnvelopeTarget) FinishField(vdl.Target, vdl.Target) error
 pkg application, method (*EnvelopeTarget) FinishFields(vdl.FieldsTarget) error
+pkg application, method (*EnvelopeTarget) FromZero(*vdl.Type) error
 pkg application, method (*EnvelopeTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg application, method (*EnvelopeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg application, method (*Packages) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -11,12 +12,14 @@
 pkg application, method (*PackagesTarget) FinishField(vdl.Target, vdl.Target) error
 pkg application, method (*PackagesTarget) FinishKeyStartField(vdl.Target) (vdl.Target, error)
 pkg application, method (*PackagesTarget) FinishMap(vdl.MapTarget) error
+pkg application, method (*PackagesTarget) FromZero(*vdl.Type) error
 pkg application, method (*PackagesTarget) StartKey() (vdl.Target, error)
 pkg application, method (*PackagesTarget) StartMap(*vdl.Type, int) (vdl.MapTarget, error)
 pkg application, method (*SignedFile) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg application, method (*SignedFile) MakeVDLTarget() vdl.Target
 pkg application, method (*SignedFileTarget) FinishField(vdl.Target, vdl.Target) error
 pkg application, method (*SignedFileTarget) FinishFields(vdl.FieldsTarget) error
+pkg application, method (*SignedFileTarget) FromZero(*vdl.Type) error
 pkg application, method (*SignedFileTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg application, method (*SignedFileTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg application, method (Envelope) MarshalJSON() ([]byte, error)
diff --git a/services/application/application.vdl.go b/services/application/application.vdl.go
index 01ad912..d05f0b7 100644
--- a/services/application/application.vdl.go
+++ b/services/application/application.vdl.go
@@ -40,29 +40,61 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("File")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.File), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.File == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.File), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Signature")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Signature")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Signature.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := true
+		var var8 bool
+		if len(m.Signature.Purpose) == 0 {
+			var8 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		var7 = var7 && var8
+		var9 := (m.Signature.Hash == security.Hash(""))
+		var7 = var7 && var9
+		var var10 bool
+		if len(m.Signature.R) == 0 {
+			var10 = true
+		}
+		var7 = var7 && var10
+		var var11 bool
+		if len(m.Signature.S) == 0 {
+			var11 = true
+		}
+		var7 = var7 && var11
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Signature.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -112,6 +144,10 @@
 
 	return nil
 }
+func (t *SignedFileTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SignedFile{}
+	return nil
+}
 
 // Packages represents a set of packages. The map key is the local
 // file/directory name, relative to the instance's packages directory, where the
@@ -213,6 +249,10 @@
 
 	return nil
 }
+func (t *PackagesTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Packages(nil)
+	return nil
+}
 
 // Envelope is a collection of metadata that describes an application.
 type Envelope struct {
@@ -263,148 +303,246 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Title")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Title), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Title == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Title), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Args")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Args")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Args))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Args) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Args {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Args))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget7.FromString(string(elem8), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+			for i, elem10 := range m.Args {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget9.FromString(string(elem10), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Binary")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Binary")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Binary.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var13 := true
+		var14 := (m.Binary.File == "")
+		var13 = var13 && var14
+		var15 := true
+		var var16 bool
+		if len(m.Binary.Signature.Purpose) == 0 {
+			var16 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
-			return err
+		var15 = var15 && var16
+		var17 := (m.Binary.Signature.Hash == security.Hash(""))
+		var15 = var15 && var17
+		var var18 bool
+		if len(m.Binary.Signature.R) == 0 {
+			var18 = true
 		}
-	}
-	var wireValue11 security.WireBlessings
-	if err := security.WireBlessingsFromNative(&wireValue11, m.Publisher); err != nil {
-		return err
-	}
-
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Publisher")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		if err := wireValue11.FillVDLTarget(fieldTarget13, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var15 = var15 && var18
+		var var19 bool
+		if len(m.Binary.Signature.S) == 0 {
+			var19 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
-			return err
-		}
-	}
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Env")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		listTarget16, err := fieldTarget15.StartList(tt.NonOptional().Field(4).Type, len(m.Env))
-		if err != nil {
-			return err
-		}
-		for i, elem18 := range m.Env {
-			elemTarget17, err := listTarget16.StartElem(i)
-			if err != nil {
+		var15 = var15 && var19
+		var13 = var13 && var15
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
-			if err := elemTarget17.FromString(string(elem18), tt.NonOptional().Field(4).Type.Elem()); err != nil {
-				return err
-			}
-			if err := listTarget16.FinishElem(elemTarget17); err != nil {
+		} else {
+
+			if err := m.Binary.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget15.FinishList(listTarget16); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget19, fieldTarget20, err := fieldsTarget1.StartField("Packages")
+	var wireValue20 security.WireBlessings
+	if err := security.WireBlessingsFromNative(&wireValue20, m.Publisher); err != nil {
+		return err
+	}
+
+	keyTarget21, fieldTarget22, err := fieldsTarget1.StartField("Publisher")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Packages.FillVDLTarget(fieldTarget20, tt.NonOptional().Field(5).Type); err != nil {
-			return err
+		var23 := true
+		var var24 bool
+		if len(wireValue20.CertificateChains) == 0 {
+			var24 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget19, fieldTarget20); err != nil {
-			return err
-		}
-	}
-	keyTarget21, fieldTarget22, err := fieldsTarget1.StartField("Restarts")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget22.FromInt(int64(m.Restarts), tt.NonOptional().Field(6).Type); err != nil {
-			return err
+		var23 = var23 && var24
+		if var23 {
+			if err := fieldTarget22.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue20.FillVDLTarget(fieldTarget22, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget21, fieldTarget22); err != nil {
 			return err
 		}
 	}
-	var wireValue23 time_2.Duration
-	if err := time_2.DurationFromNative(&wireValue23, m.RestartTimeWindow); err != nil {
-		return err
-	}
-
-	keyTarget24, fieldTarget25, err := fieldsTarget1.StartField("RestartTimeWindow")
+	keyTarget25, fieldTarget26, err := fieldsTarget1.StartField("Env")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue23.FillVDLTarget(fieldTarget25, tt.NonOptional().Field(7).Type); err != nil {
+		var var27 bool
+		if len(m.Env) == 0 {
+			var27 = true
+		}
+		if var27 {
+			if err := fieldTarget26.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget28, err := fieldTarget26.StartList(tt.NonOptional().Field(4).Type, len(m.Env))
+			if err != nil {
+				return err
+			}
+			for i, elem30 := range m.Env {
+				elemTarget29, err := listTarget28.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget29.FromString(string(elem30), tt.NonOptional().Field(4).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget28.FinishElem(elemTarget29); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget26.FinishList(listTarget28); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget25, fieldTarget26); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget24, fieldTarget25); err != nil {
+	}
+	keyTarget31, fieldTarget32, err := fieldsTarget1.StartField("Packages")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var33 bool
+		if len(m.Packages) == 0 {
+			var33 = true
+		}
+		if var33 {
+			if err := fieldTarget32.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Packages.FillVDLTarget(fieldTarget32, tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget31, fieldTarget32); err != nil {
+			return err
+		}
+	}
+	keyTarget34, fieldTarget35, err := fieldsTarget1.StartField("Restarts")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var36 := (m.Restarts == int32(0))
+		if var36 {
+			if err := fieldTarget35.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget35.FromInt(int64(m.Restarts), tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget34, fieldTarget35); err != nil {
+			return err
+		}
+	}
+	var wireValue37 time_2.Duration
+	if err := time_2.DurationFromNative(&wireValue37, m.RestartTimeWindow); err != nil {
+		return err
+	}
+
+	keyTarget38, fieldTarget39, err := fieldsTarget1.StartField("RestartTimeWindow")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var40 := (wireValue37 == time_2.Duration{})
+		if var40 {
+			if err := fieldTarget39.FromZero(tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue37.FillVDLTarget(fieldTarget39, tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget38, fieldTarget39); err != nil {
 			return err
 		}
 	}
@@ -484,13 +622,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroSignedFile = SignedFile{}
-	__VDLZeroPackages   = Packages(nil)
-	__VDLZeroEnvelope   = Envelope{}
-)
+func (t *EnvelopeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Envelope{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -517,6 +652,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*SignedFile)(nil))
diff --git a/services/binary/.api b/services/binary/.api
index f339769..86a3c5d 100644
--- a/services/binary/.api
+++ b/services/binary/.api
@@ -4,12 +4,14 @@
 pkg binary, method (*Description) MakeVDLTarget() vdl.Target
 pkg binary, method (*DescriptionTarget) FinishField(vdl.Target, vdl.Target) error
 pkg binary, method (*DescriptionTarget) FinishFields(vdl.FieldsTarget) error
+pkg binary, method (*DescriptionTarget) FromZero(*vdl.Type) error
 pkg binary, method (*DescriptionTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg binary, method (*DescriptionTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg binary, method (*PartInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg binary, method (*PartInfo) MakeVDLTarget() vdl.Target
 pkg binary, method (*PartInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg binary, method (*PartInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg binary, method (*PartInfoTarget) FromZero(*vdl.Type) error
 pkg binary, method (*PartInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg binary, method (*PartInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg binary, type Description struct
diff --git a/services/binary/binary.vdl.go b/services/binary/binary.vdl.go
index db95aea..eac8960 100644
--- a/services/binary/binary.vdl.go
+++ b/services/binary/binary.vdl.go
@@ -50,52 +50,70 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Profiles")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Profiles")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget6, err := fieldTarget5.StartMap(tt.NonOptional().Field(1).Type, len(m.Profiles))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Profiles) == 0 {
+			var7 = true
 		}
-		for key8, value10 := range m.Profiles {
-			keyTarget7, err := mapTarget6.StartKey()
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget8, err := fieldTarget6.StartMap(tt.NonOptional().Field(1).Type, len(m.Profiles))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget7.FromString(string(key8), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
+			for key10, value12 := range m.Profiles {
+				keyTarget9, err := mapTarget8.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget9.FromString(string(key10), tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget11, err := mapTarget8.FinishKeyStartField(keyTarget9)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget11.FromBool(bool(value12), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget8.FinishField(keyTarget9, valueTarget11); err != nil {
+					return err
+				}
 			}
-			valueTarget9, err := mapTarget6.FinishKeyStartField(keyTarget7)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget9.FromBool(bool(value10), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget6.FinishField(keyTarget7, valueTarget9); err != nil {
+			if err := fieldTarget6.FinishMap(mapTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishMap(mapTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -145,6 +163,10 @@
 
 	return nil
 }
+func (t *DescriptionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Description{}
+	return nil
+}
 
 // map[string]bool
 type __VDLTarget1_map struct {
@@ -188,6 +210,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]bool(nil)
+	return nil
+}
 
 // PartInfo holds information describing a binary part.
 type PartInfo struct {
@@ -207,28 +233,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Checksum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Checksum), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Checksum == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Checksum), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Size")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Size")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Size), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Size == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Size), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -278,12 +319,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroDescription = Description{}
-	__VDLZeroPartInfo    = PartInfo{}
-)
+func (t *PartInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = PartInfo{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -310,6 +349,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Description)(nil))
diff --git a/services/build/.api b/services/build/.api
index 64aa9f2..e4c77c5 100644
--- a/services/build/.api
+++ b/services/build/.api
@@ -18,6 +18,7 @@
 pkg build, method (*Architecture) Set(string) error
 pkg build, method (*Architecture) SetFromGoArch(string) error
 pkg build, method (*ArchitectureTarget) FromEnumLabel(string, *vdl.Type) error
+pkg build, method (*ArchitectureTarget) FromZero(*vdl.Type) error
 pkg build, method (*BuilderBuildServerCallStub) Init(rpc.StreamServerCall)
 pkg build, method (*BuilderBuildServerCallStub) RecvStream() interface {  Advance() bool; Value() File; Err() error;}
 pkg build, method (*BuilderBuildServerCallStub) SendStream() interface {  Send(item File) error;}
@@ -25,17 +26,20 @@
 pkg build, method (*File) MakeVDLTarget() vdl.Target
 pkg build, method (*FileTarget) FinishField(vdl.Target, vdl.Target) error
 pkg build, method (*FileTarget) FinishFields(vdl.FieldsTarget) error
+pkg build, method (*FileTarget) FromZero(*vdl.Type) error
 pkg build, method (*FileTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg build, method (*FileTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg build, method (*Format) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg build, method (*Format) MakeVDLTarget() vdl.Target
 pkg build, method (*Format) Set(string) error
 pkg build, method (*FormatTarget) FromEnumLabel(string, *vdl.Type) error
+pkg build, method (*FormatTarget) FromZero(*vdl.Type) error
 pkg build, method (*OperatingSystem) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg build, method (*OperatingSystem) MakeVDLTarget() vdl.Target
 pkg build, method (*OperatingSystem) Set(string) error
 pkg build, method (*OperatingSystem) SetFromGoOS(string) error
 pkg build, method (*OperatingSystemTarget) FromEnumLabel(string, *vdl.Type) error
+pkg build, method (*OperatingSystemTarget) FromZero(*vdl.Type) error
 pkg build, method (Architecture) String() string
 pkg build, method (Architecture) ToGoArch() string
 pkg build, method (Format) String() string
@@ -52,15 +56,9 @@
 pkg build, type BuilderBuildClientStream interface { RecvStream, SendStream }
 pkg build, type BuilderBuildClientStream interface, RecvStream() interface {  Advance() bool;; Value() File;; Err() error;}
 pkg build, type BuilderBuildClientStream interface, SendStream() interface {  Send(item File) error;; Close() error;}
-pkg build, type BuilderBuildServerCall interface { GrantedBlessings, LocalEndpoint, RecvStream, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg build, type BuilderBuildServerCall interface, GrantedBlessings() security.Blessings
-pkg build, type BuilderBuildServerCall interface, LocalEndpoint() naming.Endpoint
 pkg build, type BuilderBuildServerCall interface, RecvStream() interface {  Advance() bool;; Value() File;; Err() error;}
-pkg build, type BuilderBuildServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg build, type BuilderBuildServerCall interface, Security() security.Call
 pkg build, type BuilderBuildServerCall interface, SendStream() interface {  Send(item File) error;}
-pkg build, type BuilderBuildServerCall interface, Server() Server
-pkg build, type BuilderBuildServerCall interface, Suffix() string
+pkg build, type BuilderBuildServerCall interface, unexported methods
 pkg build, type BuilderBuildServerCallStub struct
 pkg build, type BuilderBuildServerCallStub struct, embedded rpc.StreamServerCall
 pkg build, type BuilderBuildServerStream interface { RecvStream, SendStream }
@@ -69,9 +67,9 @@
 pkg build, type BuilderClientMethods interface { Build, Describe }
 pkg build, type BuilderClientMethods interface, Build(*context.T, Architecture, OperatingSystem, ...rpc.CallOpt) (BuilderBuildClientCall, error)
 pkg build, type BuilderClientMethods interface, Describe(*context.T, string, ...rpc.CallOpt) (binary.Description, error)
-pkg build, type BuilderClientStub interface { Build, Describe }
 pkg build, type BuilderClientStub interface, Build(*context.T, Architecture, OperatingSystem, ...rpc.CallOpt) (BuilderBuildClientCall, error)
 pkg build, type BuilderClientStub interface, Describe(*context.T, string, ...rpc.CallOpt) (binary.Description, error)
+pkg build, type BuilderClientStub interface, unexported methods
 pkg build, type BuilderServerMethods interface { Build, Describe }
 pkg build, type BuilderServerMethods interface, Build(*context.T, BuilderBuildServerCall, Architecture, OperatingSystem) ([]byte, error)
 pkg build, type BuilderServerMethods interface, Describe(*context.T, rpc.ServerCall, string) (binary.Description, error)
diff --git a/services/build/build.vdl.go b/services/build/build.vdl.go
index fb97627..1d7548d 100644
--- a/services/build/build.vdl.go
+++ b/services/build/build.vdl.go
@@ -106,11 +106,15 @@
 	case "X86":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/build.Architecture", src)
+		return fmt.Errorf("label %s not in enum Architecture", src)
 	}
 
 	return nil
 }
+func (t *ArchitectureTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ArchitectureAmd64
+	return nil
+}
 
 // Format specifies the file format of a host.
 type Format int
@@ -195,11 +199,15 @@
 	case "Pe":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/build.Format", src)
+		return fmt.Errorf("label %s not in enum Format", src)
 	}
 
 	return nil
 }
+func (t *FormatTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = FormatElf
+	return nil
+}
 
 // OperatingSystem specifies the operating system of a host.
 type OperatingSystem int
@@ -292,11 +300,15 @@
 	case "Android":
 		*t.Value = 3
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/build.OperatingSystem", src)
+		return fmt.Errorf("label %s not in enum OperatingSystem", src)
 	}
 
 	return nil
 }
+func (t *OperatingSystemTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = OperatingSystemDarwin
+	return nil
+}
 
 // File records the name and contents of a file.
 type File struct {
@@ -314,29 +326,47 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Contents")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Contents")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.Contents), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Contents) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Contents), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -386,14 +416,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroArchitecture    = ArchitectureAmd64
-	__VDLZeroFormat          = FormatElf
-	__VDLZeroOperatingSystem = OperatingSystemDarwin
-	__VDLZeroFile            = File{}
-)
+func (t *FileTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = File{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Interface definitions
@@ -751,6 +777,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Architecture)(nil))
diff --git a/services/device/.api b/services/device/.api
index 8ca6185..5897c02 100644
--- a/services/device/.api
+++ b/services/device/.api
@@ -21,14 +21,17 @@
 pkg device, method (*Association) MakeVDLTarget() vdl.Target
 pkg device, method (*AssociationTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*AssociationTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*AssociationTarget) FromZero(*vdl.Type) error
 pkg device, method (*AssociationTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*AssociationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*BlessClientMessageTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*BlessClientMessageTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*BlessClientMessageTarget) FromZero(*vdl.Type) error
 pkg device, method (*BlessClientMessageTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*BlessClientMessageTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*BlessServerMessageTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*BlessServerMessageTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*BlessServerMessageTarget) FromZero(*vdl.Type) error
 pkg device, method (*BlessServerMessageTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*BlessServerMessageTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*Config) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -36,42 +39,50 @@
 pkg device, method (*ConfigTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*ConfigTarget) FinishKeyStartField(vdl.Target) (vdl.Target, error)
 pkg device, method (*ConfigTarget) FinishMap(vdl.MapTarget) error
+pkg device, method (*ConfigTarget) FromZero(*vdl.Type) error
 pkg device, method (*ConfigTarget) StartKey() (vdl.Target, error)
 pkg device, method (*ConfigTarget) StartMap(*vdl.Type, int) (vdl.MapTarget, error)
 pkg device, method (*Description) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg device, method (*Description) MakeVDLTarget() vdl.Target
 pkg device, method (*DescriptionTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*DescriptionTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*DescriptionTarget) FromZero(*vdl.Type) error
 pkg device, method (*DescriptionTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*DescriptionTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*DeviceStatus) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg device, method (*DeviceStatus) MakeVDLTarget() vdl.Target
 pkg device, method (*DeviceStatusTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*DeviceStatusTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*DeviceStatusTarget) FromZero(*vdl.Type) error
 pkg device, method (*DeviceStatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*DeviceStatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*InstallationState) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg device, method (*InstallationState) MakeVDLTarget() vdl.Target
 pkg device, method (*InstallationState) Set(string) error
 pkg device, method (*InstallationStateTarget) FromEnumLabel(string, *vdl.Type) error
+pkg device, method (*InstallationStateTarget) FromZero(*vdl.Type) error
 pkg device, method (*InstallationStatus) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg device, method (*InstallationStatus) MakeVDLTarget() vdl.Target
 pkg device, method (*InstallationStatusTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*InstallationStatusTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*InstallationStatusTarget) FromZero(*vdl.Type) error
 pkg device, method (*InstallationStatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*InstallationStatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*InstanceState) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg device, method (*InstanceState) MakeVDLTarget() vdl.Target
 pkg device, method (*InstanceState) Set(string) error
 pkg device, method (*InstanceStateTarget) FromEnumLabel(string, *vdl.Type) error
+pkg device, method (*InstanceStateTarget) FromZero(*vdl.Type) error
 pkg device, method (*InstanceStatus) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg device, method (*InstanceStatus) MakeVDLTarget() vdl.Target
 pkg device, method (*InstanceStatusTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*InstanceStatusTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*InstanceStatusTarget) FromZero(*vdl.Type) error
 pkg device, method (*InstanceStatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*InstanceStatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (*StatusTarget) FinishField(vdl.Target, vdl.Target) error
 pkg device, method (*StatusTarget) FinishFields(vdl.FieldsTarget) error
+pkg device, method (*StatusTarget) FromZero(*vdl.Type) error
 pkg device, method (*StatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg device, method (*StatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg device, method (BlessClientMessageAppBlessings) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -101,34 +112,30 @@
 pkg device, method (StatusInstance) Interface() interface{}
 pkg device, method (StatusInstance) MakeVDLTarget() vdl.Target
 pkg device, method (StatusInstance) Name() string
-pkg device, type ApplicationClientMethods interface { Debug, Delete, GetPermissions, Install, Instantiate, Kill, Revert, Run, SetPermissions, Status, Uninstall, Update, UpdateTo }
 pkg device, type ApplicationClientMethods interface, Debug(*context.T, ...rpc.CallOpt) (string, error)
 pkg device, type ApplicationClientMethods interface, Delete(*context.T, ...rpc.CallOpt) error
-pkg device, type ApplicationClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg device, type ApplicationClientMethods interface, Install(*context.T, string, Config, application.Packages, ...rpc.CallOpt) (string, error)
 pkg device, type ApplicationClientMethods interface, Instantiate(*context.T, ...rpc.CallOpt) (ApplicationInstantiateClientCall, error)
 pkg device, type ApplicationClientMethods interface, Kill(*context.T, time.Duration, ...rpc.CallOpt) error
 pkg device, type ApplicationClientMethods interface, Revert(*context.T, ...rpc.CallOpt) error
 pkg device, type ApplicationClientMethods interface, Run(*context.T, ...rpc.CallOpt) error
-pkg device, type ApplicationClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg device, type ApplicationClientMethods interface, Status(*context.T, ...rpc.CallOpt) (Status, error)
 pkg device, type ApplicationClientMethods interface, Uninstall(*context.T, ...rpc.CallOpt) error
 pkg device, type ApplicationClientMethods interface, Update(*context.T, ...rpc.CallOpt) error
 pkg device, type ApplicationClientMethods interface, UpdateTo(*context.T, string, ...rpc.CallOpt) error
-pkg device, type ApplicationClientStub interface { Debug, Delete, GetPermissions, Install, Instantiate, Kill, Revert, Run, SetPermissions, Status, Uninstall, Update, UpdateTo }
+pkg device, type ApplicationClientMethods interface, unexported methods
 pkg device, type ApplicationClientStub interface, Debug(*context.T, ...rpc.CallOpt) (string, error)
 pkg device, type ApplicationClientStub interface, Delete(*context.T, ...rpc.CallOpt) error
-pkg device, type ApplicationClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg device, type ApplicationClientStub interface, Install(*context.T, string, Config, application.Packages, ...rpc.CallOpt) (string, error)
 pkg device, type ApplicationClientStub interface, Instantiate(*context.T, ...rpc.CallOpt) (ApplicationInstantiateClientCall, error)
 pkg device, type ApplicationClientStub interface, Kill(*context.T, time.Duration, ...rpc.CallOpt) error
 pkg device, type ApplicationClientStub interface, Revert(*context.T, ...rpc.CallOpt) error
 pkg device, type ApplicationClientStub interface, Run(*context.T, ...rpc.CallOpt) error
-pkg device, type ApplicationClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg device, type ApplicationClientStub interface, Status(*context.T, ...rpc.CallOpt) (Status, error)
 pkg device, type ApplicationClientStub interface, Uninstall(*context.T, ...rpc.CallOpt) error
 pkg device, type ApplicationClientStub interface, Update(*context.T, ...rpc.CallOpt) error
 pkg device, type ApplicationClientStub interface, UpdateTo(*context.T, string, ...rpc.CallOpt) error
+pkg device, type ApplicationClientStub interface, unexported methods
 pkg device, type ApplicationInstantiateClientCall interface { Finish, RecvStream, SendStream }
 pkg device, type ApplicationInstantiateClientCall interface, Finish() (string, error)
 pkg device, type ApplicationInstantiateClientCall interface, RecvStream() interface {  Advance() bool;; Value() BlessServerMessage;; Err() error;}
@@ -136,34 +143,26 @@
 pkg device, type ApplicationInstantiateClientStream interface { RecvStream, SendStream }
 pkg device, type ApplicationInstantiateClientStream interface, RecvStream() interface {  Advance() bool;; Value() BlessServerMessage;; Err() error;}
 pkg device, type ApplicationInstantiateClientStream interface, SendStream() interface {  Send(item BlessClientMessage) error;; Close() error;}
-pkg device, type ApplicationInstantiateServerCall interface { GrantedBlessings, LocalEndpoint, RecvStream, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg device, type ApplicationInstantiateServerCall interface, GrantedBlessings() security.Blessings
-pkg device, type ApplicationInstantiateServerCall interface, LocalEndpoint() naming.Endpoint
 pkg device, type ApplicationInstantiateServerCall interface, RecvStream() interface {  Advance() bool;; Value() BlessClientMessage;; Err() error;}
-pkg device, type ApplicationInstantiateServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg device, type ApplicationInstantiateServerCall interface, Security() security.Call
 pkg device, type ApplicationInstantiateServerCall interface, SendStream() interface {  Send(item BlessServerMessage) error;}
-pkg device, type ApplicationInstantiateServerCall interface, Server() Server
-pkg device, type ApplicationInstantiateServerCall interface, Suffix() string
+pkg device, type ApplicationInstantiateServerCall interface, unexported methods
 pkg device, type ApplicationInstantiateServerCallStub struct
 pkg device, type ApplicationInstantiateServerCallStub struct, embedded rpc.StreamServerCall
 pkg device, type ApplicationInstantiateServerStream interface { RecvStream, SendStream }
 pkg device, type ApplicationInstantiateServerStream interface, RecvStream() interface {  Advance() bool;; Value() BlessClientMessage;; Err() error;}
 pkg device, type ApplicationInstantiateServerStream interface, SendStream() interface {  Send(item BlessServerMessage) error;}
-pkg device, type ApplicationServerMethods interface { Debug, Delete, GetPermissions, Install, Instantiate, Kill, Revert, Run, SetPermissions, Status, Uninstall, Update, UpdateTo }
 pkg device, type ApplicationServerMethods interface, Debug(*context.T, rpc.ServerCall) (string, error)
 pkg device, type ApplicationServerMethods interface, Delete(*context.T, rpc.ServerCall) error
-pkg device, type ApplicationServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
 pkg device, type ApplicationServerMethods interface, Install(*context.T, rpc.ServerCall, string, Config, application.Packages) (string, error)
 pkg device, type ApplicationServerMethods interface, Instantiate(*context.T, ApplicationInstantiateServerCall) (string, error)
 pkg device, type ApplicationServerMethods interface, Kill(*context.T, rpc.ServerCall, time.Duration) error
 pkg device, type ApplicationServerMethods interface, Revert(*context.T, rpc.ServerCall) error
 pkg device, type ApplicationServerMethods interface, Run(*context.T, rpc.ServerCall) error
-pkg device, type ApplicationServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
 pkg device, type ApplicationServerMethods interface, Status(*context.T, rpc.ServerCall) (Status, error)
 pkg device, type ApplicationServerMethods interface, Uninstall(*context.T, rpc.ServerCall) error
 pkg device, type ApplicationServerMethods interface, Update(*context.T, rpc.ServerCall) error
 pkg device, type ApplicationServerMethods interface, UpdateTo(*context.T, rpc.ServerCall, string) error
+pkg device, type ApplicationServerMethods interface, unexported methods
 pkg device, type ApplicationServerStub interface, Debug(*context.T, rpc.ServerCall) (string, error)
 pkg device, type ApplicationServerStub interface, Delete(*context.T, rpc.ServerCall) error
 pkg device, type ApplicationServerStub interface, Describe__() []rpc.InterfaceDesc
@@ -220,8 +219,8 @@
 pkg device, type BlessServerMessageTarget struct, embedded vdl.TargetBase
 pkg device, type ClaimableClientMethods interface { Claim }
 pkg device, type ClaimableClientMethods interface, Claim(*context.T, string, ...rpc.CallOpt) error
-pkg device, type ClaimableClientStub interface { Claim }
 pkg device, type ClaimableClientStub interface, Claim(*context.T, string, ...rpc.CallOpt) error
+pkg device, type ClaimableClientStub interface, unexported methods
 pkg device, type ClaimableServerMethods interface { Claim }
 pkg device, type ClaimableServerMethods interface, Claim(*context.T, rpc.ServerCall, string) error
 pkg device, type ClaimableServerStub interface, Describe__() []rpc.InterfaceDesc
@@ -238,12 +237,10 @@
 pkg device, type DescriptionTarget struct, Value *Description
 pkg device, type DescriptionTarget struct, embedded vdl.FieldsTargetBase
 pkg device, type DescriptionTarget struct, embedded vdl.TargetBase
-pkg device, type DeviceClientMethods interface { AssociateAccount, Debug, Delete, Describe, GetPermissions, Install, Instantiate, IsRunnable, Kill, ListAssociations, Reset, Revert, Run, SetPermissions, Status, TidyNow, Uninstall, Update, UpdateTo }
 pkg device, type DeviceClientMethods interface, AssociateAccount(*context.T, []string, string, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Debug(*context.T, ...rpc.CallOpt) (string, error)
 pkg device, type DeviceClientMethods interface, Delete(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Describe(*context.T, ...rpc.CallOpt) (Description, error)
-pkg device, type DeviceClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg device, type DeviceClientMethods interface, Install(*context.T, string, Config, application.Packages, ...rpc.CallOpt) (string, error)
 pkg device, type DeviceClientMethods interface, Instantiate(*context.T, ...rpc.CallOpt) (ApplicationInstantiateClientCall, error)
 pkg device, type DeviceClientMethods interface, IsRunnable(*context.T, binary.Description, ...rpc.CallOpt) (bool, error)
@@ -252,18 +249,15 @@
 pkg device, type DeviceClientMethods interface, Reset(*context.T, time.Duration, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Revert(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Run(*context.T, ...rpc.CallOpt) error
-pkg device, type DeviceClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Status(*context.T, ...rpc.CallOpt) (Status, error)
-pkg device, type DeviceClientMethods interface, TidyNow(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Uninstall(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, Update(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientMethods interface, UpdateTo(*context.T, string, ...rpc.CallOpt) error
-pkg device, type DeviceClientStub interface { AssociateAccount, Debug, Delete, Describe, GetPermissions, Install, Instantiate, IsRunnable, Kill, ListAssociations, Reset, Revert, Run, SetPermissions, Status, TidyNow, Uninstall, Update, UpdateTo }
+pkg device, type DeviceClientMethods interface, unexported methods
 pkg device, type DeviceClientStub interface, AssociateAccount(*context.T, []string, string, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Debug(*context.T, ...rpc.CallOpt) (string, error)
 pkg device, type DeviceClientStub interface, Delete(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Describe(*context.T, ...rpc.CallOpt) (Description, error)
-pkg device, type DeviceClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg device, type DeviceClientStub interface, Install(*context.T, string, Config, application.Packages, ...rpc.CallOpt) (string, error)
 pkg device, type DeviceClientStub interface, Instantiate(*context.T, ...rpc.CallOpt) (ApplicationInstantiateClientCall, error)
 pkg device, type DeviceClientStub interface, IsRunnable(*context.T, binary.Description, ...rpc.CallOpt) (bool, error)
@@ -272,18 +266,15 @@
 pkg device, type DeviceClientStub interface, Reset(*context.T, time.Duration, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Revert(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Run(*context.T, ...rpc.CallOpt) error
-pkg device, type DeviceClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Status(*context.T, ...rpc.CallOpt) (Status, error)
-pkg device, type DeviceClientStub interface, TidyNow(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Uninstall(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, Update(*context.T, ...rpc.CallOpt) error
 pkg device, type DeviceClientStub interface, UpdateTo(*context.T, string, ...rpc.CallOpt) error
-pkg device, type DeviceServerMethods interface { AssociateAccount, Debug, Delete, Describe, GetPermissions, Install, Instantiate, IsRunnable, Kill, ListAssociations, Reset, Revert, Run, SetPermissions, Status, TidyNow, Uninstall, Update, UpdateTo }
+pkg device, type DeviceClientStub interface, unexported methods
 pkg device, type DeviceServerMethods interface, AssociateAccount(*context.T, rpc.ServerCall, []string, string) error
 pkg device, type DeviceServerMethods interface, Debug(*context.T, rpc.ServerCall) (string, error)
 pkg device, type DeviceServerMethods interface, Delete(*context.T, rpc.ServerCall) error
 pkg device, type DeviceServerMethods interface, Describe(*context.T, rpc.ServerCall) (Description, error)
-pkg device, type DeviceServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
 pkg device, type DeviceServerMethods interface, Install(*context.T, rpc.ServerCall, string, Config, application.Packages) (string, error)
 pkg device, type DeviceServerMethods interface, Instantiate(*context.T, ApplicationInstantiateServerCall) (string, error)
 pkg device, type DeviceServerMethods interface, IsRunnable(*context.T, rpc.ServerCall, binary.Description) (bool, error)
@@ -292,12 +283,11 @@
 pkg device, type DeviceServerMethods interface, Reset(*context.T, rpc.ServerCall, time.Duration) error
 pkg device, type DeviceServerMethods interface, Revert(*context.T, rpc.ServerCall) error
 pkg device, type DeviceServerMethods interface, Run(*context.T, rpc.ServerCall) error
-pkg device, type DeviceServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
 pkg device, type DeviceServerMethods interface, Status(*context.T, rpc.ServerCall) (Status, error)
-pkg device, type DeviceServerMethods interface, TidyNow(*context.T, rpc.ServerCall) error
 pkg device, type DeviceServerMethods interface, Uninstall(*context.T, rpc.ServerCall) error
 pkg device, type DeviceServerMethods interface, Update(*context.T, rpc.ServerCall) error
 pkg device, type DeviceServerMethods interface, UpdateTo(*context.T, rpc.ServerCall, string) error
+pkg device, type DeviceServerMethods interface, unexported methods
 pkg device, type DeviceServerStub interface, AssociateAccount(*context.T, rpc.ServerCall, []string, string) error
 pkg device, type DeviceServerStub interface, Debug(*context.T, rpc.ServerCall) (string, error)
 pkg device, type DeviceServerStub interface, Delete(*context.T, rpc.ServerCall) error
diff --git a/services/device/device.vdl.go b/services/device/device.vdl.go
index cda04df..d672d88 100644
--- a/services/device/device.vdl.go
+++ b/services/device/device.vdl.go
@@ -114,6 +114,10 @@
 
 	return nil
 }
+func (t *ConfigTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Config(nil)
+	return nil
+}
 
 // InstallationState describes the states that an installation can be in at any
 // time.
@@ -191,11 +195,15 @@
 	case "Uninstalled":
 		*t.Value = 1
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/device.InstallationState", src)
+		return fmt.Errorf("label %s not in enum InstallationState", src)
 	}
 
 	return nil
 }
+func (t *InstallationStateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = InstallationStateActive
+	return nil
+}
 
 // InstanceState describes the states that an instance can be in at any
 // time.
@@ -305,11 +313,15 @@
 	case "Deleted":
 		*t.Value = 5
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/device.InstanceState", src)
+		return fmt.Errorf("label %s not in enum InstanceState", src)
 	}
 
 	return nil
 }
+func (t *InstanceStateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = InstanceStateLaunching
+	return nil
+}
 
 // InstanceStatus specifies the Status returned by the Application Status method
 // for instance objects.
@@ -328,29 +340,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.State == InstanceStateLaunching)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Version")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Version")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Version), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Version == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Version), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -400,6 +427,10 @@
 
 	return nil
 }
+func (t *InstanceStatusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = InstanceStatus{}
+	return nil
+}
 
 // InstallationStatus specifies the Status returned by the Application Status
 // method for installation objects.
@@ -418,29 +449,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.State == InstallationStateActive)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Version")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Version")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Version), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Version == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Version), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -490,6 +536,10 @@
 
 	return nil
 }
+func (t *InstallationStatusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = InstallationStatus{}
+	return nil
+}
 
 // DeviceStatus specifies the Status returned by the Application Status method
 // for the device service object.
@@ -508,29 +558,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.State == InstanceStateLaunching)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Version")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Version")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Version), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Version == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Version), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -580,6 +645,10 @@
 
 	return nil
 }
+func (t *DeviceStatusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = DeviceStatus{}
+	return nil
+}
 
 type (
 	// Status represents any single field of the Status union type.
@@ -757,6 +826,10 @@
 
 	return nil
 }
+func (t *StatusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Status(StatusInstance{})
+	return nil
+}
 
 type statusTargetFactory struct{}
 
@@ -868,6 +941,10 @@
 
 	return nil
 }
+func (t *BlessServerMessageTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlessServerMessage(BlessServerMessageInstancePublicKey{})
+	return nil
+}
 
 type blessServerMessageTargetFactory struct{}
 
@@ -989,6 +1066,10 @@
 
 	return nil
 }
+func (t *BlessClientMessageTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlessClientMessage(BlessClientMessageAppBlessings{})
+	return nil
+}
 
 type blessClientMessageTargetFactory struct{}
 
@@ -1022,31 +1103,41 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Profiles")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget4, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.Profiles))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.Profiles) == 0 {
+			var4 = true
 		}
-		for key6 := range m.Profiles {
-			keyTarget5, err := setTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget5, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.Profiles))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget5.FromString(string(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
+			for key7 := range m.Profiles {
+				keyTarget6, err := setTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromString(string(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget5.FinishKey(keyTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishSet(setTarget5); err != nil {
 				return err
 			}
-			if err := setTarget4.FinishKey(keyTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishSet(setTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -1093,6 +1184,10 @@
 
 	return nil
 }
+func (t *DescriptionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Description{}
+	return nil
+}
 
 // map[string]struct{}
 type __VDLTarget1_set struct {
@@ -1128,6 +1223,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]struct{}(nil)
+	return nil
+}
 
 // Association is a tuple containing an association between a Vanadium
 // identity and a system account name.
@@ -1146,28 +1245,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("IdentityName")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.IdentityName), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.IdentityName == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.IdentityName), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("AccountName")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("AccountName")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.AccountName), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.AccountName == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.AccountName), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1217,21 +1331,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroConfig             = Config(nil)
-	__VDLZeroInstallationState  = InstallationStateActive
-	__VDLZeroInstanceState      = InstanceStateLaunching
-	__VDLZeroInstanceStatus     = InstanceStatus{}
-	__VDLZeroInstallationStatus = InstallationStatus{}
-	__VDLZeroDeviceStatus       = DeviceStatus{}
-	__VDLZeroStatus             = Status(StatusInstance{})
-	__VDLZeroBlessServerMessage = BlessServerMessage(BlessServerMessageInstancePublicKey{})
-	__VDLZeroBlessClientMessage = BlessClientMessage(BlessClientMessageAppBlessings{})
-	__VDLZeroDescription        = Description{}
-	__VDLZeroAssociation        = Association{}
-)
+func (t *AssociationTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Association{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Interface definitions
@@ -2967,6 +3070,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Config)(nil))
diff --git a/services/groups/.api b/services/groups/.api
index b12306e..d586a46 100644
--- a/services/groups/.api
+++ b/services/groups/.api
@@ -16,25 +16,30 @@
 pkg groups, method (*Approximation) MakeVDLTarget() vdl.Target
 pkg groups, method (*ApproximationTarget) FinishField(vdl.Target, vdl.Target) error
 pkg groups, method (*ApproximationTarget) FinishFields(vdl.FieldsTarget) error
+pkg groups, method (*ApproximationTarget) FromZero(*vdl.Type) error
 pkg groups, method (*ApproximationTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg groups, method (*ApproximationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg groups, method (*ApproximationType) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg groups, method (*ApproximationType) MakeVDLTarget() vdl.Target
 pkg groups, method (*ApproximationType) Set(string) error
 pkg groups, method (*ApproximationTypeTarget) FromEnumLabel(string, *vdl.Type) error
+pkg groups, method (*ApproximationTypeTarget) FromZero(*vdl.Type) error
 pkg groups, method (*BlessingPatternChunk) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg groups, method (*BlessingPatternChunk) MakeVDLTarget() vdl.Target
 pkg groups, method (*BlessingPatternChunkTarget) FromString(string, *vdl.Type) error
+pkg groups, method (*BlessingPatternChunkTarget) FromZero(*vdl.Type) error
 pkg groups, method (*GetRequest) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg groups, method (*GetRequest) MakeVDLTarget() vdl.Target
 pkg groups, method (*GetRequestTarget) FinishField(vdl.Target, vdl.Target) error
 pkg groups, method (*GetRequestTarget) FinishFields(vdl.FieldsTarget) error
+pkg groups, method (*GetRequestTarget) FromZero(*vdl.Type) error
 pkg groups, method (*GetRequestTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg groups, method (*GetRequestTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg groups, method (*GetResponse) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg groups, method (*GetResponse) MakeVDLTarget() vdl.Target
 pkg groups, method (*GetResponseTarget) FinishField(vdl.Target, vdl.Target) error
 pkg groups, method (*GetResponseTarget) FinishFields(vdl.FieldsTarget) error
+pkg groups, method (*GetResponseTarget) FromZero(*vdl.Type) error
 pkg groups, method (*GetResponseTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg groups, method (*GetResponseTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg groups, method (ApproximationType) String() string
@@ -64,51 +69,45 @@
 pkg groups, type GetResponseTarget struct, Value *GetResponse
 pkg groups, type GetResponseTarget struct, embedded vdl.FieldsTargetBase
 pkg groups, type GetResponseTarget struct, embedded vdl.TargetBase
-pkg groups, type GroupClientMethods interface { Add, Create, Delete, Get, GetPermissions, Relate, Remove, SetPermissions }
 pkg groups, type GroupClientMethods interface, Add(*context.T, BlessingPatternChunk, string, ...rpc.CallOpt) error
 pkg groups, type GroupClientMethods interface, Create(*context.T, access.Permissions, []BlessingPatternChunk, ...rpc.CallOpt) error
 pkg groups, type GroupClientMethods interface, Delete(*context.T, string, ...rpc.CallOpt) error
 pkg groups, type GroupClientMethods interface, Get(*context.T, GetRequest, string, ...rpc.CallOpt) (GetResponse, string, error)
-pkg groups, type GroupClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg groups, type GroupClientMethods interface, Relate(*context.T, map[string]struct{}, ApproximationType, string, map[string]struct{}, ...rpc.CallOpt) (map[string]struct{}, []Approximation, string, error)
 pkg groups, type GroupClientMethods interface, Remove(*context.T, BlessingPatternChunk, string, ...rpc.CallOpt) error
-pkg groups, type GroupClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
-pkg groups, type GroupClientStub interface { Add, Create, Delete, Get, GetPermissions, Relate, Remove, SetPermissions }
+pkg groups, type GroupClientMethods interface, unexported methods
 pkg groups, type GroupClientStub interface, Add(*context.T, BlessingPatternChunk, string, ...rpc.CallOpt) error
 pkg groups, type GroupClientStub interface, Create(*context.T, access.Permissions, []BlessingPatternChunk, ...rpc.CallOpt) error
 pkg groups, type GroupClientStub interface, Delete(*context.T, string, ...rpc.CallOpt) error
 pkg groups, type GroupClientStub interface, Get(*context.T, GetRequest, string, ...rpc.CallOpt) (GetResponse, string, error)
-pkg groups, type GroupClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg groups, type GroupClientStub interface, Relate(*context.T, map[string]struct{}, ApproximationType, string, map[string]struct{}, ...rpc.CallOpt) (map[string]struct{}, []Approximation, string, error)
 pkg groups, type GroupClientStub interface, Remove(*context.T, BlessingPatternChunk, string, ...rpc.CallOpt) error
-pkg groups, type GroupClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
+pkg groups, type GroupClientStub interface, unexported methods
 pkg groups, type GroupReaderClientMethods interface { Get, Relate }
 pkg groups, type GroupReaderClientMethods interface, Get(*context.T, GetRequest, string, ...rpc.CallOpt) (GetResponse, string, error)
 pkg groups, type GroupReaderClientMethods interface, Relate(*context.T, map[string]struct{}, ApproximationType, string, map[string]struct{}, ...rpc.CallOpt) (map[string]struct{}, []Approximation, string, error)
-pkg groups, type GroupReaderClientStub interface { Get, Relate }
 pkg groups, type GroupReaderClientStub interface, Get(*context.T, GetRequest, string, ...rpc.CallOpt) (GetResponse, string, error)
 pkg groups, type GroupReaderClientStub interface, Relate(*context.T, map[string]struct{}, ApproximationType, string, map[string]struct{}, ...rpc.CallOpt) (map[string]struct{}, []Approximation, string, error)
+pkg groups, type GroupReaderClientStub interface, unexported methods
 pkg groups, type GroupReaderServerMethods interface { Get, Relate }
 pkg groups, type GroupReaderServerMethods interface, Get(*context.T, rpc.ServerCall, GetRequest, string) (GetResponse, string, error)
 pkg groups, type GroupReaderServerMethods interface, Relate(*context.T, rpc.ServerCall, map[string]struct{}, ApproximationType, string, map[string]struct{}) (map[string]struct{}, []Approximation, string, error)
 pkg groups, type GroupReaderServerStub interface, Describe__() []rpc.InterfaceDesc
 pkg groups, type GroupReaderServerStub interface, unexported methods
 pkg groups, type GroupReaderServerStubMethods GroupReaderServerMethods
-pkg groups, type GroupServerMethods interface { Add, Create, Delete, Get, GetPermissions, Relate, Remove, SetPermissions }
 pkg groups, type GroupServerMethods interface, Add(*context.T, rpc.ServerCall, BlessingPatternChunk, string) error
 pkg groups, type GroupServerMethods interface, Create(*context.T, rpc.ServerCall, access.Permissions, []BlessingPatternChunk) error
 pkg groups, type GroupServerMethods interface, Delete(*context.T, rpc.ServerCall, string) error
 pkg groups, type GroupServerMethods interface, Get(*context.T, rpc.ServerCall, GetRequest, string) (GetResponse, string, error)
-pkg groups, type GroupServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
 pkg groups, type GroupServerMethods interface, Relate(*context.T, rpc.ServerCall, map[string]struct{}, ApproximationType, string, map[string]struct{}) (map[string]struct{}, []Approximation, string, error)
 pkg groups, type GroupServerMethods interface, Remove(*context.T, rpc.ServerCall, BlessingPatternChunk, string) error
-pkg groups, type GroupServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
+pkg groups, type GroupServerMethods interface, unexported methods
 pkg groups, type GroupServerStub interface, Describe__() []rpc.InterfaceDesc
 pkg groups, type GroupServerStub interface, unexported methods
 pkg groups, type GroupServerStubMethods GroupServerMethods
 pkg groups, var ApproximationTypeAll [...]ApproximationType
-pkg groups, var ErrCycleFound verror.IDAction
-pkg groups, var ErrExcessiveContention verror.IDAction
-pkg groups, var ErrNoBlessings verror.IDAction
+pkg groups, var ErrCycleFound unknown-type
+pkg groups, var ErrExcessiveContention unknown-type
+pkg groups, var ErrNoBlessings unknown-type
 pkg groups, var GroupDesc rpc.InterfaceDesc
 pkg groups, var GroupReaderDesc rpc.InterfaceDesc
diff --git a/services/groups/groups.vdl.go b/services/groups/groups.vdl.go
index 6112140..2bc0a48 100644
--- a/services/groups/groups.vdl.go
+++ b/services/groups/groups.vdl.go
@@ -63,6 +63,10 @@
 
 	return nil
 }
+func (t *BlessingPatternChunkTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlessingPatternChunk("")
+	return nil
+}
 
 type GetRequest struct {
 }
@@ -77,7 +81,6 @@
 	if err != nil {
 		return err
 	}
-
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -114,6 +117,10 @@
 
 	return nil
 }
+func (t *GetRequestTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GetRequest{}
+	return nil
+}
 
 type GetResponse struct {
 	Entries map[BlessingPatternChunk]struct{}
@@ -129,32 +136,42 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Entries")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget4, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.Entries))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.Entries) == 0 {
+			var4 = true
 		}
-		for key6 := range m.Entries {
-			keyTarget5, err := setTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget5, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.Entries))
 			if err != nil {
 				return err
 			}
+			for key7 := range m.Entries {
+				keyTarget6, err := setTarget5.StartKey()
+				if err != nil {
+					return err
+				}
 
-			if err := key6.FillVDLTarget(keyTarget5, tt.NonOptional().Field(0).Type.Key()); err != nil {
+				if err := key7.FillVDLTarget(keyTarget6, tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget5.FinishKey(keyTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishSet(setTarget5); err != nil {
 				return err
 			}
-			if err := setTarget4.FinishKey(keyTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishSet(setTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -201,6 +218,10 @@
 
 	return nil
 }
+func (t *GetResponseTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GetResponse{}
+	return nil
+}
 
 // map[BlessingPatternChunk]struct{}
 type __VDLTarget1_set struct {
@@ -236,6 +257,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[BlessingPatternChunk]struct{}(nil)
+	return nil
+}
 
 // ApproximationType defines the type of approximation desired when a Relate
 // call encounters an error (inaccessible or undefined group in a blessing
@@ -316,11 +341,15 @@
 	case "Over":
 		*t.Value = 1
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/groups.ApproximationType", src)
+		return fmt.Errorf("label %s not in enum ApproximationType", src)
 	}
 
 	return nil
 }
+func (t *ApproximationTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ApproximationTypeUnder
+	return nil
+}
 
 // Approximation contains information about membership approximations made
 // during a Relate call.
@@ -339,28 +368,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Reason")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Reason), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Reason == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Reason), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Details")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Details")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Details), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Details == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Details), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -410,15 +454,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroBlessingPatternChunk = BlessingPatternChunk("")
-	__VDLZeroGetRequest           = GetRequest{}
-	__VDLZeroGetResponse          = GetResponse{}
-	__VDLZeroApproximationType    = ApproximationTypeUnder
-	__VDLZeroApproximation        = Approximation{}
-)
+func (t *ApproximationTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Approximation{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Error definitions
@@ -958,6 +997,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*BlessingPatternChunk)(nil))
diff --git a/services/logreader/.api b/services/logreader/.api
index 098c85e..7bd3cd7 100644
--- a/services/logreader/.api
+++ b/services/logreader/.api
@@ -5,6 +5,7 @@
 pkg logreader, method (*LogEntry) MakeVDLTarget() vdl.Target
 pkg logreader, method (*LogEntryTarget) FinishField(vdl.Target, vdl.Target) error
 pkg logreader, method (*LogEntryTarget) FinishFields(vdl.FieldsTarget) error
+pkg logreader, method (*LogEntryTarget) FromZero(*vdl.Type) error
 pkg logreader, method (*LogEntryTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg logreader, method (*LogEntryTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg logreader, method (*LogFileReadLogServerCallStub) Init(rpc.StreamServerCall)
@@ -19,22 +20,16 @@
 pkg logreader, type LogFileClientMethods interface { ReadLog, Size }
 pkg logreader, type LogFileClientMethods interface, ReadLog(*context.T, int64, int32, bool, ...rpc.CallOpt) (LogFileReadLogClientCall, error)
 pkg logreader, type LogFileClientMethods interface, Size(*context.T, ...rpc.CallOpt) (int64, error)
-pkg logreader, type LogFileClientStub interface { ReadLog, Size }
 pkg logreader, type LogFileClientStub interface, ReadLog(*context.T, int64, int32, bool, ...rpc.CallOpt) (LogFileReadLogClientCall, error)
 pkg logreader, type LogFileClientStub interface, Size(*context.T, ...rpc.CallOpt) (int64, error)
+pkg logreader, type LogFileClientStub interface, unexported methods
 pkg logreader, type LogFileReadLogClientCall interface { Finish, RecvStream }
 pkg logreader, type LogFileReadLogClientCall interface, Finish() (int64, error)
 pkg logreader, type LogFileReadLogClientCall interface, RecvStream() interface {  Advance() bool;; Value() LogEntry;; Err() error;}
 pkg logreader, type LogFileReadLogClientStream interface { RecvStream }
 pkg logreader, type LogFileReadLogClientStream interface, RecvStream() interface {  Advance() bool;; Value() LogEntry;; Err() error;}
-pkg logreader, type LogFileReadLogServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg logreader, type LogFileReadLogServerCall interface, GrantedBlessings() security.Blessings
-pkg logreader, type LogFileReadLogServerCall interface, LocalEndpoint() naming.Endpoint
-pkg logreader, type LogFileReadLogServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg logreader, type LogFileReadLogServerCall interface, Security() security.Call
 pkg logreader, type LogFileReadLogServerCall interface, SendStream() interface {  Send(item LogEntry) error;}
-pkg logreader, type LogFileReadLogServerCall interface, Server() Server
-pkg logreader, type LogFileReadLogServerCall interface, Suffix() string
+pkg logreader, type LogFileReadLogServerCall interface, unexported methods
 pkg logreader, type LogFileReadLogServerCallStub struct
 pkg logreader, type LogFileReadLogServerCallStub struct, embedded rpc.StreamServerCall
 pkg logreader, type LogFileReadLogServerStream interface { SendStream }
diff --git a/services/logreader/logreader.vdl.go b/services/logreader/logreader.vdl.go
index fa16d7a..9a6d075 100644
--- a/services/logreader/logreader.vdl.go
+++ b/services/logreader/logreader.vdl.go
@@ -41,28 +41,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Position")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Position), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Position == int64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Position), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Line")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Line")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Line), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Line == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Line), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -112,11 +127,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroLogEntry = LogEntry{}
-)
+func (t *LogEntryTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = LogEntry{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -435,6 +449,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*LogEntry)(nil))
diff --git a/services/mounttable/.api b/services/mounttable/.api
index da94747..5cc9a8f 100644
--- a/services/mounttable/.api
+++ b/services/mounttable/.api
@@ -8,27 +8,22 @@
 pkg mounttable, method (*Tag) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg mounttable, method (*Tag) MakeVDLTarget() vdl.Target
 pkg mounttable, method (*TagTarget) FromString(string, *vdl.Type) error
-pkg mounttable, type MountTableClientMethods interface { Delete, GetPermissions, Mount, ResolveStep, SetPermissions, Unmount }
+pkg mounttable, method (*TagTarget) FromZero(*vdl.Type) error
 pkg mounttable, type MountTableClientMethods interface, Delete(*context.T, bool, ...rpc.CallOpt) error
-pkg mounttable, type MountTableClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg mounttable, type MountTableClientMethods interface, Mount(*context.T, string, uint32, naming.MountFlag, ...rpc.CallOpt) error
 pkg mounttable, type MountTableClientMethods interface, ResolveStep(*context.T, ...rpc.CallOpt) (naming.MountEntry, error)
-pkg mounttable, type MountTableClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg mounttable, type MountTableClientMethods interface, Unmount(*context.T, string, ...rpc.CallOpt) error
-pkg mounttable, type MountTableClientStub interface { Delete, GetPermissions, Mount, ResolveStep, SetPermissions, Unmount }
+pkg mounttable, type MountTableClientMethods interface, unexported methods
 pkg mounttable, type MountTableClientStub interface, Delete(*context.T, bool, ...rpc.CallOpt) error
-pkg mounttable, type MountTableClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg mounttable, type MountTableClientStub interface, Mount(*context.T, string, uint32, naming.MountFlag, ...rpc.CallOpt) error
 pkg mounttable, type MountTableClientStub interface, ResolveStep(*context.T, ...rpc.CallOpt) (naming.MountEntry, error)
-pkg mounttable, type MountTableClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg mounttable, type MountTableClientStub interface, Unmount(*context.T, string, ...rpc.CallOpt) error
-pkg mounttable, type MountTableServerMethods interface { Delete, GetPermissions, Mount, ResolveStep, SetPermissions, Unmount }
+pkg mounttable, type MountTableClientStub interface, unexported methods
 pkg mounttable, type MountTableServerMethods interface, Delete(*context.T, rpc.ServerCall, bool) error
-pkg mounttable, type MountTableServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
 pkg mounttable, type MountTableServerMethods interface, Mount(*context.T, rpc.ServerCall, string, uint32, naming.MountFlag) error
 pkg mounttable, type MountTableServerMethods interface, ResolveStep(*context.T, rpc.ServerCall) (naming.MountEntry, error)
-pkg mounttable, type MountTableServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
 pkg mounttable, type MountTableServerMethods interface, Unmount(*context.T, rpc.ServerCall, string) error
+pkg mounttable, type MountTableServerMethods interface, unexported methods
 pkg mounttable, type MountTableServerStub interface, Describe__() []rpc.InterfaceDesc
 pkg mounttable, type MountTableServerStub interface, unexported methods
 pkg mounttable, type MountTableServerStubMethods MountTableServerMethods
diff --git a/services/mounttable/mounttable.vdl.go b/services/mounttable/mounttable.vdl.go
index b58b1ba..c3fa8a5 100644
--- a/services/mounttable/mounttable.vdl.go
+++ b/services/mounttable/mounttable.vdl.go
@@ -65,11 +65,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroTag = Tag("")
-)
+func (t *TagTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Tag("")
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -419,6 +418,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Tag)(nil))
diff --git a/services/permissions/.api b/services/permissions/.api
index 9cf3f2b..795c0c9 100644
--- a/services/permissions/.api
+++ b/services/permissions/.api
@@ -3,9 +3,9 @@
 pkg permissions, type ObjectClientMethods interface { GetPermissions, SetPermissions }
 pkg permissions, type ObjectClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg permissions, type ObjectClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
-pkg permissions, type ObjectClientStub interface { GetPermissions, SetPermissions }
 pkg permissions, type ObjectClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg permissions, type ObjectClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
+pkg permissions, type ObjectClientStub interface, unexported methods
 pkg permissions, type ObjectServerMethods interface { GetPermissions, SetPermissions }
 pkg permissions, type ObjectServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
 pkg permissions, type ObjectServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
diff --git a/services/permissions/permissions.vdl.go b/services/permissions/permissions.vdl.go
index 6e56440..1666c3e 100644
--- a/services/permissions/permissions.vdl.go
+++ b/services/permissions/permissions.vdl.go
@@ -299,6 +299,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/services/pprof/.api b/services/pprof/.api
index f828347..e5a7825 100644
--- a/services/pprof/.api
+++ b/services/pprof/.api
@@ -10,25 +10,19 @@
 pkg pprof, type PProfClientMethods interface, Profile(*context.T, string, int32, ...rpc.CallOpt) (PProfProfileClientCall, error)
 pkg pprof, type PProfClientMethods interface, Profiles(*context.T, ...rpc.CallOpt) ([]string, error)
 pkg pprof, type PProfClientMethods interface, Symbol(*context.T, []uint64, ...rpc.CallOpt) ([]string, error)
-pkg pprof, type PProfClientStub interface { CmdLine, CpuProfile, Profile, Profiles, Symbol }
 pkg pprof, type PProfClientStub interface, CmdLine(*context.T, ...rpc.CallOpt) ([]string, error)
 pkg pprof, type PProfClientStub interface, CpuProfile(*context.T, int32, ...rpc.CallOpt) (PProfCpuProfileClientCall, error)
 pkg pprof, type PProfClientStub interface, Profile(*context.T, string, int32, ...rpc.CallOpt) (PProfProfileClientCall, error)
 pkg pprof, type PProfClientStub interface, Profiles(*context.T, ...rpc.CallOpt) ([]string, error)
 pkg pprof, type PProfClientStub interface, Symbol(*context.T, []uint64, ...rpc.CallOpt) ([]string, error)
+pkg pprof, type PProfClientStub interface, unexported methods
 pkg pprof, type PProfCpuProfileClientCall interface { Finish, RecvStream }
 pkg pprof, type PProfCpuProfileClientCall interface, Finish() error
 pkg pprof, type PProfCpuProfileClientCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
 pkg pprof, type PProfCpuProfileClientStream interface { RecvStream }
 pkg pprof, type PProfCpuProfileClientStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
-pkg pprof, type PProfCpuProfileServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg pprof, type PProfCpuProfileServerCall interface, GrantedBlessings() security.Blessings
-pkg pprof, type PProfCpuProfileServerCall interface, LocalEndpoint() naming.Endpoint
-pkg pprof, type PProfCpuProfileServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg pprof, type PProfCpuProfileServerCall interface, Security() security.Call
 pkg pprof, type PProfCpuProfileServerCall interface, SendStream() interface {  Send(item []byte) error;}
-pkg pprof, type PProfCpuProfileServerCall interface, Server() Server
-pkg pprof, type PProfCpuProfileServerCall interface, Suffix() string
+pkg pprof, type PProfCpuProfileServerCall interface, unexported methods
 pkg pprof, type PProfCpuProfileServerCallStub struct
 pkg pprof, type PProfCpuProfileServerCallStub struct, embedded rpc.StreamServerCall
 pkg pprof, type PProfCpuProfileServerStream interface { SendStream }
@@ -38,14 +32,8 @@
 pkg pprof, type PProfProfileClientCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
 pkg pprof, type PProfProfileClientStream interface { RecvStream }
 pkg pprof, type PProfProfileClientStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
-pkg pprof, type PProfProfileServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg pprof, type PProfProfileServerCall interface, GrantedBlessings() security.Blessings
-pkg pprof, type PProfProfileServerCall interface, LocalEndpoint() naming.Endpoint
-pkg pprof, type PProfProfileServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg pprof, type PProfProfileServerCall interface, Security() security.Call
 pkg pprof, type PProfProfileServerCall interface, SendStream() interface {  Send(item []byte) error;}
-pkg pprof, type PProfProfileServerCall interface, Server() Server
-pkg pprof, type PProfProfileServerCall interface, Suffix() string
+pkg pprof, type PProfProfileServerCall interface, unexported methods
 pkg pprof, type PProfProfileServerCallStub struct
 pkg pprof, type PProfProfileServerCallStub struct, embedded rpc.StreamServerCall
 pkg pprof, type PProfProfileServerStream interface { SendStream }
diff --git a/services/pprof/pprof.vdl.go b/services/pprof/pprof.vdl.go
index 9b48917..9efeb4d 100644
--- a/services/pprof/pprof.vdl.go
+++ b/services/pprof/pprof.vdl.go
@@ -493,6 +493,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/services/repository/.api b/services/repository/.api
index 6f4ff8a..e92907c 100644
--- a/services/repository/.api
+++ b/services/repository/.api
@@ -12,70 +12,50 @@
 pkg repository, method (*MediaInfo) MakeVDLTarget() vdl.Target
 pkg repository, method (*MediaInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg repository, method (*MediaInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg repository, method (*MediaInfoTarget) FromZero(*vdl.Type) error
 pkg repository, method (*MediaInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg repository, method (*MediaInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
-pkg repository, type ApplicationClientMethods interface { GetPermissions, Match, SetPermissions, TidyNow }
-pkg repository, type ApplicationClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
 pkg repository, type ApplicationClientMethods interface, Match(*context.T, []string, ...rpc.CallOpt) (application.Envelope, error)
-pkg repository, type ApplicationClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
-pkg repository, type ApplicationClientMethods interface, TidyNow(*context.T, ...rpc.CallOpt) error
-pkg repository, type ApplicationClientStub interface { GetPermissions, Match, SetPermissions, TidyNow }
-pkg repository, type ApplicationClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
+pkg repository, type ApplicationClientMethods interface, unexported methods
 pkg repository, type ApplicationClientStub interface, Match(*context.T, []string, ...rpc.CallOpt) (application.Envelope, error)
-pkg repository, type ApplicationClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
-pkg repository, type ApplicationClientStub interface, TidyNow(*context.T, ...rpc.CallOpt) error
-pkg repository, type ApplicationServerMethods interface { GetPermissions, Match, SetPermissions, TidyNow }
-pkg repository, type ApplicationServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
+pkg repository, type ApplicationClientStub interface, unexported methods
 pkg repository, type ApplicationServerMethods interface, Match(*context.T, rpc.ServerCall, []string) (application.Envelope, error)
-pkg repository, type ApplicationServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
-pkg repository, type ApplicationServerMethods interface, TidyNow(*context.T, rpc.ServerCall) error
+pkg repository, type ApplicationServerMethods interface, unexported methods
 pkg repository, type ApplicationServerStub interface, Describe__() []rpc.InterfaceDesc
 pkg repository, type ApplicationServerStub interface, unexported methods
 pkg repository, type ApplicationServerStubMethods ApplicationServerMethods
-pkg repository, type BinaryClientMethods interface { Create, Delete, Download, DownloadUrl, GetPermissions, SetPermissions, Stat, Upload }
 pkg repository, type BinaryClientMethods interface, Create(*context.T, int32, MediaInfo, ...rpc.CallOpt) error
 pkg repository, type BinaryClientMethods interface, Delete(*context.T, ...rpc.CallOpt) error
 pkg repository, type BinaryClientMethods interface, Download(*context.T, int32, ...rpc.CallOpt) (BinaryDownloadClientCall, error)
 pkg repository, type BinaryClientMethods interface, DownloadUrl(*context.T, ...rpc.CallOpt) (string, int64, error)
-pkg repository, type BinaryClientMethods interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
-pkg repository, type BinaryClientMethods interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg repository, type BinaryClientMethods interface, Stat(*context.T, ...rpc.CallOpt) ([]binary.PartInfo, MediaInfo, error)
 pkg repository, type BinaryClientMethods interface, Upload(*context.T, int32, ...rpc.CallOpt) (BinaryUploadClientCall, error)
-pkg repository, type BinaryClientStub interface { Create, Delete, Download, DownloadUrl, GetPermissions, SetPermissions, Stat, Upload }
+pkg repository, type BinaryClientMethods interface, unexported methods
 pkg repository, type BinaryClientStub interface, Create(*context.T, int32, MediaInfo, ...rpc.CallOpt) error
 pkg repository, type BinaryClientStub interface, Delete(*context.T, ...rpc.CallOpt) error
 pkg repository, type BinaryClientStub interface, Download(*context.T, int32, ...rpc.CallOpt) (BinaryDownloadClientCall, error)
 pkg repository, type BinaryClientStub interface, DownloadUrl(*context.T, ...rpc.CallOpt) (string, int64, error)
-pkg repository, type BinaryClientStub interface, GetPermissions(*context.T, ...rpc.CallOpt) (access.Permissions, string, error)
-pkg repository, type BinaryClientStub interface, SetPermissions(*context.T, access.Permissions, string, ...rpc.CallOpt) error
 pkg repository, type BinaryClientStub interface, Stat(*context.T, ...rpc.CallOpt) ([]binary.PartInfo, MediaInfo, error)
 pkg repository, type BinaryClientStub interface, Upload(*context.T, int32, ...rpc.CallOpt) (BinaryUploadClientCall, error)
+pkg repository, type BinaryClientStub interface, unexported methods
 pkg repository, type BinaryDownloadClientCall interface { Finish, RecvStream }
 pkg repository, type BinaryDownloadClientCall interface, Finish() error
 pkg repository, type BinaryDownloadClientCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
 pkg repository, type BinaryDownloadClientStream interface { RecvStream }
 pkg repository, type BinaryDownloadClientStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
-pkg repository, type BinaryDownloadServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg repository, type BinaryDownloadServerCall interface, GrantedBlessings() security.Blessings
-pkg repository, type BinaryDownloadServerCall interface, LocalEndpoint() naming.Endpoint
-pkg repository, type BinaryDownloadServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg repository, type BinaryDownloadServerCall interface, Security() security.Call
 pkg repository, type BinaryDownloadServerCall interface, SendStream() interface {  Send(item []byte) error;}
-pkg repository, type BinaryDownloadServerCall interface, Server() Server
-pkg repository, type BinaryDownloadServerCall interface, Suffix() string
+pkg repository, type BinaryDownloadServerCall interface, unexported methods
 pkg repository, type BinaryDownloadServerCallStub struct
 pkg repository, type BinaryDownloadServerCallStub struct, embedded rpc.StreamServerCall
 pkg repository, type BinaryDownloadServerStream interface { SendStream }
 pkg repository, type BinaryDownloadServerStream interface, SendStream() interface {  Send(item []byte) error;}
-pkg repository, type BinaryServerMethods interface { Create, Delete, Download, DownloadUrl, GetPermissions, SetPermissions, Stat, Upload }
 pkg repository, type BinaryServerMethods interface, Create(*context.T, rpc.ServerCall, int32, MediaInfo) error
 pkg repository, type BinaryServerMethods interface, Delete(*context.T, rpc.ServerCall) error
 pkg repository, type BinaryServerMethods interface, Download(*context.T, BinaryDownloadServerCall, int32) error
 pkg repository, type BinaryServerMethods interface, DownloadUrl(*context.T, rpc.ServerCall) (string, int64, error)
-pkg repository, type BinaryServerMethods interface, GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error)
-pkg repository, type BinaryServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, access.Permissions, string) error
 pkg repository, type BinaryServerMethods interface, Stat(*context.T, rpc.ServerCall) ([]binary.PartInfo, MediaInfo, error)
 pkg repository, type BinaryServerMethods interface, Upload(*context.T, BinaryUploadServerCall, int32) error
+pkg repository, type BinaryServerMethods interface, unexported methods
 pkg repository, type BinaryServerStub interface, Create(*context.T, rpc.ServerCall, int32, MediaInfo) error
 pkg repository, type BinaryServerStub interface, Delete(*context.T, rpc.ServerCall) error
 pkg repository, type BinaryServerStub interface, Describe__() []rpc.InterfaceDesc
@@ -96,14 +76,8 @@
 pkg repository, type BinaryUploadClientCall interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
 pkg repository, type BinaryUploadClientStream interface { SendStream }
 pkg repository, type BinaryUploadClientStream interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
-pkg repository, type BinaryUploadServerCall interface { GrantedBlessings, LocalEndpoint, RecvStream, RemoteEndpoint, Security, Server, Suffix }
-pkg repository, type BinaryUploadServerCall interface, GrantedBlessings() security.Blessings
-pkg repository, type BinaryUploadServerCall interface, LocalEndpoint() naming.Endpoint
 pkg repository, type BinaryUploadServerCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
-pkg repository, type BinaryUploadServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg repository, type BinaryUploadServerCall interface, Security() security.Call
-pkg repository, type BinaryUploadServerCall interface, Server() Server
-pkg repository, type BinaryUploadServerCall interface, Suffix() string
+pkg repository, type BinaryUploadServerCall interface, unexported methods
 pkg repository, type BinaryUploadServerCallStub struct
 pkg repository, type BinaryUploadServerCallStub struct, embedded rpc.StreamServerCall
 pkg repository, type BinaryUploadServerStream interface { RecvStream }
@@ -118,9 +92,9 @@
 pkg repository, type ProfileClientMethods interface { Description, Label }
 pkg repository, type ProfileClientMethods interface, Description(*context.T, ...rpc.CallOpt) (string, error)
 pkg repository, type ProfileClientMethods interface, Label(*context.T, ...rpc.CallOpt) (string, error)
-pkg repository, type ProfileClientStub interface { Description, Label }
 pkg repository, type ProfileClientStub interface, Description(*context.T, ...rpc.CallOpt) (string, error)
 pkg repository, type ProfileClientStub interface, Label(*context.T, ...rpc.CallOpt) (string, error)
+pkg repository, type ProfileClientStub interface, unexported methods
 pkg repository, type ProfileServerMethods interface { Description, Label }
 pkg repository, type ProfileServerMethods interface, Description(*context.T, rpc.ServerCall) (string, error)
 pkg repository, type ProfileServerMethods interface, Label(*context.T, rpc.ServerCall) (string, error)
diff --git a/services/repository/repository.vdl.go b/services/repository/repository.vdl.go
index fd0c532..fe92455 100644
--- a/services/repository/repository.vdl.go
+++ b/services/repository/repository.vdl.go
@@ -44,28 +44,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Type")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Type), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Type == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Type), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Encoding")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Encoding")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Encoding), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Encoding == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Encoding), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -115,11 +130,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroMediaInfo = MediaInfo{}
-)
+func (t *MediaInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MediaInfo{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Interface definitions
@@ -1242,6 +1256,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*MediaInfo)(nil))
diff --git a/services/stats/.api b/services/stats/.api
index 001020d..fcc523f 100644
--- a/services/stats/.api
+++ b/services/stats/.api
@@ -1,21 +1,16 @@
 pkg stats, func NewErrNoValue(*context.T, string) error
 pkg stats, func StatsClient(string) StatsClientStub
 pkg stats, func StatsServer(StatsServerMethods) StatsServerStub
-pkg stats, type StatsClientMethods interface { Value, WatchGlob }
 pkg stats, type StatsClientMethods interface, Value(*context.T, ...rpc.CallOpt) (*vom.RawBytes, error)
-pkg stats, type StatsClientMethods interface, WatchGlob(*context.T, GlobRequest, ...rpc.CallOpt) (GlobWatcherWatchGlobClientCall, error)
-pkg stats, type StatsClientStub interface { Value, WatchGlob }
+pkg stats, type StatsClientMethods interface, unexported methods
 pkg stats, type StatsClientStub interface, Value(*context.T, ...rpc.CallOpt) (*vom.RawBytes, error)
-pkg stats, type StatsClientStub interface, WatchGlob(*context.T, GlobRequest, ...rpc.CallOpt) (GlobWatcherWatchGlobClientCall, error)
-pkg stats, type StatsServerMethods interface { Value, WatchGlob }
+pkg stats, type StatsClientStub interface, unexported methods
 pkg stats, type StatsServerMethods interface, Value(*context.T, rpc.ServerCall) (*vom.RawBytes, error)
-pkg stats, type StatsServerMethods interface, WatchGlob(*context.T, GlobWatcherWatchGlobServerCall, GlobRequest) error
-pkg stats, type StatsServerStub interface { Describe__, Value, WatchGlob }
+pkg stats, type StatsServerMethods interface, unexported methods
 pkg stats, type StatsServerStub interface, Describe__() []rpc.InterfaceDesc
 pkg stats, type StatsServerStub interface, Value(*context.T, rpc.ServerCall) (*vom.RawBytes, error)
-pkg stats, type StatsServerStub interface, WatchGlob(*context.T, *GlobWatcherWatchGlobServerCallStub, GlobRequest) error
-pkg stats, type StatsServerStubMethods interface { Value, WatchGlob }
+pkg stats, type StatsServerStub interface, unexported methods
 pkg stats, type StatsServerStubMethods interface, Value(*context.T, rpc.ServerCall) (*vom.RawBytes, error)
-pkg stats, type StatsServerStubMethods interface, WatchGlob(*context.T, *GlobWatcherWatchGlobServerCallStub, GlobRequest) error
-pkg stats, var ErrNoValue verror.IDAction
+pkg stats, type StatsServerStubMethods interface, unexported methods
+pkg stats, var ErrNoValue unknown-type
 pkg stats, var StatsDesc rpc.InterfaceDesc
diff --git a/services/stats/stats.vdl.go b/services/stats/stats.vdl.go
index c3a15da..67a66c3 100644
--- a/services/stats/stats.vdl.go
+++ b/services/stats/stats.vdl.go
@@ -201,6 +201,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrNoValue.ID), "{1:}{2:} object has no value, suffix: {3}")
diff --git a/services/syncbase/.api b/services/syncbase/.api
index 4192fce..aa7f183 100644
--- a/services/syncbase/.api
+++ b/services/syncbase/.api
@@ -55,26 +55,31 @@
 pkg syncbase, method (*BatchInfo) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*BatchInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*BatchInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*BatchInfoTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*BatchInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*BatchInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*BatchOptions) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*BatchOptions) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*BatchOptionsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*BatchOptionsTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*BatchOptionsTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*BatchOptionsTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*BatchOptionsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*BatchSource) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*BatchSource) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*BatchSource) Set(string) error
 pkg syncbase, method (*BatchSourceTarget) FromEnumLabel(string, *vdl.Type) error
+pkg syncbase, method (*BatchSourceTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*BlobFetchState) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*BlobFetchState) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*BlobFetchState) Set(string) error
 pkg syncbase, method (*BlobFetchStateTarget) FromEnumLabel(string, *vdl.Type) error
+pkg syncbase, method (*BlobFetchStateTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*BlobFetchStatus) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*BlobFetchStatus) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*BlobFetchStatusTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*BlobFetchStatusTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*BlobFetchStatusTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*BlobFetchStatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*BlobFetchStatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*BlobManagerFetchBlobServerCallStub) Init(rpc.StreamServerCall)
@@ -86,22 +91,26 @@
 pkg syncbase, method (*BlobRef) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*BlobRef) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*BlobRefTarget) FromString(string, *vdl.Type) error
+pkg syncbase, method (*BlobRefTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*CollectionRow) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*CollectionRow) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*CollectionRowTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*CollectionRowTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*CollectionRowTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*CollectionRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*CollectionRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*CollectionScanServerCallStub) Init(rpc.StreamServerCall)
 pkg syncbase, method (*CollectionScanServerCallStub) SendStream() interface {  Send(item KeyValue) error;}
 pkg syncbase, method (*ConflictDataTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ConflictDataTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ConflictDataTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ConflictDataTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ConflictDataTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ConflictInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ConflictInfo) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ConflictInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ConflictInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ConflictInfoTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ConflictInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ConflictInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ConflictManagerStartConflictResolverServerCallStub) Init(rpc.StreamServerCall)
@@ -111,12 +120,14 @@
 pkg syncbase, method (*CrPolicy) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*CrPolicyTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*CrPolicyTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*CrPolicyTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*CrPolicyTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*CrPolicyTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*CrRule) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*CrRule) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*CrRuleTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*CrRuleTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*CrRuleTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*CrRuleTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*CrRuleTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*DatabaseExecServerCallStub) Init(rpc.StreamServerCall)
@@ -125,74 +136,87 @@
 pkg syncbase, method (*DevModeUpdateVClockOpts) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*DevModeUpdateVClockOptsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*DevModeUpdateVClockOptsTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*DevModeUpdateVClockOptsTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*DevModeUpdateVClockOptsTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*DevModeUpdateVClockOptsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*KeyValue) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*KeyValue) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*KeyValueTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*KeyValueTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*KeyValueTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*KeyValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*KeyValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*OperationTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*OperationTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*OperationTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*OperationTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*OperationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*PrefixPermissions) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*PrefixPermissions) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*PrefixPermissionsTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*PrefixPermissionsTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*PrefixPermissionsTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*PrefixPermissionsTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*PrefixPermissionsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ResolutionInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ResolutionInfo) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ResolutionInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ResolutionInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ResolutionInfoTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ResolutionInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ResolutionInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ResolverType) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ResolverType) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ResolverType) Set(string) error
 pkg syncbase, method (*ResolverTypeTarget) FromEnumLabel(string, *vdl.Type) error
+pkg syncbase, method (*ResolverTypeTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*RowInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*RowInfo) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*RowInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*RowInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*RowInfoTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*RowInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*RowInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*RowOp) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*RowOp) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*RowOpTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*RowOpTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*RowOpTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*RowOpTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*RowOpTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ScanOp) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ScanOp) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ScanOpTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ScanOpTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ScanOpTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ScanOpTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ScanOpTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*SchemaMetadata) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*SchemaMetadata) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*SchemaMetadataTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*SchemaMetadataTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*SchemaMetadataTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*SchemaMetadataTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*SchemaMetadataTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*StoreChange) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*StoreChange) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*StoreChangeTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*StoreChangeTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*StoreChangeTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*StoreChangeTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*StoreChangeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*SyncgroupMemberInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*SyncgroupMemberInfo) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*SyncgroupMemberInfoTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*SyncgroupMemberInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*SyncgroupMemberInfoTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*SyncgroupMemberInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*SyncgroupMemberInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*SyncgroupSpec) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*SyncgroupSpec) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*SyncgroupSpecTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*SyncgroupSpecTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*SyncgroupSpecTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*SyncgroupSpecTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*SyncgroupSpecTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*Value) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -201,12 +225,15 @@
 pkg syncbase, method (*ValueSelection) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ValueSelection) Set(string) error
 pkg syncbase, method (*ValueSelectionTarget) FromEnumLabel(string, *vdl.Type) error
+pkg syncbase, method (*ValueSelectionTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ValueState) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ValueState) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ValueState) Set(string) error
 pkg syncbase, method (*ValueStateTarget) FromEnumLabel(string, *vdl.Type) error
+pkg syncbase, method (*ValueStateTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ValueTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ValueTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ValueTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (BatchSource) String() string
diff --git a/services/syncbase/nosql/.api b/services/syncbase/nosql/.api
new file mode 100644
index 0000000..0de087a
--- /dev/null
+++ b/services/syncbase/nosql/.api
@@ -0,0 +1,878 @@
+pkg nosql, const BatchSourceLocal BatchSource
+pkg nosql, const BatchSourceRemote BatchSource
+pkg nosql, const BlobFetchStateDone BlobFetchState
+pkg nosql, const BlobFetchStateFetching BlobFetchState
+pkg nosql, const BlobFetchStateLocating BlobFetchState
+pkg nosql, const BlobFetchStatePending BlobFetchState
+pkg nosql, const NullBlobRef BlobRef
+pkg nosql, const ResolverTypeAppResolves ResolverType
+pkg nosql, const ResolverTypeDefer ResolverType
+pkg nosql, const ResolverTypeLastWins ResolverType
+pkg nosql, const ValueSelectionLocal ValueSelection
+pkg nosql, const ValueSelectionOther ValueSelection
+pkg nosql, const ValueSelectionRemote ValueSelection
+pkg nosql, const ValueStateDeleted ValueState
+pkg nosql, const ValueStateExists ValueState
+pkg nosql, const ValueStateNoExists ValueState
+pkg nosql, const ValueStateUnknown ValueState
+pkg nosql, func BatchSourceFromString(string) (BatchSource, error)
+pkg nosql, func BlobFetchStateFromString(string) (BlobFetchState, error)
+pkg nosql, func BlobManagerClient(string) BlobManagerClientStub
+pkg nosql, func BlobManagerServer(BlobManagerServerMethods) BlobManagerServerStub
+pkg nosql, func ConflictManagerClient(string) ConflictManagerClientStub
+pkg nosql, func ConflictManagerServer(ConflictManagerServerMethods) ConflictManagerServerStub
+pkg nosql, func DatabaseClient(string) DatabaseClientStub
+pkg nosql, func DatabaseServer(DatabaseServerMethods) DatabaseServerStub
+pkg nosql, func DatabaseWatcherClient(string) DatabaseWatcherClientStub
+pkg nosql, func DatabaseWatcherServer(DatabaseWatcherServerMethods) DatabaseWatcherServerStub
+pkg nosql, func NewErrBlobNotCommitted(*context.T) error
+pkg nosql, func NewErrBoundToBatch(*context.T) error
+pkg nosql, func NewErrConcurrentBatch(*context.T) error
+pkg nosql, func NewErrNotBoundToBatch(*context.T) error
+pkg nosql, func NewErrReadOnlyBatch(*context.T) error
+pkg nosql, func NewErrSchemaVersionMismatch(*context.T) error
+pkg nosql, func NewErrSyncgroupJoinFailed(*context.T) error
+pkg nosql, func ResolverTypeFromString(string) (ResolverType, error)
+pkg nosql, func RowClient(string) RowClientStub
+pkg nosql, func RowServer(RowServerMethods) RowServerStub
+pkg nosql, func SchemaManagerClient(string) SchemaManagerClientStub
+pkg nosql, func SchemaManagerServer(SchemaManagerServerMethods) SchemaManagerServerStub
+pkg nosql, func SyncgroupManagerClient(string) SyncgroupManagerClientStub
+pkg nosql, func SyncgroupManagerServer(SyncgroupManagerServerMethods) SyncgroupManagerServerStub
+pkg nosql, func TableClient(string) TableClientStub
+pkg nosql, func TableServer(TableServerMethods) TableServerStub
+pkg nosql, func ValueSelectionFromString(string) (ValueSelection, error)
+pkg nosql, func ValueStateFromString(string) (ValueState, error)
+pkg nosql, method (*BatchInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*BatchInfo) MakeVDLTarget() vdl.Target
+pkg nosql, method (*BatchInfoTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*BatchInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*BatchInfoTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*BatchInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*BatchInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*BatchOptions) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*BatchOptions) MakeVDLTarget() vdl.Target
+pkg nosql, method (*BatchOptionsTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*BatchOptionsTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*BatchOptionsTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*BatchOptionsTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*BatchOptionsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*BatchSource) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*BatchSource) MakeVDLTarget() vdl.Target
+pkg nosql, method (*BatchSource) Set(string) error
+pkg nosql, method (*BatchSourceTarget) FromEnumLabel(string, *vdl.Type) error
+pkg nosql, method (*BatchSourceTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*BlobFetchState) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*BlobFetchState) MakeVDLTarget() vdl.Target
+pkg nosql, method (*BlobFetchState) Set(string) error
+pkg nosql, method (*BlobFetchStateTarget) FromEnumLabel(string, *vdl.Type) error
+pkg nosql, method (*BlobFetchStateTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*BlobFetchStatus) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*BlobFetchStatus) MakeVDLTarget() vdl.Target
+pkg nosql, method (*BlobFetchStatusTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*BlobFetchStatusTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*BlobFetchStatusTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*BlobFetchStatusTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*BlobFetchStatusTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*BlobManagerFetchBlobServerCallStub) Init(rpc.StreamServerCall)
+pkg nosql, method (*BlobManagerFetchBlobServerCallStub) SendStream() interface {  Send(item BlobFetchStatus) error;}
+pkg nosql, method (*BlobManagerGetBlobServerCallStub) Init(rpc.StreamServerCall)
+pkg nosql, method (*BlobManagerGetBlobServerCallStub) SendStream() interface {  Send(item []byte) error;}
+pkg nosql, method (*BlobManagerPutBlobServerCallStub) Init(rpc.StreamServerCall)
+pkg nosql, method (*BlobManagerPutBlobServerCallStub) RecvStream() interface {  Advance() bool; Value() []byte; Err() error;}
+pkg nosql, method (*BlobRef) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*BlobRef) MakeVDLTarget() vdl.Target
+pkg nosql, method (*BlobRefTarget) FromString(string, *vdl.Type) error
+pkg nosql, method (*BlobRefTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictDataTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ConflictDataTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ConflictDataTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictDataTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ConflictDataTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ConflictInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ConflictInfo) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ConflictInfoTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ConflictInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ConflictInfoTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ConflictInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ConflictManagerStartConflictResolverServerCallStub) Init(rpc.StreamServerCall)
+pkg nosql, method (*ConflictManagerStartConflictResolverServerCallStub) RecvStream() interface {  Advance() bool; Value() ResolutionInfo; Err() error;}
+pkg nosql, method (*ConflictManagerStartConflictResolverServerCallStub) SendStream() interface {  Send(item ConflictInfo) error;}
+pkg nosql, method (*CrPolicy) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*CrPolicy) MakeVDLTarget() vdl.Target
+pkg nosql, method (*CrPolicyTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*CrPolicyTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*CrPolicyTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*CrPolicyTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*CrPolicyTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*CrRule) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*CrRule) MakeVDLTarget() vdl.Target
+pkg nosql, method (*CrRuleTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*CrRuleTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*CrRuleTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*CrRuleTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*CrRuleTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*DatabaseExecServerCallStub) Init(rpc.StreamServerCall)
+pkg nosql, method (*DatabaseExecServerCallStub) SendStream() interface {  Send(item []*vom.RawBytes) error;}
+pkg nosql, method (*KeyValue) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*KeyValue) MakeVDLTarget() vdl.Target
+pkg nosql, method (*KeyValueTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*KeyValueTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*KeyValueTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*KeyValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*KeyValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*OperationTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*OperationTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*OperationTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*OperationTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*OperationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*PrefixPermissions) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*PrefixPermissions) MakeVDLTarget() vdl.Target
+pkg nosql, method (*PrefixPermissionsTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*PrefixPermissionsTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*PrefixPermissionsTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*PrefixPermissionsTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*PrefixPermissionsTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ResolutionInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ResolutionInfo) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ResolutionInfoTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ResolutionInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ResolutionInfoTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ResolutionInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ResolutionInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ResolverType) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ResolverType) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ResolverType) Set(string) error
+pkg nosql, method (*ResolverTypeTarget) FromEnumLabel(string, *vdl.Type) error
+pkg nosql, method (*ResolverTypeTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*RowInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*RowInfo) MakeVDLTarget() vdl.Target
+pkg nosql, method (*RowInfoTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*RowInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*RowInfoTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*RowInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*RowInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*RowOp) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*RowOp) MakeVDLTarget() vdl.Target
+pkg nosql, method (*RowOpTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*RowOpTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*RowOpTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*RowOpTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*RowOpTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ScanOp) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ScanOp) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ScanOpTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ScanOpTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ScanOpTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ScanOpTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ScanOpTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*SchemaMetadata) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*SchemaMetadata) MakeVDLTarget() vdl.Target
+pkg nosql, method (*SchemaMetadataTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*SchemaMetadataTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*SchemaMetadataTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*SchemaMetadataTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*SchemaMetadataTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*StoreChange) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*StoreChange) MakeVDLTarget() vdl.Target
+pkg nosql, method (*StoreChangeTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*StoreChangeTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*StoreChangeTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*StoreChangeTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*StoreChangeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*SyncgroupMemberInfo) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*SyncgroupMemberInfo) MakeVDLTarget() vdl.Target
+pkg nosql, method (*SyncgroupMemberInfoTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*SyncgroupMemberInfoTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*SyncgroupMemberInfoTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*SyncgroupMemberInfoTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*SyncgroupMemberInfoTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*SyncgroupSpec) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*SyncgroupSpec) MakeVDLTarget() vdl.Target
+pkg nosql, method (*SyncgroupSpecTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*SyncgroupSpecTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*SyncgroupSpecTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*SyncgroupSpecTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*SyncgroupSpecTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*TableRow) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*TableRow) MakeVDLTarget() vdl.Target
+pkg nosql, method (*TableRowTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*TableRowTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*TableRowTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*TableRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*TableRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*TableScanServerCallStub) Init(rpc.StreamServerCall)
+pkg nosql, method (*TableScanServerCallStub) SendStream() interface {  Send(item KeyValue) error;}
+pkg nosql, method (*Value) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*Value) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ValueSelection) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ValueSelection) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ValueSelection) Set(string) error
+pkg nosql, method (*ValueSelectionTarget) FromEnumLabel(string, *vdl.Type) error
+pkg nosql, method (*ValueSelectionTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ValueState) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ValueState) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ValueState) Set(string) error
+pkg nosql, method (*ValueStateTarget) FromEnumLabel(string, *vdl.Type) error
+pkg nosql, method (*ValueStateTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ValueTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ValueTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ValueTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (BatchSource) String() string
+pkg nosql, method (BlobFetchState) String() string
+pkg nosql, method (ConflictDataBatch) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (ConflictDataBatch) Index() int
+pkg nosql, method (ConflictDataBatch) Interface() interface{}
+pkg nosql, method (ConflictDataBatch) MakeVDLTarget() vdl.Target
+pkg nosql, method (ConflictDataBatch) Name() string
+pkg nosql, method (ConflictDataRow) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (ConflictDataRow) Index() int
+pkg nosql, method (ConflictDataRow) Interface() interface{}
+pkg nosql, method (ConflictDataRow) MakeVDLTarget() vdl.Target
+pkg nosql, method (ConflictDataRow) Name() string
+pkg nosql, method (OperationRead) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (OperationRead) Index() int
+pkg nosql, method (OperationRead) Interface() interface{}
+pkg nosql, method (OperationRead) MakeVDLTarget() vdl.Target
+pkg nosql, method (OperationRead) Name() string
+pkg nosql, method (OperationScan) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (OperationScan) Index() int
+pkg nosql, method (OperationScan) Interface() interface{}
+pkg nosql, method (OperationScan) MakeVDLTarget() vdl.Target
+pkg nosql, method (OperationScan) Name() string
+pkg nosql, method (OperationWrite) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (OperationWrite) Index() int
+pkg nosql, method (OperationWrite) Interface() interface{}
+pkg nosql, method (OperationWrite) MakeVDLTarget() vdl.Target
+pkg nosql, method (OperationWrite) Name() string
+pkg nosql, method (ResolverType) String() string
+pkg nosql, method (ValueSelection) String() string
+pkg nosql, method (ValueState) String() string
+pkg nosql, type BatchInfo struct
+pkg nosql, type BatchInfo struct, Hint string
+pkg nosql, type BatchInfo struct, Id uint64
+pkg nosql, type BatchInfo struct, Source BatchSource
+pkg nosql, type BatchInfoTarget struct
+pkg nosql, type BatchInfoTarget struct, Value *BatchInfo
+pkg nosql, type BatchInfoTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type BatchInfoTarget struct, embedded vdl.TargetBase
+pkg nosql, type BatchOptions struct
+pkg nosql, type BatchOptions struct, Hint string
+pkg nosql, type BatchOptions struct, ReadOnly bool
+pkg nosql, type BatchOptionsTarget struct
+pkg nosql, type BatchOptionsTarget struct, Value *BatchOptions
+pkg nosql, type BatchOptionsTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type BatchOptionsTarget struct, embedded vdl.TargetBase
+pkg nosql, type BatchSource int
+pkg nosql, type BatchSourceTarget struct
+pkg nosql, type BatchSourceTarget struct, Value *BatchSource
+pkg nosql, type BatchSourceTarget struct, embedded vdl.TargetBase
+pkg nosql, type BlobFetchState int
+pkg nosql, type BlobFetchStateTarget struct
+pkg nosql, type BlobFetchStateTarget struct, Value *BlobFetchState
+pkg nosql, type BlobFetchStateTarget struct, embedded vdl.TargetBase
+pkg nosql, type BlobFetchStatus struct
+pkg nosql, type BlobFetchStatus struct, Received int64
+pkg nosql, type BlobFetchStatus struct, State BlobFetchState
+pkg nosql, type BlobFetchStatus struct, Total int64
+pkg nosql, type BlobFetchStatusTarget struct
+pkg nosql, type BlobFetchStatusTarget struct, Value *BlobFetchStatus
+pkg nosql, type BlobFetchStatusTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type BlobFetchStatusTarget struct, embedded vdl.TargetBase
+pkg nosql, type BlobManagerClientMethods interface { CommitBlob, CreateBlob, DeleteBlob, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
+pkg nosql, type BlobManagerClientMethods interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientMethods interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
+pkg nosql, type BlobManagerClientMethods interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientMethods interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
+pkg nosql, type BlobManagerClientMethods interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
+pkg nosql, type BlobManagerClientMethods interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
+pkg nosql, type BlobManagerClientMethods interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientMethods interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientMethods interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
+pkg nosql, type BlobManagerClientMethods interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientStub interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientStub interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
+pkg nosql, type BlobManagerClientStub interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientStub interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
+pkg nosql, type BlobManagerClientStub interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
+pkg nosql, type BlobManagerClientStub interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
+pkg nosql, type BlobManagerClientStub interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientStub interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientStub interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
+pkg nosql, type BlobManagerClientStub interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type BlobManagerClientStub interface, unexported methods
+pkg nosql, type BlobManagerFetchBlobClientCall interface { Finish, RecvStream }
+pkg nosql, type BlobManagerFetchBlobClientCall interface, Finish() error
+pkg nosql, type BlobManagerFetchBlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() BlobFetchStatus;; Err() error;}
+pkg nosql, type BlobManagerFetchBlobClientStream interface { RecvStream }
+pkg nosql, type BlobManagerFetchBlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() BlobFetchStatus;; Err() error;}
+pkg nosql, type BlobManagerFetchBlobServerCall interface, SendStream() interface {  Send(item BlobFetchStatus) error;}
+pkg nosql, type BlobManagerFetchBlobServerCall interface, unexported methods
+pkg nosql, type BlobManagerFetchBlobServerCallStub struct
+pkg nosql, type BlobManagerFetchBlobServerCallStub struct, embedded rpc.StreamServerCall
+pkg nosql, type BlobManagerFetchBlobServerStream interface { SendStream }
+pkg nosql, type BlobManagerFetchBlobServerStream interface, SendStream() interface {  Send(item BlobFetchStatus) error;}
+pkg nosql, type BlobManagerGetBlobClientCall interface { Finish, RecvStream }
+pkg nosql, type BlobManagerGetBlobClientCall interface, Finish() error
+pkg nosql, type BlobManagerGetBlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
+pkg nosql, type BlobManagerGetBlobClientStream interface { RecvStream }
+pkg nosql, type BlobManagerGetBlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
+pkg nosql, type BlobManagerGetBlobServerCall interface, SendStream() interface {  Send(item []byte) error;}
+pkg nosql, type BlobManagerGetBlobServerCall interface, unexported methods
+pkg nosql, type BlobManagerGetBlobServerCallStub struct
+pkg nosql, type BlobManagerGetBlobServerCallStub struct, embedded rpc.StreamServerCall
+pkg nosql, type BlobManagerGetBlobServerStream interface { SendStream }
+pkg nosql, type BlobManagerGetBlobServerStream interface, SendStream() interface {  Send(item []byte) error;}
+pkg nosql, type BlobManagerPutBlobClientCall interface { Finish, SendStream }
+pkg nosql, type BlobManagerPutBlobClientCall interface, Finish() error
+pkg nosql, type BlobManagerPutBlobClientCall interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
+pkg nosql, type BlobManagerPutBlobClientStream interface { SendStream }
+pkg nosql, type BlobManagerPutBlobClientStream interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
+pkg nosql, type BlobManagerPutBlobServerCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
+pkg nosql, type BlobManagerPutBlobServerCall interface, unexported methods
+pkg nosql, type BlobManagerPutBlobServerCallStub struct
+pkg nosql, type BlobManagerPutBlobServerCallStub struct, embedded rpc.StreamServerCall
+pkg nosql, type BlobManagerPutBlobServerStream interface { RecvStream }
+pkg nosql, type BlobManagerPutBlobServerStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
+pkg nosql, type BlobManagerServerMethods interface { CommitBlob, CreateBlob, DeleteBlob, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
+pkg nosql, type BlobManagerServerMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
+pkg nosql, type BlobManagerServerMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerMethods interface, FetchBlob(*context.T, BlobManagerFetchBlobServerCall, BlobRef, uint64) error
+pkg nosql, type BlobManagerServerMethods interface, GetBlob(*context.T, BlobManagerGetBlobServerCall, BlobRef, int64) error
+pkg nosql, type BlobManagerServerMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
+pkg nosql, type BlobManagerServerMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
+pkg nosql, type BlobManagerServerMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerMethods interface, PutBlob(*context.T, BlobManagerPutBlobServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStub interface { CommitBlob, CreateBlob, DeleteBlob, Describe__, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
+pkg nosql, type BlobManagerServerStub interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStub interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
+pkg nosql, type BlobManagerServerStub interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type BlobManagerServerStub interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
+pkg nosql, type BlobManagerServerStub interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
+pkg nosql, type BlobManagerServerStub interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
+pkg nosql, type BlobManagerServerStub interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
+pkg nosql, type BlobManagerServerStub interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStub interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
+pkg nosql, type BlobManagerServerStub interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStubMethods interface { CommitBlob, CreateBlob, DeleteBlob, FetchBlob, GetBlob, GetBlobSize, KeepBlob, PinBlob, PutBlob, UnpinBlob }
+pkg nosql, type BlobManagerServerStubMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStubMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
+pkg nosql, type BlobManagerServerStubMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStubMethods interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
+pkg nosql, type BlobManagerServerStubMethods interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
+pkg nosql, type BlobManagerServerStubMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
+pkg nosql, type BlobManagerServerStubMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
+pkg nosql, type BlobManagerServerStubMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobManagerServerStubMethods interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
+pkg nosql, type BlobManagerServerStubMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type BlobRef string
+pkg nosql, type BlobRefTarget struct
+pkg nosql, type BlobRefTarget struct, Value *BlobRef
+pkg nosql, type BlobRefTarget struct, embedded vdl.TargetBase
+pkg nosql, type ConflictData interface, FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, type ConflictData interface, Index() int
+pkg nosql, type ConflictData interface, Interface() interface{}
+pkg nosql, type ConflictData interface, Name() string
+pkg nosql, type ConflictData interface, unexported methods
+pkg nosql, type ConflictDataBatch struct
+pkg nosql, type ConflictDataBatch struct, Value BatchInfo
+pkg nosql, type ConflictDataRow struct
+pkg nosql, type ConflictDataRow struct, Value RowInfo
+pkg nosql, type ConflictDataTarget struct
+pkg nosql, type ConflictDataTarget struct, Value *ConflictData
+pkg nosql, type ConflictDataTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ConflictDataTarget struct, embedded vdl.TargetBase
+pkg nosql, type ConflictInfo struct
+pkg nosql, type ConflictInfo struct, Continued bool
+pkg nosql, type ConflictInfo struct, Data ConflictData
+pkg nosql, type ConflictInfoTarget struct
+pkg nosql, type ConflictInfoTarget struct, Value *ConflictInfo
+pkg nosql, type ConflictInfoTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ConflictInfoTarget struct, embedded vdl.TargetBase
+pkg nosql, type ConflictManagerClientMethods interface { StartConflictResolver }
+pkg nosql, type ConflictManagerClientMethods interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
+pkg nosql, type ConflictManagerClientStub interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
+pkg nosql, type ConflictManagerClientStub interface, unexported methods
+pkg nosql, type ConflictManagerServerMethods interface { StartConflictResolver }
+pkg nosql, type ConflictManagerServerMethods interface, StartConflictResolver(*context.T, ConflictManagerStartConflictResolverServerCall) error
+pkg nosql, type ConflictManagerServerStub interface { Describe__, StartConflictResolver }
+pkg nosql, type ConflictManagerServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type ConflictManagerServerStub interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
+pkg nosql, type ConflictManagerServerStubMethods interface { StartConflictResolver }
+pkg nosql, type ConflictManagerServerStubMethods interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
+pkg nosql, type ConflictManagerStartConflictResolverClientCall interface { Finish, RecvStream, SendStream }
+pkg nosql, type ConflictManagerStartConflictResolverClientCall interface, Finish() error
+pkg nosql, type ConflictManagerStartConflictResolverClientCall interface, RecvStream() interface {  Advance() bool;; Value() ConflictInfo;; Err() error;}
+pkg nosql, type ConflictManagerStartConflictResolverClientCall interface, SendStream() interface {  Send(item ResolutionInfo) error;; Close() error;}
+pkg nosql, type ConflictManagerStartConflictResolverClientStream interface { RecvStream, SendStream }
+pkg nosql, type ConflictManagerStartConflictResolverClientStream interface, RecvStream() interface {  Advance() bool;; Value() ConflictInfo;; Err() error;}
+pkg nosql, type ConflictManagerStartConflictResolverClientStream interface, SendStream() interface {  Send(item ResolutionInfo) error;; Close() error;}
+pkg nosql, type ConflictManagerStartConflictResolverServerCall interface, RecvStream() interface {  Advance() bool;; Value() ResolutionInfo;; Err() error;}
+pkg nosql, type ConflictManagerStartConflictResolverServerCall interface, SendStream() interface {  Send(item ConflictInfo) error;}
+pkg nosql, type ConflictManagerStartConflictResolverServerCall interface, unexported methods
+pkg nosql, type ConflictManagerStartConflictResolverServerCallStub struct
+pkg nosql, type ConflictManagerStartConflictResolverServerCallStub struct, embedded rpc.StreamServerCall
+pkg nosql, type ConflictManagerStartConflictResolverServerStream interface { RecvStream, SendStream }
+pkg nosql, type ConflictManagerStartConflictResolverServerStream interface, RecvStream() interface {  Advance() bool;; Value() ResolutionInfo;; Err() error;}
+pkg nosql, type ConflictManagerStartConflictResolverServerStream interface, SendStream() interface {  Send(item ConflictInfo) error;}
+pkg nosql, type CrPolicy struct
+pkg nosql, type CrPolicy struct, Rules []CrRule
+pkg nosql, type CrPolicyTarget struct
+pkg nosql, type CrPolicyTarget struct, Value *CrPolicy
+pkg nosql, type CrPolicyTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type CrPolicyTarget struct, embedded vdl.TargetBase
+pkg nosql, type CrRule struct
+pkg nosql, type CrRule struct, KeyPrefix string
+pkg nosql, type CrRule struct, Resolver ResolverType
+pkg nosql, type CrRule struct, TableName string
+pkg nosql, type CrRule struct, Type string
+pkg nosql, type CrRuleTarget struct
+pkg nosql, type CrRuleTarget struct, Value *CrRule
+pkg nosql, type CrRuleTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type CrRuleTarget struct, embedded vdl.TargetBase
+pkg nosql, type DatabaseClientMethods interface, Abort(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, BeginBatch(*context.T, int32, BatchOptions, ...rpc.CallOpt) (string, error)
+pkg nosql, type DatabaseClientMethods interface, Commit(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, Create(*context.T, *SchemaMetadata, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
+pkg nosql, type DatabaseClientMethods interface, CreateSyncgroup(*context.T, string, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, Destroy(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, DestroySyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, EjectFromSyncgroup(*context.T, string, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, Exec(*context.T, int32, string, []*vom.RawBytes, ...rpc.CallOpt) (DatabaseExecClientCall, error)
+pkg nosql, type DatabaseClientMethods interface, Exists(*context.T, int32, ...rpc.CallOpt) (bool, error)
+pkg nosql, type DatabaseClientMethods interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
+pkg nosql, type DatabaseClientMethods interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
+pkg nosql, type DatabaseClientMethods interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
+pkg nosql, type DatabaseClientMethods interface, GetResumeMarker(*context.T, ...rpc.CallOpt) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseClientMethods interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
+pkg nosql, type DatabaseClientMethods interface, GetSyncgroupMembers(*context.T, string, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
+pkg nosql, type DatabaseClientMethods interface, GetSyncgroupNames(*context.T, ...rpc.CallOpt) ([]string, error)
+pkg nosql, type DatabaseClientMethods interface, GetSyncgroupSpec(*context.T, string, ...rpc.CallOpt) (SyncgroupSpec, string, error)
+pkg nosql, type DatabaseClientMethods interface, JoinSyncgroup(*context.T, string, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
+pkg nosql, type DatabaseClientMethods interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, LeaveSyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, ListTables(*context.T, ...rpc.CallOpt) ([]string, error)
+pkg nosql, type DatabaseClientMethods interface, PauseSync(*context.T, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
+pkg nosql, type DatabaseClientMethods interface, ResumeSync(*context.T, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, SetSyncgroupSpec(*context.T, string, SyncgroupSpec, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
+pkg nosql, type DatabaseClientMethods interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientMethods interface, unexported methods
+pkg nosql, type DatabaseClientStub interface, Abort(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, BeginBatch(*context.T, int32, BatchOptions, ...rpc.CallOpt) (string, error)
+pkg nosql, type DatabaseClientStub interface, Commit(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, CommitBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, Create(*context.T, *SchemaMetadata, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, CreateBlob(*context.T, ...rpc.CallOpt) (BlobRef, error)
+pkg nosql, type DatabaseClientStub interface, CreateSyncgroup(*context.T, string, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, DeleteBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, Destroy(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, DestroySyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, EjectFromSyncgroup(*context.T, string, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, Exec(*context.T, int32, string, []*vom.RawBytes, ...rpc.CallOpt) (DatabaseExecClientCall, error)
+pkg nosql, type DatabaseClientStub interface, Exists(*context.T, int32, ...rpc.CallOpt) (bool, error)
+pkg nosql, type DatabaseClientStub interface, FetchBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
+pkg nosql, type DatabaseClientStub interface, GetBlob(*context.T, BlobRef, int64, ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
+pkg nosql, type DatabaseClientStub interface, GetBlobSize(*context.T, BlobRef, ...rpc.CallOpt) (int64, error)
+pkg nosql, type DatabaseClientStub interface, GetResumeMarker(*context.T, ...rpc.CallOpt) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseClientStub interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
+pkg nosql, type DatabaseClientStub interface, GetSyncgroupMembers(*context.T, string, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
+pkg nosql, type DatabaseClientStub interface, GetSyncgroupNames(*context.T, ...rpc.CallOpt) ([]string, error)
+pkg nosql, type DatabaseClientStub interface, GetSyncgroupSpec(*context.T, string, ...rpc.CallOpt) (SyncgroupSpec, string, error)
+pkg nosql, type DatabaseClientStub interface, JoinSyncgroup(*context.T, string, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
+pkg nosql, type DatabaseClientStub interface, KeepBlob(*context.T, BlobRef, uint64, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, LeaveSyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, ListTables(*context.T, ...rpc.CallOpt) ([]string, error)
+pkg nosql, type DatabaseClientStub interface, PauseSync(*context.T, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, PinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, PutBlob(*context.T, BlobRef, ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
+pkg nosql, type DatabaseClientStub interface, ResumeSync(*context.T, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, SetSyncgroupSpec(*context.T, string, SyncgroupSpec, string, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
+pkg nosql, type DatabaseClientStub interface, UnpinBlob(*context.T, BlobRef, ...rpc.CallOpt) error
+pkg nosql, type DatabaseClientStub interface, unexported methods
+pkg nosql, type DatabaseExecClientCall interface { Finish, RecvStream }
+pkg nosql, type DatabaseExecClientCall interface, Finish() error
+pkg nosql, type DatabaseExecClientCall interface, RecvStream() interface {  Advance() bool;; Value() []*vom.RawBytes;; Err() error;}
+pkg nosql, type DatabaseExecClientStream interface { RecvStream }
+pkg nosql, type DatabaseExecClientStream interface, RecvStream() interface {  Advance() bool;; Value() []*vom.RawBytes;; Err() error;}
+pkg nosql, type DatabaseExecServerCall interface, SendStream() interface {  Send(item []*vom.RawBytes) error;}
+pkg nosql, type DatabaseExecServerCall interface, unexported methods
+pkg nosql, type DatabaseExecServerCallStub struct
+pkg nosql, type DatabaseExecServerCallStub struct, embedded rpc.StreamServerCall
+pkg nosql, type DatabaseExecServerStream interface { SendStream }
+pkg nosql, type DatabaseExecServerStream interface, SendStream() interface {  Send(item []*vom.RawBytes) error;}
+pkg nosql, type DatabaseServerMethods interface, Abort(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerMethods interface, BeginBatch(*context.T, rpc.ServerCall, int32, BatchOptions) (string, error)
+pkg nosql, type DatabaseServerMethods interface, Commit(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerMethods interface, Create(*context.T, rpc.ServerCall, *SchemaMetadata, access.Permissions) error
+pkg nosql, type DatabaseServerMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
+pkg nosql, type DatabaseServerMethods interface, CreateSyncgroup(*context.T, rpc.ServerCall, string, SyncgroupSpec, SyncgroupMemberInfo) error
+pkg nosql, type DatabaseServerMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerMethods interface, Destroy(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerMethods interface, DestroySyncgroup(*context.T, rpc.ServerCall, string) error
+pkg nosql, type DatabaseServerMethods interface, EjectFromSyncgroup(*context.T, rpc.ServerCall, string, string) error
+pkg nosql, type DatabaseServerMethods interface, Exec(*context.T, DatabaseExecServerCall, int32, string, []*vom.RawBytes) error
+pkg nosql, type DatabaseServerMethods interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type DatabaseServerMethods interface, FetchBlob(*context.T, BlobManagerFetchBlobServerCall, BlobRef, uint64) error
+pkg nosql, type DatabaseServerMethods interface, GetBlob(*context.T, BlobManagerGetBlobServerCall, BlobRef, int64) error
+pkg nosql, type DatabaseServerMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
+pkg nosql, type DatabaseServerMethods interface, GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseServerMethods interface, GetSchemaMetadata(*context.T, rpc.ServerCall) (SchemaMetadata, error)
+pkg nosql, type DatabaseServerMethods interface, GetSyncgroupMembers(*context.T, rpc.ServerCall, string) (map[string]SyncgroupMemberInfo, error)
+pkg nosql, type DatabaseServerMethods interface, GetSyncgroupNames(*context.T, rpc.ServerCall) ([]string, error)
+pkg nosql, type DatabaseServerMethods interface, GetSyncgroupSpec(*context.T, rpc.ServerCall, string) (SyncgroupSpec, string, error)
+pkg nosql, type DatabaseServerMethods interface, JoinSyncgroup(*context.T, rpc.ServerCall, string, SyncgroupMemberInfo) (SyncgroupSpec, error)
+pkg nosql, type DatabaseServerMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
+pkg nosql, type DatabaseServerMethods interface, LeaveSyncgroup(*context.T, rpc.ServerCall, string) error
+pkg nosql, type DatabaseServerMethods interface, ListTables(*context.T, rpc.ServerCall) ([]string, error)
+pkg nosql, type DatabaseServerMethods interface, PauseSync(*context.T, rpc.ServerCall) error
+pkg nosql, type DatabaseServerMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerMethods interface, PutBlob(*context.T, BlobManagerPutBlobServerCall, BlobRef) error
+pkg nosql, type DatabaseServerMethods interface, ResumeSync(*context.T, rpc.ServerCall) error
+pkg nosql, type DatabaseServerMethods interface, SetSchemaMetadata(*context.T, rpc.ServerCall, SchemaMetadata) error
+pkg nosql, type DatabaseServerMethods interface, SetSyncgroupSpec(*context.T, rpc.ServerCall, string, SyncgroupSpec, string) error
+pkg nosql, type DatabaseServerMethods interface, StartConflictResolver(*context.T, ConflictManagerStartConflictResolverServerCall) error
+pkg nosql, type DatabaseServerMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerMethods interface, unexported methods
+pkg nosql, type DatabaseServerStub interface, Abort(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerStub interface, BeginBatch(*context.T, rpc.ServerCall, int32, BatchOptions) (string, error)
+pkg nosql, type DatabaseServerStub interface, Commit(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerStub interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStub interface, Create(*context.T, rpc.ServerCall, *SchemaMetadata, access.Permissions) error
+pkg nosql, type DatabaseServerStub interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
+pkg nosql, type DatabaseServerStub interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type DatabaseServerStub interface, Destroy(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerStub interface, Exec(*context.T, *DatabaseExecServerCallStub, int32, string, []*vom.RawBytes) error
+pkg nosql, type DatabaseServerStub interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type DatabaseServerStub interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
+pkg nosql, type DatabaseServerStub interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
+pkg nosql, type DatabaseServerStub interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
+pkg nosql, type DatabaseServerStub interface, GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseServerStub interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
+pkg nosql, type DatabaseServerStub interface, ListTables(*context.T, rpc.ServerCall) ([]string, error)
+pkg nosql, type DatabaseServerStub interface, PauseSync(*context.T, rpc.ServerCall) error
+pkg nosql, type DatabaseServerStub interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStub interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
+pkg nosql, type DatabaseServerStub interface, ResumeSync(*context.T, rpc.ServerCall) error
+pkg nosql, type DatabaseServerStub interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
+pkg nosql, type DatabaseServerStub interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStub interface, unexported methods
+pkg nosql, type DatabaseServerStubMethods interface, Abort(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerStubMethods interface, BeginBatch(*context.T, rpc.ServerCall, int32, BatchOptions) (string, error)
+pkg nosql, type DatabaseServerStubMethods interface, Commit(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerStubMethods interface, CommitBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStubMethods interface, Create(*context.T, rpc.ServerCall, *SchemaMetadata, access.Permissions) error
+pkg nosql, type DatabaseServerStubMethods interface, CreateBlob(*context.T, rpc.ServerCall) (BlobRef, error)
+pkg nosql, type DatabaseServerStubMethods interface, DeleteBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStubMethods interface, Destroy(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type DatabaseServerStubMethods interface, Exec(*context.T, *DatabaseExecServerCallStub, int32, string, []*vom.RawBytes) error
+pkg nosql, type DatabaseServerStubMethods interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type DatabaseServerStubMethods interface, FetchBlob(*context.T, *BlobManagerFetchBlobServerCallStub, BlobRef, uint64) error
+pkg nosql, type DatabaseServerStubMethods interface, GetBlob(*context.T, *BlobManagerGetBlobServerCallStub, BlobRef, int64) error
+pkg nosql, type DatabaseServerStubMethods interface, GetBlobSize(*context.T, rpc.ServerCall, BlobRef) (int64, error)
+pkg nosql, type DatabaseServerStubMethods interface, GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseServerStubMethods interface, KeepBlob(*context.T, rpc.ServerCall, BlobRef, uint64) error
+pkg nosql, type DatabaseServerStubMethods interface, ListTables(*context.T, rpc.ServerCall) ([]string, error)
+pkg nosql, type DatabaseServerStubMethods interface, PauseSync(*context.T, rpc.ServerCall) error
+pkg nosql, type DatabaseServerStubMethods interface, PinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStubMethods interface, PutBlob(*context.T, *BlobManagerPutBlobServerCallStub, BlobRef) error
+pkg nosql, type DatabaseServerStubMethods interface, ResumeSync(*context.T, rpc.ServerCall) error
+pkg nosql, type DatabaseServerStubMethods interface, StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
+pkg nosql, type DatabaseServerStubMethods interface, UnpinBlob(*context.T, rpc.ServerCall, BlobRef) error
+pkg nosql, type DatabaseServerStubMethods interface, unexported methods
+pkg nosql, type DatabaseWatcherClientMethods interface, GetResumeMarker(*context.T, ...rpc.CallOpt) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseWatcherClientMethods interface, unexported methods
+pkg nosql, type DatabaseWatcherClientStub interface, GetResumeMarker(*context.T, ...rpc.CallOpt) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseWatcherClientStub interface, unexported methods
+pkg nosql, type DatabaseWatcherServerMethods interface, GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseWatcherServerMethods interface, unexported methods
+pkg nosql, type DatabaseWatcherServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type DatabaseWatcherServerStub interface, GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseWatcherServerStub interface, unexported methods
+pkg nosql, type DatabaseWatcherServerStubMethods interface, GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseWatcherServerStubMethods interface, unexported methods
+pkg nosql, type KeyValue struct
+pkg nosql, type KeyValue struct, Key string
+pkg nosql, type KeyValue struct, Value []byte
+pkg nosql, type KeyValueTarget struct
+pkg nosql, type KeyValueTarget struct, Value *KeyValue
+pkg nosql, type KeyValueTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type KeyValueTarget struct, embedded vdl.TargetBase
+pkg nosql, type Operation interface, FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, type Operation interface, Index() int
+pkg nosql, type Operation interface, Interface() interface{}
+pkg nosql, type Operation interface, Name() string
+pkg nosql, type Operation interface, unexported methods
+pkg nosql, type OperationRead struct
+pkg nosql, type OperationRead struct, Value RowOp
+pkg nosql, type OperationScan struct
+pkg nosql, type OperationScan struct, Value ScanOp
+pkg nosql, type OperationTarget struct
+pkg nosql, type OperationTarget struct, Value *Operation
+pkg nosql, type OperationTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type OperationTarget struct, embedded vdl.TargetBase
+pkg nosql, type OperationWrite struct
+pkg nosql, type OperationWrite struct, Value RowOp
+pkg nosql, type PrefixPermissions struct
+pkg nosql, type PrefixPermissions struct, Perms access.Permissions
+pkg nosql, type PrefixPermissions struct, Prefix string
+pkg nosql, type PrefixPermissionsTarget struct
+pkg nosql, type PrefixPermissionsTarget struct, Value *PrefixPermissions
+pkg nosql, type PrefixPermissionsTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type PrefixPermissionsTarget struct, embedded vdl.TargetBase
+pkg nosql, type ResolutionInfo struct
+pkg nosql, type ResolutionInfo struct, Continued bool
+pkg nosql, type ResolutionInfo struct, Key string
+pkg nosql, type ResolutionInfo struct, Result *Value
+pkg nosql, type ResolutionInfo struct, Selection ValueSelection
+pkg nosql, type ResolutionInfoTarget struct
+pkg nosql, type ResolutionInfoTarget struct, Value *ResolutionInfo
+pkg nosql, type ResolutionInfoTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ResolutionInfoTarget struct, embedded vdl.TargetBase
+pkg nosql, type ResolverType int
+pkg nosql, type ResolverTypeTarget struct
+pkg nosql, type ResolverTypeTarget struct, Value *ResolverType
+pkg nosql, type ResolverTypeTarget struct, embedded vdl.TargetBase
+pkg nosql, type RowClientMethods interface { Delete, Exists, Get, Put }
+pkg nosql, type RowClientMethods interface, Delete(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type RowClientMethods interface, Exists(*context.T, int32, ...rpc.CallOpt) (bool, error)
+pkg nosql, type RowClientMethods interface, Get(*context.T, int32, ...rpc.CallOpt) ([]byte, error)
+pkg nosql, type RowClientMethods interface, Put(*context.T, int32, []byte, ...rpc.CallOpt) error
+pkg nosql, type RowClientStub interface, Delete(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type RowClientStub interface, Exists(*context.T, int32, ...rpc.CallOpt) (bool, error)
+pkg nosql, type RowClientStub interface, Get(*context.T, int32, ...rpc.CallOpt) ([]byte, error)
+pkg nosql, type RowClientStub interface, Put(*context.T, int32, []byte, ...rpc.CallOpt) error
+pkg nosql, type RowClientStub interface, unexported methods
+pkg nosql, type RowInfo struct
+pkg nosql, type RowInfo struct, BatchIds []uint64
+pkg nosql, type RowInfo struct, Op Operation
+pkg nosql, type RowInfoTarget struct
+pkg nosql, type RowInfoTarget struct, Value *RowInfo
+pkg nosql, type RowInfoTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type RowInfoTarget struct, embedded vdl.TargetBase
+pkg nosql, type RowOp struct
+pkg nosql, type RowOp struct, AncestorValue *Value
+pkg nosql, type RowOp struct, Key string
+pkg nosql, type RowOp struct, LocalValue *Value
+pkg nosql, type RowOp struct, RemoteValue *Value
+pkg nosql, type RowOpTarget struct
+pkg nosql, type RowOpTarget struct, Value *RowOp
+pkg nosql, type RowOpTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type RowOpTarget struct, embedded vdl.TargetBase
+pkg nosql, type RowServerMethods interface { Delete, Exists, Get, Put }
+pkg nosql, type RowServerMethods interface, Delete(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type RowServerMethods interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type RowServerMethods interface, Get(*context.T, rpc.ServerCall, int32) ([]byte, error)
+pkg nosql, type RowServerMethods interface, Put(*context.T, rpc.ServerCall, int32, []byte) error
+pkg nosql, type RowServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type RowServerStub interface, unexported methods
+pkg nosql, type RowServerStubMethods RowServerMethods
+pkg nosql, type ScanOp struct
+pkg nosql, type ScanOp struct, Limit string
+pkg nosql, type ScanOp struct, Start string
+pkg nosql, type ScanOpTarget struct
+pkg nosql, type ScanOpTarget struct, Value *ScanOp
+pkg nosql, type ScanOpTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ScanOpTarget struct, embedded vdl.TargetBase
+pkg nosql, type SchemaManagerClientMethods interface { GetSchemaMetadata, SetSchemaMetadata }
+pkg nosql, type SchemaManagerClientMethods interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
+pkg nosql, type SchemaManagerClientMethods interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
+pkg nosql, type SchemaManagerClientStub interface, GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
+pkg nosql, type SchemaManagerClientStub interface, SetSchemaMetadata(*context.T, SchemaMetadata, ...rpc.CallOpt) error
+pkg nosql, type SchemaManagerClientStub interface, unexported methods
+pkg nosql, type SchemaManagerServerMethods interface { GetSchemaMetadata, SetSchemaMetadata }
+pkg nosql, type SchemaManagerServerMethods interface, GetSchemaMetadata(*context.T, rpc.ServerCall) (SchemaMetadata, error)
+pkg nosql, type SchemaManagerServerMethods interface, SetSchemaMetadata(*context.T, rpc.ServerCall, SchemaMetadata) error
+pkg nosql, type SchemaManagerServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type SchemaManagerServerStub interface, unexported methods
+pkg nosql, type SchemaManagerServerStubMethods SchemaManagerServerMethods
+pkg nosql, type SchemaMetadata struct
+pkg nosql, type SchemaMetadata struct, Policy CrPolicy
+pkg nosql, type SchemaMetadata struct, Version int32
+pkg nosql, type SchemaMetadataTarget struct
+pkg nosql, type SchemaMetadataTarget struct, Value *SchemaMetadata
+pkg nosql, type SchemaMetadataTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type SchemaMetadataTarget struct, embedded vdl.TargetBase
+pkg nosql, type StoreChange struct
+pkg nosql, type StoreChange struct, FromSync bool
+pkg nosql, type StoreChange struct, Value []byte
+pkg nosql, type StoreChangeTarget struct
+pkg nosql, type StoreChangeTarget struct, Value *StoreChange
+pkg nosql, type StoreChangeTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type StoreChangeTarget struct, embedded vdl.TargetBase
+pkg nosql, type SyncgroupManagerClientMethods interface { CreateSyncgroup, DestroySyncgroup, EjectFromSyncgroup, GetSyncgroupMembers, GetSyncgroupNames, GetSyncgroupSpec, JoinSyncgroup, LeaveSyncgroup, SetSyncgroupSpec }
+pkg nosql, type SyncgroupManagerClientMethods interface, CreateSyncgroup(*context.T, string, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientMethods interface, DestroySyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientMethods interface, EjectFromSyncgroup(*context.T, string, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientMethods interface, GetSyncgroupMembers(*context.T, string, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
+pkg nosql, type SyncgroupManagerClientMethods interface, GetSyncgroupNames(*context.T, ...rpc.CallOpt) ([]string, error)
+pkg nosql, type SyncgroupManagerClientMethods interface, GetSyncgroupSpec(*context.T, string, ...rpc.CallOpt) (SyncgroupSpec, string, error)
+pkg nosql, type SyncgroupManagerClientMethods interface, JoinSyncgroup(*context.T, string, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
+pkg nosql, type SyncgroupManagerClientMethods interface, LeaveSyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientMethods interface, SetSyncgroupSpec(*context.T, string, SyncgroupSpec, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientStub interface, CreateSyncgroup(*context.T, string, SyncgroupSpec, SyncgroupMemberInfo, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientStub interface, DestroySyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientStub interface, EjectFromSyncgroup(*context.T, string, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientStub interface, GetSyncgroupMembers(*context.T, string, ...rpc.CallOpt) (map[string]SyncgroupMemberInfo, error)
+pkg nosql, type SyncgroupManagerClientStub interface, GetSyncgroupNames(*context.T, ...rpc.CallOpt) ([]string, error)
+pkg nosql, type SyncgroupManagerClientStub interface, GetSyncgroupSpec(*context.T, string, ...rpc.CallOpt) (SyncgroupSpec, string, error)
+pkg nosql, type SyncgroupManagerClientStub interface, JoinSyncgroup(*context.T, string, SyncgroupMemberInfo, ...rpc.CallOpt) (SyncgroupSpec, error)
+pkg nosql, type SyncgroupManagerClientStub interface, LeaveSyncgroup(*context.T, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientStub interface, SetSyncgroupSpec(*context.T, string, SyncgroupSpec, string, ...rpc.CallOpt) error
+pkg nosql, type SyncgroupManagerClientStub interface, unexported methods
+pkg nosql, type SyncgroupManagerServerMethods interface { CreateSyncgroup, DestroySyncgroup, EjectFromSyncgroup, GetSyncgroupMembers, GetSyncgroupNames, GetSyncgroupSpec, JoinSyncgroup, LeaveSyncgroup, SetSyncgroupSpec }
+pkg nosql, type SyncgroupManagerServerMethods interface, CreateSyncgroup(*context.T, rpc.ServerCall, string, SyncgroupSpec, SyncgroupMemberInfo) error
+pkg nosql, type SyncgroupManagerServerMethods interface, DestroySyncgroup(*context.T, rpc.ServerCall, string) error
+pkg nosql, type SyncgroupManagerServerMethods interface, EjectFromSyncgroup(*context.T, rpc.ServerCall, string, string) error
+pkg nosql, type SyncgroupManagerServerMethods interface, GetSyncgroupMembers(*context.T, rpc.ServerCall, string) (map[string]SyncgroupMemberInfo, error)
+pkg nosql, type SyncgroupManagerServerMethods interface, GetSyncgroupNames(*context.T, rpc.ServerCall) ([]string, error)
+pkg nosql, type SyncgroupManagerServerMethods interface, GetSyncgroupSpec(*context.T, rpc.ServerCall, string) (SyncgroupSpec, string, error)
+pkg nosql, type SyncgroupManagerServerMethods interface, JoinSyncgroup(*context.T, rpc.ServerCall, string, SyncgroupMemberInfo) (SyncgroupSpec, error)
+pkg nosql, type SyncgroupManagerServerMethods interface, LeaveSyncgroup(*context.T, rpc.ServerCall, string) error
+pkg nosql, type SyncgroupManagerServerMethods interface, SetSyncgroupSpec(*context.T, rpc.ServerCall, string, SyncgroupSpec, string) error
+pkg nosql, type SyncgroupManagerServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type SyncgroupManagerServerStub interface, unexported methods
+pkg nosql, type SyncgroupManagerServerStubMethods SyncgroupManagerServerMethods
+pkg nosql, type SyncgroupMemberInfo struct
+pkg nosql, type SyncgroupMemberInfo struct, IsServer bool
+pkg nosql, type SyncgroupMemberInfo struct, SyncPriority byte
+pkg nosql, type SyncgroupMemberInfoTarget struct
+pkg nosql, type SyncgroupMemberInfoTarget struct, Value *SyncgroupMemberInfo
+pkg nosql, type SyncgroupMemberInfoTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type SyncgroupMemberInfoTarget struct, embedded vdl.TargetBase
+pkg nosql, type SyncgroupSpec struct
+pkg nosql, type SyncgroupSpec struct, Description string
+pkg nosql, type SyncgroupSpec struct, IsPrivate bool
+pkg nosql, type SyncgroupSpec struct, MountTables []string
+pkg nosql, type SyncgroupSpec struct, Perms access.Permissions
+pkg nosql, type SyncgroupSpec struct, Prefixes []TableRow
+pkg nosql, type SyncgroupSpecTarget struct
+pkg nosql, type SyncgroupSpecTarget struct, Value *SyncgroupSpec
+pkg nosql, type SyncgroupSpecTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type SyncgroupSpecTarget struct, embedded vdl.TargetBase
+pkg nosql, type TableClientMethods interface { Create, DeletePrefixPermissions, DeleteRange, Destroy, Exists, GetPermissions, GetPrefixPermissions, Scan, SetPermissions, SetPrefixPermissions }
+pkg nosql, type TableClientMethods interface, Create(*context.T, int32, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type TableClientMethods interface, DeletePrefixPermissions(*context.T, int32, string, ...rpc.CallOpt) error
+pkg nosql, type TableClientMethods interface, DeleteRange(*context.T, int32, []byte, []byte, ...rpc.CallOpt) error
+pkg nosql, type TableClientMethods interface, Destroy(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type TableClientMethods interface, Exists(*context.T, int32, ...rpc.CallOpt) (bool, error)
+pkg nosql, type TableClientMethods interface, GetPermissions(*context.T, int32, ...rpc.CallOpt) (access.Permissions, error)
+pkg nosql, type TableClientMethods interface, GetPrefixPermissions(*context.T, int32, string, ...rpc.CallOpt) ([]PrefixPermissions, error)
+pkg nosql, type TableClientMethods interface, Scan(*context.T, int32, []byte, []byte, ...rpc.CallOpt) (TableScanClientCall, error)
+pkg nosql, type TableClientMethods interface, SetPermissions(*context.T, int32, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type TableClientMethods interface, SetPrefixPermissions(*context.T, int32, string, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, Create(*context.T, int32, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, DeletePrefixPermissions(*context.T, int32, string, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, DeleteRange(*context.T, int32, []byte, []byte, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, Destroy(*context.T, int32, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, Exists(*context.T, int32, ...rpc.CallOpt) (bool, error)
+pkg nosql, type TableClientStub interface, GetPermissions(*context.T, int32, ...rpc.CallOpt) (access.Permissions, error)
+pkg nosql, type TableClientStub interface, GetPrefixPermissions(*context.T, int32, string, ...rpc.CallOpt) ([]PrefixPermissions, error)
+pkg nosql, type TableClientStub interface, Scan(*context.T, int32, []byte, []byte, ...rpc.CallOpt) (TableScanClientCall, error)
+pkg nosql, type TableClientStub interface, SetPermissions(*context.T, int32, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, SetPrefixPermissions(*context.T, int32, string, access.Permissions, ...rpc.CallOpt) error
+pkg nosql, type TableClientStub interface, unexported methods
+pkg nosql, type TableRow struct
+pkg nosql, type TableRow struct, Row string
+pkg nosql, type TableRow struct, TableName string
+pkg nosql, type TableRowTarget struct
+pkg nosql, type TableRowTarget struct, Value *TableRow
+pkg nosql, type TableRowTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type TableRowTarget struct, embedded vdl.TargetBase
+pkg nosql, type TableScanClientCall interface { Finish, RecvStream }
+pkg nosql, type TableScanClientCall interface, Finish() error
+pkg nosql, type TableScanClientCall interface, RecvStream() interface {  Advance() bool;; Value() KeyValue;; Err() error;}
+pkg nosql, type TableScanClientStream interface { RecvStream }
+pkg nosql, type TableScanClientStream interface, RecvStream() interface {  Advance() bool;; Value() KeyValue;; Err() error;}
+pkg nosql, type TableScanServerCall interface, SendStream() interface {  Send(item KeyValue) error;}
+pkg nosql, type TableScanServerCall interface, unexported methods
+pkg nosql, type TableScanServerCallStub struct
+pkg nosql, type TableScanServerCallStub struct, embedded rpc.StreamServerCall
+pkg nosql, type TableScanServerStream interface { SendStream }
+pkg nosql, type TableScanServerStream interface, SendStream() interface {  Send(item KeyValue) error;}
+pkg nosql, type TableServerMethods interface { Create, DeletePrefixPermissions, DeleteRange, Destroy, Exists, GetPermissions, GetPrefixPermissions, Scan, SetPermissions, SetPrefixPermissions }
+pkg nosql, type TableServerMethods interface, Create(*context.T, rpc.ServerCall, int32, access.Permissions) error
+pkg nosql, type TableServerMethods interface, DeletePrefixPermissions(*context.T, rpc.ServerCall, int32, string) error
+pkg nosql, type TableServerMethods interface, DeleteRange(*context.T, rpc.ServerCall, int32, []byte, []byte) error
+pkg nosql, type TableServerMethods interface, Destroy(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type TableServerMethods interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type TableServerMethods interface, GetPermissions(*context.T, rpc.ServerCall, int32) (access.Permissions, error)
+pkg nosql, type TableServerMethods interface, GetPrefixPermissions(*context.T, rpc.ServerCall, int32, string) ([]PrefixPermissions, error)
+pkg nosql, type TableServerMethods interface, Scan(*context.T, TableScanServerCall, int32, []byte, []byte) error
+pkg nosql, type TableServerMethods interface, SetPermissions(*context.T, rpc.ServerCall, int32, access.Permissions) error
+pkg nosql, type TableServerMethods interface, SetPrefixPermissions(*context.T, rpc.ServerCall, int32, string, access.Permissions) error
+pkg nosql, type TableServerStub interface { Create, DeletePrefixPermissions, DeleteRange, Describe__, Destroy, Exists, GetPermissions, GetPrefixPermissions, Scan, SetPermissions, SetPrefixPermissions }
+pkg nosql, type TableServerStub interface, Create(*context.T, rpc.ServerCall, int32, access.Permissions) error
+pkg nosql, type TableServerStub interface, DeletePrefixPermissions(*context.T, rpc.ServerCall, int32, string) error
+pkg nosql, type TableServerStub interface, DeleteRange(*context.T, rpc.ServerCall, int32, []byte, []byte) error
+pkg nosql, type TableServerStub interface, Describe__() []rpc.InterfaceDesc
+pkg nosql, type TableServerStub interface, Destroy(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type TableServerStub interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type TableServerStub interface, GetPermissions(*context.T, rpc.ServerCall, int32) (access.Permissions, error)
+pkg nosql, type TableServerStub interface, GetPrefixPermissions(*context.T, rpc.ServerCall, int32, string) ([]PrefixPermissions, error)
+pkg nosql, type TableServerStub interface, Scan(*context.T, *TableScanServerCallStub, int32, []byte, []byte) error
+pkg nosql, type TableServerStub interface, SetPermissions(*context.T, rpc.ServerCall, int32, access.Permissions) error
+pkg nosql, type TableServerStub interface, SetPrefixPermissions(*context.T, rpc.ServerCall, int32, string, access.Permissions) error
+pkg nosql, type TableServerStubMethods interface { Create, DeletePrefixPermissions, DeleteRange, Destroy, Exists, GetPermissions, GetPrefixPermissions, Scan, SetPermissions, SetPrefixPermissions }
+pkg nosql, type TableServerStubMethods interface, Create(*context.T, rpc.ServerCall, int32, access.Permissions) error
+pkg nosql, type TableServerStubMethods interface, DeletePrefixPermissions(*context.T, rpc.ServerCall, int32, string) error
+pkg nosql, type TableServerStubMethods interface, DeleteRange(*context.T, rpc.ServerCall, int32, []byte, []byte) error
+pkg nosql, type TableServerStubMethods interface, Destroy(*context.T, rpc.ServerCall, int32) error
+pkg nosql, type TableServerStubMethods interface, Exists(*context.T, rpc.ServerCall, int32) (bool, error)
+pkg nosql, type TableServerStubMethods interface, GetPermissions(*context.T, rpc.ServerCall, int32) (access.Permissions, error)
+pkg nosql, type TableServerStubMethods interface, GetPrefixPermissions(*context.T, rpc.ServerCall, int32, string) ([]PrefixPermissions, error)
+pkg nosql, type TableServerStubMethods interface, Scan(*context.T, *TableScanServerCallStub, int32, []byte, []byte) error
+pkg nosql, type TableServerStubMethods interface, SetPermissions(*context.T, rpc.ServerCall, int32, access.Permissions) error
+pkg nosql, type TableServerStubMethods interface, SetPrefixPermissions(*context.T, rpc.ServerCall, int32, string, access.Permissions) error
+pkg nosql, type Value struct
+pkg nosql, type Value struct, Bytes []byte
+pkg nosql, type Value struct, State ValueState
+pkg nosql, type Value struct, WriteTs time.Time
+pkg nosql, type ValueSelection int
+pkg nosql, type ValueSelectionTarget struct
+pkg nosql, type ValueSelectionTarget struct, Value *ValueSelection
+pkg nosql, type ValueSelectionTarget struct, embedded vdl.TargetBase
+pkg nosql, type ValueState int
+pkg nosql, type ValueStateTarget struct
+pkg nosql, type ValueStateTarget struct, Value *ValueState
+pkg nosql, type ValueStateTarget struct, embedded vdl.TargetBase
+pkg nosql, type ValueTarget struct
+pkg nosql, type ValueTarget struct, Value *Value
+pkg nosql, type ValueTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ValueTarget struct, embedded vdl.TargetBase
+pkg nosql, var BatchSourceAll [...]BatchSource
+pkg nosql, var BlobFetchStateAll [...]BlobFetchState
+pkg nosql, var BlobManagerDesc rpc.InterfaceDesc
+pkg nosql, var ConflictManagerDesc rpc.InterfaceDesc
+pkg nosql, var DatabaseDesc rpc.InterfaceDesc
+pkg nosql, var DatabaseWatcherDesc rpc.InterfaceDesc
+pkg nosql, var ErrBlobNotCommitted unknown-type
+pkg nosql, var ErrBoundToBatch unknown-type
+pkg nosql, var ErrConcurrentBatch unknown-type
+pkg nosql, var ErrNotBoundToBatch unknown-type
+pkg nosql, var ErrReadOnlyBatch unknown-type
+pkg nosql, var ErrSchemaVersionMismatch unknown-type
+pkg nosql, var ErrSyncgroupJoinFailed unknown-type
+pkg nosql, var ResolverTypeAll [...]ResolverType
+pkg nosql, var RowDesc rpc.InterfaceDesc
+pkg nosql, var SchemaManagerDesc rpc.InterfaceDesc
+pkg nosql, var SyncgroupManagerDesc rpc.InterfaceDesc
+pkg nosql, var TableDesc rpc.InterfaceDesc
+pkg nosql, var ValueSelectionAll [...]ValueSelection
+pkg nosql, var ValueStateAll [...]ValueState
diff --git a/services/syncbase/nosql/nosql.vdl.go b/services/syncbase/nosql/nosql.vdl.go
new file mode 100644
index 0000000..e751355
--- /dev/null
+++ b/services/syncbase/nosql/nosql.vdl.go
@@ -0,0 +1,6918 @@
+// Copyright 2015 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: nosql
+
+// Package nosql defines the wire API for the NoSQL part of Syncbase.
+package nosql
+
+import (
+	"fmt"
+	"io"
+	"time"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/i18n"
+	"v.io/v23/rpc"
+	"v.io/v23/security/access"
+	"v.io/v23/services/permissions"
+	"v.io/v23/services/watch"
+	"v.io/v23/vdl"
+	time_2 "v.io/v23/vdlroot/time"
+	"v.io/v23/verror"
+	"v.io/v23/vom"
+)
+
+var _ = __VDLInit() // Must be first; see __VDLInit comments for details.
+
+//////////////////////////////////////////////////
+// Type definitions
+
+// BatchOptions configures a batch.
+// TODO(sadovsky): Add more options, e.g. to configure isolation, timeouts,
+// whether to track the read set and/or write set, etc.
+// TODO(sadovsky): Maybe add a DefaultBatchOptions() function that initializes
+// BatchOptions with our desired defaults. Clients would be encouraged to
+// initialize their BatchOptions object using that function and then modify it
+// to their liking.
+type BatchOptions struct {
+	// Arbitrary string, typically used to describe the intent behind a batch.
+	// Hints are surfaced to clients during conflict resolution.
+	// TODO(sadovsky): Use "any" here?
+	Hint string
+	// ReadOnly specifies whether the batch should allow writes.
+	// If ReadOnly is set to true, Abort() should be used to release any resources
+	// associated with this batch (though it is not strictly required), and
+	// Commit() will always fail.
+	ReadOnly bool
+}
+
+func (BatchOptions) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.BatchOptions"`
+}) {
+}
+
+func (m *BatchOptions) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Hint")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Hint == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Hint), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("ReadOnly")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.ReadOnly == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.ReadOnly), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *BatchOptions) MakeVDLTarget() vdl.Target {
+	return &BatchOptionsTarget{Value: m}
+}
+
+type BatchOptionsTarget struct {
+	Value          *BatchOptions
+	hintTarget     vdl.StringTarget
+	readOnlyTarget vdl.BoolTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *BatchOptionsTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*BatchOptions)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *BatchOptionsTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Hint":
+		t.hintTarget.Value = &t.Value.Hint
+		target, err := &t.hintTarget, error(nil)
+		return nil, target, err
+	case "ReadOnly":
+		t.readOnlyTarget.Value = &t.Value.ReadOnly
+		target, err := &t.readOnlyTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.BatchOptions", name)
+	}
+}
+func (t *BatchOptionsTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *BatchOptionsTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *BatchOptionsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BatchOptions{}
+	return nil
+}
+
+// PrefixPermissions represents a pair of (prefix, perms).
+type PrefixPermissions struct {
+	Prefix string
+	Perms  access.Permissions
+}
+
+func (PrefixPermissions) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.PrefixPermissions"`
+}) {
+}
+
+func (m *PrefixPermissions) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Prefix")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Prefix == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Prefix), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Perms")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var7 bool
+		if len(m.Perms) == 0 {
+			var7 = true
+		}
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Perms.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *PrefixPermissions) MakeVDLTarget() vdl.Target {
+	return &PrefixPermissionsTarget{Value: m}
+}
+
+type PrefixPermissionsTarget struct {
+	Value        *PrefixPermissions
+	prefixTarget vdl.StringTarget
+	permsTarget  access.PermissionsTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *PrefixPermissionsTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*PrefixPermissions)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *PrefixPermissionsTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Prefix":
+		t.prefixTarget.Value = &t.Value.Prefix
+		target, err := &t.prefixTarget, error(nil)
+		return nil, target, err
+	case "Perms":
+		t.permsTarget.Value = &t.Value.Perms
+		target, err := &t.permsTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.PrefixPermissions", name)
+	}
+}
+func (t *PrefixPermissionsTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *PrefixPermissionsTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *PrefixPermissionsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = PrefixPermissions{}
+	return nil
+}
+
+// KeyValue is a key-value pair.
+type KeyValue struct {
+	Key   string
+	Value []byte
+}
+
+func (KeyValue) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.KeyValue"`
+}) {
+}
+
+func (m *KeyValue) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Value")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var7 bool
+		if len(m.Value) == 0 {
+			var7 = true
+		}
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Value), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *KeyValue) MakeVDLTarget() vdl.Target {
+	return &KeyValueTarget{Value: m}
+}
+
+type KeyValueTarget struct {
+	Value       *KeyValue
+	keyTarget   vdl.StringTarget
+	valueTarget vdl.BytesTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *KeyValueTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*KeyValue)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *KeyValueTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Key":
+		t.keyTarget.Value = &t.Value.Key
+		target, err := &t.keyTarget, error(nil)
+		return nil, target, err
+	case "Value":
+		t.valueTarget.Value = &t.Value.Value
+		target, err := &t.valueTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.KeyValue", name)
+	}
+}
+func (t *KeyValueTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *KeyValueTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *KeyValueTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = KeyValue{}
+	return nil
+}
+
+// TableRow encapsulates the table name and row key or row prefix.
+type TableRow struct {
+	TableName string
+	Row       string
+}
+
+func (TableRow) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.TableRow"`
+}) {
+}
+
+func (m *TableRow) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("TableName")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.TableName == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.TableName), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Row")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.Row == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Row), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *TableRow) MakeVDLTarget() vdl.Target {
+	return &TableRowTarget{Value: m}
+}
+
+type TableRowTarget struct {
+	Value           *TableRow
+	tableNameTarget vdl.StringTarget
+	rowTarget       vdl.StringTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *TableRowTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*TableRow)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *TableRowTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "TableName":
+		t.tableNameTarget.Value = &t.Value.TableName
+		target, err := &t.tableNameTarget, error(nil)
+		return nil, target, err
+	case "Row":
+		t.rowTarget.Value = &t.Value.Row
+		target, err := &t.rowTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.TableRow", name)
+	}
+}
+func (t *TableRowTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *TableRowTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *TableRowTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TableRow{}
+	return nil
+}
+
+// SyncgroupSpec contains the specification for a syncgroup.
+type SyncgroupSpec struct {
+	// Human-readable description of this syncgroup.
+	Description string
+	// Permissions governing access to this syncgroup.
+	Perms access.Permissions
+	// Data (tableName-rowPrefix pairs) covered by this syncgroup.
+	Prefixes []TableRow
+	// Mount tables at which to advertise this syncgroup, for rendezvous purposes.
+	// (Note that in addition to these mount tables, Syncbase also uses
+	// network-neighborhood-based discovery for rendezvous.)
+	// We expect most clients to specify a single mount table, but we accept an
+	// array of mount tables to permit the mount table to be changed over time
+	// without disruption.
+	// TODO(hpucha): Figure out a convention for advertising syncgroups in the
+	// mount table.
+	MountTables []string
+	// Specifies the privacy of this syncgroup. More specifically, specifies
+	// whether blobs in this syncgroup can be served to clients presenting
+	// blobrefs obtained from other syncgroups.
+	IsPrivate bool
+}
+
+func (SyncgroupSpec) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.SyncgroupSpec"`
+}) {
+}
+
+func (m *SyncgroupSpec) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Description")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Description == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Description), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Perms")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var7 bool
+		if len(m.Perms) == 0 {
+			var7 = true
+		}
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Perms.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Prefixes")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var10 bool
+		if len(m.Prefixes) == 0 {
+			var10 = true
+		}
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(2).Type, len(m.Prefixes))
+			if err != nil {
+				return err
+			}
+			for i, elem13 := range m.Prefixes {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
+
+				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+			return err
+		}
+	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("MountTables")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var16 bool
+		if len(m.MountTables) == 0 {
+			var16 = true
+		}
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget17, err := fieldTarget15.StartList(tt.NonOptional().Field(3).Type, len(m.MountTables))
+			if err != nil {
+				return err
+			}
+			for i, elem19 := range m.MountTables {
+				elemTarget18, err := listTarget17.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget18.FromString(string(elem19), tt.NonOptional().Field(3).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget17.FinishElem(elemTarget18); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget15.FinishList(listTarget17); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
+			return err
+		}
+	}
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("IsPrivate")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var22 := (m.IsPrivate == false)
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget21.FromBool(bool(m.IsPrivate), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *SyncgroupSpec) MakeVDLTarget() vdl.Target {
+	return &SyncgroupSpecTarget{Value: m}
+}
+
+type SyncgroupSpecTarget struct {
+	Value             *SyncgroupSpec
+	descriptionTarget vdl.StringTarget
+	permsTarget       access.PermissionsTarget
+	prefixesTarget    __VDLTarget1_list
+	mountTablesTarget vdl.StringSliceTarget
+	isPrivateTarget   vdl.BoolTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *SyncgroupSpecTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*SyncgroupSpec)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *SyncgroupSpecTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Description":
+		t.descriptionTarget.Value = &t.Value.Description
+		target, err := &t.descriptionTarget, error(nil)
+		return nil, target, err
+	case "Perms":
+		t.permsTarget.Value = &t.Value.Perms
+		target, err := &t.permsTarget, error(nil)
+		return nil, target, err
+	case "Prefixes":
+		t.prefixesTarget.Value = &t.Value.Prefixes
+		target, err := &t.prefixesTarget, error(nil)
+		return nil, target, err
+	case "MountTables":
+		t.mountTablesTarget.Value = &t.Value.MountTables
+		target, err := &t.mountTablesTarget, error(nil)
+		return nil, target, err
+	case "IsPrivate":
+		t.isPrivateTarget.Value = &t.Value.IsPrivate
+		target, err := &t.isPrivateTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.SyncgroupSpec", name)
+	}
+}
+func (t *SyncgroupSpecTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *SyncgroupSpecTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *SyncgroupSpecTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SyncgroupSpec{}
+	return nil
+}
+
+// []TableRow
+type __VDLTarget1_list struct {
+	Value      *[]TableRow
+	elemTarget TableRowTarget
+	vdl.TargetBase
+	vdl.ListTargetBase
+}
+
+func (t *__VDLTarget1_list) StartList(tt *vdl.Type, len int) (vdl.ListTarget, error) {
+
+	if ttWant := vdl.TypeOf((*[]TableRow)(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	if cap(*t.Value) < len {
+		*t.Value = make([]TableRow, len)
+	} else {
+		*t.Value = (*t.Value)[:len]
+	}
+	return t, nil
+}
+func (t *__VDLTarget1_list) StartElem(index int) (elem vdl.Target, _ error) {
+	t.elemTarget.Value = &(*t.Value)[index]
+	target, err := &t.elemTarget, error(nil)
+	return target, err
+}
+func (t *__VDLTarget1_list) FinishElem(elem vdl.Target) error {
+	return nil
+}
+func (t *__VDLTarget1_list) FinishList(elem vdl.ListTarget) error {
+
+	return nil
+}
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []TableRow(nil)
+	return nil
+}
+
+// SyncgroupMemberInfo contains per-member metadata.
+type SyncgroupMemberInfo struct {
+	SyncPriority byte
+	IsServer     bool // This member should be given blob ownership preferentially.
+}
+
+func (SyncgroupMemberInfo) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.SyncgroupMemberInfo"`
+}) {
+}
+
+func (m *SyncgroupMemberInfo) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("SyncPriority")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.SyncPriority == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.SyncPriority), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("IsServer")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.IsServer == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.IsServer), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *SyncgroupMemberInfo) MakeVDLTarget() vdl.Target {
+	return &SyncgroupMemberInfoTarget{Value: m}
+}
+
+type SyncgroupMemberInfoTarget struct {
+	Value              *SyncgroupMemberInfo
+	syncPriorityTarget vdl.ByteTarget
+	isServerTarget     vdl.BoolTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *SyncgroupMemberInfoTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*SyncgroupMemberInfo)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *SyncgroupMemberInfoTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "SyncPriority":
+		t.syncPriorityTarget.Value = &t.Value.SyncPriority
+		target, err := &t.syncPriorityTarget, error(nil)
+		return nil, target, err
+	case "IsServer":
+		t.isServerTarget.Value = &t.Value.IsServer
+		target, err := &t.isServerTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.SyncgroupMemberInfo", name)
+	}
+}
+func (t *SyncgroupMemberInfoTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *SyncgroupMemberInfoTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *SyncgroupMemberInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SyncgroupMemberInfo{}
+	return nil
+}
+
+// ResolverType defines the possible conflict resolution policies.
+// A Conflict is defined as presence of two independent sets of updates
+// originating from the same version of an object. Syncbase
+// uses version vectors to determine sequence of changes to a given row. Hence
+// if device A updates a row with key "foo" from version V3 to V4, then syncs
+// with device B which further updates the same row from version V4 to V5 and
+// then V5 is synced back to device A, device A will see V5 as a forward
+// progression of "foo" and not a conflict with V3 of "foo". But in the
+// meantime if device A had already updated "foo" again from version V4 to
+// version V6 then there is a conflict between V5 and V6 with V4 being the
+// common ancestor.
+type ResolverType int
+
+const (
+	ResolverTypeLastWins ResolverType = iota
+	ResolverTypeAppResolves
+	ResolverTypeDefer
+)
+
+// ResolverTypeAll holds all labels for ResolverType.
+var ResolverTypeAll = [...]ResolverType{ResolverTypeLastWins, ResolverTypeAppResolves, ResolverTypeDefer}
+
+// ResolverTypeFromString creates a ResolverType from a string label.
+func ResolverTypeFromString(label string) (x ResolverType, err error) {
+	err = x.Set(label)
+	return
+}
+
+// Set assigns label to x.
+func (x *ResolverType) Set(label string) error {
+	switch label {
+	case "LastWins", "lastwins":
+		*x = ResolverTypeLastWins
+		return nil
+	case "AppResolves", "appresolves":
+		*x = ResolverTypeAppResolves
+		return nil
+	case "Defer", "defer":
+		*x = ResolverTypeDefer
+		return nil
+	}
+	*x = -1
+	return fmt.Errorf("unknown label %q in nosql.ResolverType", label)
+}
+
+// String returns the string label of x.
+func (x ResolverType) String() string {
+	switch x {
+	case ResolverTypeLastWins:
+		return "LastWins"
+	case ResolverTypeAppResolves:
+		return "AppResolves"
+	case ResolverTypeDefer:
+		return "Defer"
+	}
+	return ""
+}
+
+func (ResolverType) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.ResolverType"`
+	Enum struct{ LastWins, AppResolves, Defer string }
+}) {
+}
+
+func (m *ResolverType) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *ResolverType) MakeVDLTarget() vdl.Target {
+	return &ResolverTypeTarget{Value: m}
+}
+
+type ResolverTypeTarget struct {
+	Value *ResolverType
+	vdl.TargetBase
+}
+
+func (t *ResolverTypeTarget) FromEnumLabel(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*ResolverType)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	switch src {
+	case "LastWins":
+		*t.Value = 0
+	case "AppResolves":
+		*t.Value = 1
+	case "Defer":
+		*t.Value = 2
+	default:
+		return fmt.Errorf("label %s not in enum ResolverTypeLastWins", src)
+	}
+
+	return nil
+}
+func (t *ResolverTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ResolverTypeLastWins
+	return nil
+}
+
+// BatchSource represents where the batch was committed.
+type BatchSource int
+
+const (
+	BatchSourceLocal BatchSource = iota
+	BatchSourceRemote
+)
+
+// BatchSourceAll holds all labels for BatchSource.
+var BatchSourceAll = [...]BatchSource{BatchSourceLocal, BatchSourceRemote}
+
+// BatchSourceFromString creates a BatchSource from a string label.
+func BatchSourceFromString(label string) (x BatchSource, err error) {
+	err = x.Set(label)
+	return
+}
+
+// Set assigns label to x.
+func (x *BatchSource) Set(label string) error {
+	switch label {
+	case "Local", "local":
+		*x = BatchSourceLocal
+		return nil
+	case "Remote", "remote":
+		*x = BatchSourceRemote
+		return nil
+	}
+	*x = -1
+	return fmt.Errorf("unknown label %q in nosql.BatchSource", label)
+}
+
+// String returns the string label of x.
+func (x BatchSource) String() string {
+	switch x {
+	case BatchSourceLocal:
+		return "Local"
+	case BatchSourceRemote:
+		return "Remote"
+	}
+	return ""
+}
+
+func (BatchSource) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.BatchSource"`
+	Enum struct{ Local, Remote string }
+}) {
+}
+
+func (m *BatchSource) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *BatchSource) MakeVDLTarget() vdl.Target {
+	return &BatchSourceTarget{Value: m}
+}
+
+type BatchSourceTarget struct {
+	Value *BatchSource
+	vdl.TargetBase
+}
+
+func (t *BatchSourceTarget) FromEnumLabel(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*BatchSource)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	switch src {
+	case "Local":
+		*t.Value = 0
+	case "Remote":
+		*t.Value = 1
+	default:
+		return fmt.Errorf("label %s not in enum BatchSourceLocal", src)
+	}
+
+	return nil
+}
+func (t *BatchSourceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BatchSourceLocal
+	return nil
+}
+
+type BatchInfo struct {
+	// Id is an identifier for a batch contained in a conflict. It is
+	// unique only in the context of a given conflict. Its purpose is solely to
+	// group one or more RowInfo objects together to represent a batch that
+	// was committed by the client.
+	Id uint64
+	// Hint is the hint provided by the client when this batch was committed.
+	Hint string
+	// Source states where the batch comes from.
+	Source BatchSource
+}
+
+func (BatchInfo) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.BatchInfo"`
+}) {
+}
+
+func (m *BatchInfo) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Id == uint64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.Id), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Hint")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.Hint == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Hint), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Source")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Source == BatchSourceLocal)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Source.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *BatchInfo) MakeVDLTarget() vdl.Target {
+	return &BatchInfoTarget{Value: m}
+}
+
+type BatchInfoTarget struct {
+	Value        *BatchInfo
+	idTarget     vdl.Uint64Target
+	hintTarget   vdl.StringTarget
+	sourceTarget BatchSourceTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *BatchInfoTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*BatchInfo)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *BatchInfoTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Id":
+		t.idTarget.Value = &t.Value.Id
+		target, err := &t.idTarget, error(nil)
+		return nil, target, err
+	case "Hint":
+		t.hintTarget.Value = &t.Value.Hint
+		target, err := &t.hintTarget, error(nil)
+		return nil, target, err
+	case "Source":
+		t.sourceTarget.Value = &t.Value.Source
+		target, err := &t.sourceTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.BatchInfo", name)
+	}
+}
+func (t *BatchInfoTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *BatchInfoTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *BatchInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BatchInfo{}
+	return nil
+}
+
+// ValueState represents the state for Value object providing information about
+// whether the Value object's Byte field is empty or not.
+type ValueState int
+
+const (
+	ValueStateExists ValueState = iota
+	ValueStateNoExists
+	ValueStateDeleted
+	ValueStateUnknown
+)
+
+// ValueStateAll holds all labels for ValueState.
+var ValueStateAll = [...]ValueState{ValueStateExists, ValueStateNoExists, ValueStateDeleted, ValueStateUnknown}
+
+// ValueStateFromString creates a ValueState from a string label.
+func ValueStateFromString(label string) (x ValueState, err error) {
+	err = x.Set(label)
+	return
+}
+
+// Set assigns label to x.
+func (x *ValueState) Set(label string) error {
+	switch label {
+	case "Exists", "exists":
+		*x = ValueStateExists
+		return nil
+	case "NoExists", "noexists":
+		*x = ValueStateNoExists
+		return nil
+	case "Deleted", "deleted":
+		*x = ValueStateDeleted
+		return nil
+	case "Unknown", "unknown":
+		*x = ValueStateUnknown
+		return nil
+	}
+	*x = -1
+	return fmt.Errorf("unknown label %q in nosql.ValueState", label)
+}
+
+// String returns the string label of x.
+func (x ValueState) String() string {
+	switch x {
+	case ValueStateExists:
+		return "Exists"
+	case ValueStateNoExists:
+		return "NoExists"
+	case ValueStateDeleted:
+		return "Deleted"
+	case ValueStateUnknown:
+		return "Unknown"
+	}
+	return ""
+}
+
+func (ValueState) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.ValueState"`
+	Enum struct{ Exists, NoExists, Deleted, Unknown string }
+}) {
+}
+
+func (m *ValueState) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *ValueState) MakeVDLTarget() vdl.Target {
+	return &ValueStateTarget{Value: m}
+}
+
+type ValueStateTarget struct {
+	Value *ValueState
+	vdl.TargetBase
+}
+
+func (t *ValueStateTarget) FromEnumLabel(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*ValueState)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	switch src {
+	case "Exists":
+		*t.Value = 0
+	case "NoExists":
+		*t.Value = 1
+	case "Deleted":
+		*t.Value = 2
+	case "Unknown":
+		*t.Value = 3
+	default:
+		return fmt.Errorf("label %s not in enum ValueStateExists", src)
+	}
+
+	return nil
+}
+func (t *ValueStateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ValueStateExists
+	return nil
+}
+
+// Value contains the encoded bytes for a row's value stored in syncbase.
+type Value struct {
+	// State provides information about whether the field Bytes is empty or
+	// not and if it is empty then why.
+	State ValueState
+	// VOM encoded bytes for a row's value or nil if the row was deleted.
+	Bytes []byte
+	// Write timestamp for this value
+	WriteTs time.Time
+}
+
+func (Value) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.Value"`
+}) {
+}
+
+func (m *Value) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.State == ValueStateExists)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Bytes")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var7 bool
+		if len(m.Bytes) == 0 {
+			var7 = true
+		}
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	var wireValue8 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue8, m.WriteTs); err != nil {
+		return err
+	}
+
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("WriteTs")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var11 := (wireValue8 == time_2.Time{})
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue8.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *Value) MakeVDLTarget() vdl.Target {
+	return &ValueTarget{Value: m}
+}
+
+type ValueTarget struct {
+	Value         *Value
+	stateTarget   ValueStateTarget
+	bytesTarget   vdl.BytesTarget
+	writeTsTarget time_2.TimeTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *ValueTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*Value)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *ValueTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "State":
+		t.stateTarget.Value = &t.Value.State
+		target, err := &t.stateTarget, error(nil)
+		return nil, target, err
+	case "Bytes":
+		t.bytesTarget.Value = &t.Value.Bytes
+		target, err := &t.bytesTarget, error(nil)
+		return nil, target, err
+	case "WriteTs":
+		t.writeTsTarget.Value = &t.Value.WriteTs
+		target, err := &t.writeTsTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.Value", name)
+	}
+}
+func (t *ValueTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *ValueTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *ValueTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Value{}
+	return nil
+}
+
+// RowOp represents a read or write operation on a row corresponding to the
+// given key.
+type RowOp struct {
+	// The key under conflict.
+	Key string
+	// LocalValue contains the value read or written by local syncbase or nil.
+	LocalValue *Value
+	// RemoteValue contains the value read or written by remote syncbase or nil.
+	RemoteValue *Value
+	// AncestorValue contains the value for the key which is the lowest common
+	// ancestor of the two values represented by LocalValue and RemoteValue or
+	// nil if no ancestor exists or if the operation was read.
+	AncestorValue *Value
+}
+
+func (RowOp) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.RowOp"`
+}) {
+}
+
+func (m *RowOp) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("LocalValue")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.LocalValue == (*Value)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.LocalValue.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("RemoteValue")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.RemoteValue == (*Value)(nil))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.RemoteValue.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+			return err
+		}
+	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("AncestorValue")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.AncestorValue == (*Value)(nil))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.AncestorValue.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *RowOp) MakeVDLTarget() vdl.Target {
+	return &RowOpTarget{Value: m}
+}
+
+type RowOpTarget struct {
+	Value               *RowOp
+	keyTarget           vdl.StringTarget
+	localValueTarget    __VDLTarget2_optional
+	remoteValueTarget   __VDLTarget2_optional
+	ancestorValueTarget __VDLTarget2_optional
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *RowOpTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*RowOp)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *RowOpTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Key":
+		t.keyTarget.Value = &t.Value.Key
+		target, err := &t.keyTarget, error(nil)
+		return nil, target, err
+	case "LocalValue":
+		t.localValueTarget.Value = &t.Value.LocalValue
+		target, err := &t.localValueTarget, error(nil)
+		return nil, target, err
+	case "RemoteValue":
+		t.remoteValueTarget.Value = &t.Value.RemoteValue
+		target, err := &t.remoteValueTarget, error(nil)
+		return nil, target, err
+	case "AncestorValue":
+		t.ancestorValueTarget.Value = &t.Value.AncestorValue
+		target, err := &t.ancestorValueTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.RowOp", name)
+	}
+}
+func (t *RowOpTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *RowOpTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *RowOpTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RowOp{}
+	return nil
+}
+
+// Optional Value
+type __VDLTarget2_optional struct {
+	Value      **Value
+	elemTarget ValueTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *__VDLTarget2_optional) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if *t.Value == nil {
+		*t.Value = &Value{}
+	}
+	t.elemTarget.Value = *t.Value
+	target, err := &t.elemTarget, error(nil)
+	if err != nil {
+		return nil, err
+	}
+	return target.StartFields(tt)
+}
+func (t *__VDLTarget2_optional) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *__VDLTarget2_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*Value)(nil)
+	return nil
+}
+
+// ScanOp provides details of a scan operation.
+type ScanOp struct {
+	// Start contains the starting key for a range scan.
+	Start string
+	// Limit contains the end key for a range scan.
+	Limit string
+}
+
+func (ScanOp) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.ScanOp"`
+}) {
+}
+
+func (m *ScanOp) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Start")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Start == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Start), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Limit")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.Limit == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Limit), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *ScanOp) MakeVDLTarget() vdl.Target {
+	return &ScanOpTarget{Value: m}
+}
+
+type ScanOpTarget struct {
+	Value       *ScanOp
+	startTarget vdl.StringTarget
+	limitTarget vdl.StringTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *ScanOpTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*ScanOp)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *ScanOpTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Start":
+		t.startTarget.Value = &t.Value.Start
+		target, err := &t.startTarget, error(nil)
+		return nil, target, err
+	case "Limit":
+		t.limitTarget.Value = &t.Value.Limit
+		target, err := &t.limitTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.ScanOp", name)
+	}
+}
+func (t *ScanOpTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *ScanOpTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *ScanOpTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ScanOp{}
+	return nil
+}
+
+type (
+	// Operation represents any single field of the Operation union type.
+	//
+	// Operation represents a specific operation on a row or a set of rows that is
+	// a part of the conflict.
+	Operation interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the Operation union type.
+		__VDLReflect(__OperationReflect)
+		FillVDLTarget(vdl.Target, *vdl.Type) error
+	}
+	// OperationRead represents field Read of the Operation union type.
+	//
+	// Read represents a read operation performed on a specific row. For a given
+	// row key there can only be at max one Read operation within a conflict.
+	OperationRead struct{ Value RowOp }
+	// OperationWrite represents field Write of the Operation union type.
+	//
+	// Write represents a write operation performed on a specific row. For a
+	// given row key there can only be at max one Write operation within a
+	// conflict.
+	OperationWrite struct{ Value RowOp }
+	// OperationScan represents field Scan of the Operation union type.
+	//
+	// Scan represents a scan operation performed over a specific range of keys.
+	// For a given key range there can be at max one ScanOp within the Conflict.
+	OperationScan struct{ Value ScanOp }
+	// __OperationReflect describes the Operation union type.
+	__OperationReflect struct {
+		Name               string `vdl:"v.io/v23/services/syncbase/nosql.Operation"`
+		Type               Operation
+		UnionTargetFactory operationTargetFactory
+		Union              struct {
+			Read  OperationRead
+			Write OperationWrite
+			Scan  OperationScan
+		}
+	}
+)
+
+func (x OperationRead) Index() int                      { return 0 }
+func (x OperationRead) Interface() interface{}          { return x.Value }
+func (x OperationRead) Name() string                    { return "Read" }
+func (x OperationRead) __VDLReflect(__OperationReflect) {}
+
+func (m OperationRead) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Read")
+	if err != nil {
+		return err
+	}
+
+	if err := m.Value.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+		return err
+	}
+	if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+		return err
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (m OperationRead) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+func (x OperationWrite) Index() int                      { return 1 }
+func (x OperationWrite) Interface() interface{}          { return x.Value }
+func (x OperationWrite) Name() string                    { return "Write" }
+func (x OperationWrite) __VDLReflect(__OperationReflect) {}
+
+func (m OperationWrite) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Write")
+	if err != nil {
+		return err
+	}
+
+	if err := m.Value.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(1).Type); err != nil {
+		return err
+	}
+	if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+		return err
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (m OperationWrite) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+func (x OperationScan) Index() int                      { return 2 }
+func (x OperationScan) Interface() interface{}          { return x.Value }
+func (x OperationScan) Name() string                    { return "Scan" }
+func (x OperationScan) __VDLReflect(__OperationReflect) {}
+
+func (m OperationScan) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Scan")
+	if err != nil {
+		return err
+	}
+
+	if err := m.Value.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(2).Type); err != nil {
+		return err
+	}
+	if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+		return err
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (m OperationScan) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+type OperationTarget struct {
+	Value     *Operation
+	fieldName string
+
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *OperationTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+	if ttWant := vdl.TypeOf((*Operation)(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+
+	return t, nil
+}
+func (t *OperationTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	t.fieldName = name
+	switch name {
+	case "Read":
+		val := RowOp{}
+		return nil, &RowOpTarget{Value: &val}, nil
+	case "Write":
+		val := RowOp{}
+		return nil, &RowOpTarget{Value: &val}, nil
+	case "Scan":
+		val := ScanOp{}
+		return nil, &ScanOpTarget{Value: &val}, nil
+	default:
+		return nil, nil, fmt.Errorf("field %s not in union v.io/v23/services/syncbase/nosql.Operation", name)
+	}
+}
+func (t *OperationTarget) FinishField(_, fieldTarget vdl.Target) error {
+	switch t.fieldName {
+	case "Read":
+		*t.Value = OperationRead{*(fieldTarget.(*RowOpTarget)).Value}
+	case "Write":
+		*t.Value = OperationWrite{*(fieldTarget.(*RowOpTarget)).Value}
+	case "Scan":
+		*t.Value = OperationScan{*(fieldTarget.(*ScanOpTarget)).Value}
+	}
+	return nil
+}
+func (t *OperationTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *OperationTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Operation(OperationRead{})
+	return nil
+}
+
+type operationTargetFactory struct{}
+
+func (t operationTargetFactory) VDLMakeUnionTarget(union interface{}) (vdl.Target, error) {
+	if typedUnion, ok := union.(*Operation); ok {
+		return &OperationTarget{Value: typedUnion}, nil
+	}
+	return nil, fmt.Errorf("got %T, want *Operation", union)
+}
+
+// RowInfo contains a single operation performed on a row (in case of read or
+// write) or a range or rows (in case of scan) along with a mapping to each
+// of the batches that this operation belongs to.
+// For example, if Row1 was updated on local syncbase conflicting with a write
+// on remote syncbase as part of two separate batches, then it will be
+// represented by a single RowInfo with Write Operation containing the
+// respective local and remote values along with the batch id for both batches
+// stored in the BatchIds field.
+type RowInfo struct {
+	// Op is a specific operation represented by RowInfo
+	Op Operation
+	// BatchIds contains ids of all batches that this RowInfo is a part of.
+	BatchIds []uint64
+}
+
+func (RowInfo) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.RowInfo"`
+}) {
+}
+
+func (m *RowInfo) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Op")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var4 bool
+		if field, ok := m.Op.(OperationRead); ok {
+
+			var5 := true
+			var6 := (field.Value.Key == "")
+			var5 = var5 && var6
+			var7 := (field.Value.LocalValue == (*Value)(nil))
+			var5 = var5 && var7
+			var8 := (field.Value.RemoteValue == (*Value)(nil))
+			var5 = var5 && var8
+			var9 := (field.Value.AncestorValue == (*Value)(nil))
+			var5 = var5 && var9
+			var4 = var5
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue10 := m.Op
+			if unionValue10 == nil {
+				unionValue10 = OperationRead{}
+			}
+			if err := unionValue10.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("BatchIds")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var13 bool
+		if len(m.BatchIds) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget14, err := fieldTarget12.StartList(tt.NonOptional().Field(1).Type, len(m.BatchIds))
+			if err != nil {
+				return err
+			}
+			for i, elem16 := range m.BatchIds {
+				elemTarget15, err := listTarget14.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget15.FromUint(uint64(elem16), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget14.FinishElem(elemTarget15); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget12.FinishList(listTarget14); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *RowInfo) MakeVDLTarget() vdl.Target {
+	return &RowInfoTarget{Value: m}
+}
+
+type RowInfoTarget struct {
+	Value          *RowInfo
+	opTarget       OperationTarget
+	batchIdsTarget __VDLTarget3_list
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *RowInfoTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*RowInfo)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *RowInfoTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Op":
+		t.opTarget.Value = &t.Value.Op
+		target, err := &t.opTarget, error(nil)
+		return nil, target, err
+	case "BatchIds":
+		t.batchIdsTarget.Value = &t.Value.BatchIds
+		target, err := &t.batchIdsTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.RowInfo", name)
+	}
+}
+func (t *RowInfoTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *RowInfoTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *RowInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RowInfo{
+		Op: OperationRead{},
+	}
+	return nil
+}
+
+// []uint64
+type __VDLTarget3_list struct {
+	Value      *[]uint64
+	elemTarget vdl.Uint64Target
+	vdl.TargetBase
+	vdl.ListTargetBase
+}
+
+func (t *__VDLTarget3_list) StartList(tt *vdl.Type, len int) (vdl.ListTarget, error) {
+
+	if ttWant := vdl.TypeOf((*[]uint64)(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	if cap(*t.Value) < len {
+		*t.Value = make([]uint64, len)
+	} else {
+		*t.Value = (*t.Value)[:len]
+	}
+	return t, nil
+}
+func (t *__VDLTarget3_list) StartElem(index int) (elem vdl.Target, _ error) {
+	t.elemTarget.Value = &(*t.Value)[index]
+	target, err := &t.elemTarget, error(nil)
+	return target, err
+}
+func (t *__VDLTarget3_list) FinishElem(elem vdl.Target) error {
+	return nil
+}
+func (t *__VDLTarget3_list) FinishList(elem vdl.ListTarget) error {
+
+	return nil
+}
+func (t *__VDLTarget3_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []uint64(nil)
+	return nil
+}
+
+type (
+	// ConflictData represents any single field of the ConflictData union type.
+	//
+	// ConflictData represents a unit of conflict data sent over the stream. It
+	// can either contain information about a Batch or about an operation done
+	// on a row.
+	ConflictData interface {
+		// Index returns the field index.
+		Index() int
+		// Interface returns the field value as an interface.
+		Interface() interface{}
+		// Name returns the field name.
+		Name() string
+		// __VDLReflect describes the ConflictData union type.
+		__VDLReflect(__ConflictDataReflect)
+		FillVDLTarget(vdl.Target, *vdl.Type) error
+	}
+	// ConflictDataBatch represents field Batch of the ConflictData union type.
+	ConflictDataBatch struct{ Value BatchInfo }
+	// ConflictDataRow represents field Row of the ConflictData union type.
+	ConflictDataRow struct{ Value RowInfo }
+	// __ConflictDataReflect describes the ConflictData union type.
+	__ConflictDataReflect struct {
+		Name               string `vdl:"v.io/v23/services/syncbase/nosql.ConflictData"`
+		Type               ConflictData
+		UnionTargetFactory conflictDataTargetFactory
+		Union              struct {
+			Batch ConflictDataBatch
+			Row   ConflictDataRow
+		}
+	}
+)
+
+func (x ConflictDataBatch) Index() int                         { return 0 }
+func (x ConflictDataBatch) Interface() interface{}             { return x.Value }
+func (x ConflictDataBatch) Name() string                       { return "Batch" }
+func (x ConflictDataBatch) __VDLReflect(__ConflictDataReflect) {}
+
+func (m ConflictDataBatch) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Batch")
+	if err != nil {
+		return err
+	}
+
+	if err := m.Value.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+		return err
+	}
+	if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+		return err
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (m ConflictDataBatch) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+func (x ConflictDataRow) Index() int                         { return 1 }
+func (x ConflictDataRow) Interface() interface{}             { return x.Value }
+func (x ConflictDataRow) Name() string                       { return "Row" }
+func (x ConflictDataRow) __VDLReflect(__ConflictDataReflect) {}
+
+func (m ConflictDataRow) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Row")
+	if err != nil {
+		return err
+	}
+
+	if err := m.Value.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(1).Type); err != nil {
+		return err
+	}
+	if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+		return err
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (m ConflictDataRow) MakeVDLTarget() vdl.Target {
+	return nil
+}
+
+type ConflictDataTarget struct {
+	Value     *ConflictData
+	fieldName string
+
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *ConflictDataTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+	if ttWant := vdl.TypeOf((*ConflictData)(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+
+	return t, nil
+}
+func (t *ConflictDataTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	t.fieldName = name
+	switch name {
+	case "Batch":
+		val := BatchInfo{}
+		return nil, &BatchInfoTarget{Value: &val}, nil
+	case "Row":
+		val := RowInfo{
+			Op: OperationRead{},
+		}
+		return nil, &RowInfoTarget{Value: &val}, nil
+	default:
+		return nil, nil, fmt.Errorf("field %s not in union v.io/v23/services/syncbase/nosql.ConflictData", name)
+	}
+}
+func (t *ConflictDataTarget) FinishField(_, fieldTarget vdl.Target) error {
+	switch t.fieldName {
+	case "Batch":
+		*t.Value = ConflictDataBatch{*(fieldTarget.(*BatchInfoTarget)).Value}
+	case "Row":
+		*t.Value = ConflictDataRow{*(fieldTarget.(*RowInfoTarget)).Value}
+	}
+	return nil
+}
+func (t *ConflictDataTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *ConflictDataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictData(ConflictDataBatch{})
+	return nil
+}
+
+type conflictDataTargetFactory struct{}
+
+func (t conflictDataTargetFactory) VDLMakeUnionTarget(union interface{}) (vdl.Target, error) {
+	if typedUnion, ok := union.(*ConflictData); ok {
+		return &ConflictDataTarget{Value: typedUnion}, nil
+	}
+	return nil, fmt.Errorf("got %T, want *ConflictData", union)
+}
+
+// ConflictInfo contains information to fully specify a conflict
+// for a key, providing the (local, remote, ancestor) tuple.
+// A key under conflict can be a part of a batch in local, remote or both
+// updates. Since the batches can have more than one key, all ConflictInfos
+// for the keys within the batches are grouped together into a single conflict
+// batch and sent as a stream with the Continued field representing conflict
+// batch boundaries.
+type ConflictInfo struct {
+	// Data is a unit chunk of ConflictInfo which can be sent over the conflict
+	// stream.
+	Data ConflictData
+	// Continued represents whether the batch of ConflictInfos has ended.
+	Continued bool
+}
+
+func (ConflictInfo) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.ConflictInfo"`
+}) {
+}
+
+func (m *ConflictInfo) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Data")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var4 bool
+		if field, ok := m.Data.(ConflictDataBatch); ok {
+
+			var5 := (field.Value == BatchInfo{})
+			var4 = var5
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue6 := m.Data
+			if unionValue6 == nil {
+				unionValue6 = ConflictDataBatch{}
+			}
+			if err := unionValue6.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Continued")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var9 := (m.Continued == false)
+		if var9 {
+			if err := fieldTarget8.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget8.FromBool(bool(m.Continued), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *ConflictInfo) MakeVDLTarget() vdl.Target {
+	return &ConflictInfoTarget{Value: m}
+}
+
+type ConflictInfoTarget struct {
+	Value           *ConflictInfo
+	dataTarget      ConflictDataTarget
+	continuedTarget vdl.BoolTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *ConflictInfoTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*ConflictInfo)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *ConflictInfoTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Data":
+		t.dataTarget.Value = &t.Value.Data
+		target, err := &t.dataTarget, error(nil)
+		return nil, target, err
+	case "Continued":
+		t.continuedTarget.Value = &t.Value.Continued
+		target, err := &t.continuedTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.ConflictInfo", name)
+	}
+}
+func (t *ConflictInfoTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *ConflictInfoTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *ConflictInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictInfo{
+		Data: ConflictDataBatch{},
+	}
+	return nil
+}
+
+// ValueSelection represents the value that was selected as the final resolution
+// for a conflict.
+type ValueSelection int
+
+const (
+	ValueSelectionLocal ValueSelection = iota
+	ValueSelectionRemote
+	ValueSelectionOther
+)
+
+// ValueSelectionAll holds all labels for ValueSelection.
+var ValueSelectionAll = [...]ValueSelection{ValueSelectionLocal, ValueSelectionRemote, ValueSelectionOther}
+
+// ValueSelectionFromString creates a ValueSelection from a string label.
+func ValueSelectionFromString(label string) (x ValueSelection, err error) {
+	err = x.Set(label)
+	return
+}
+
+// Set assigns label to x.
+func (x *ValueSelection) Set(label string) error {
+	switch label {
+	case "Local", "local":
+		*x = ValueSelectionLocal
+		return nil
+	case "Remote", "remote":
+		*x = ValueSelectionRemote
+		return nil
+	case "Other", "other":
+		*x = ValueSelectionOther
+		return nil
+	}
+	*x = -1
+	return fmt.Errorf("unknown label %q in nosql.ValueSelection", label)
+}
+
+// String returns the string label of x.
+func (x ValueSelection) String() string {
+	switch x {
+	case ValueSelectionLocal:
+		return "Local"
+	case ValueSelectionRemote:
+		return "Remote"
+	case ValueSelectionOther:
+		return "Other"
+	}
+	return ""
+}
+
+func (ValueSelection) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.ValueSelection"`
+	Enum struct{ Local, Remote, Other string }
+}) {
+}
+
+func (m *ValueSelection) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *ValueSelection) MakeVDLTarget() vdl.Target {
+	return &ValueSelectionTarget{Value: m}
+}
+
+type ValueSelectionTarget struct {
+	Value *ValueSelection
+	vdl.TargetBase
+}
+
+func (t *ValueSelectionTarget) FromEnumLabel(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*ValueSelection)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	switch src {
+	case "Local":
+		*t.Value = 0
+	case "Remote":
+		*t.Value = 1
+	case "Other":
+		*t.Value = 2
+	default:
+		return fmt.Errorf("label %s not in enum ValueSelectionLocal", src)
+	}
+
+	return nil
+}
+func (t *ValueSelectionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ValueSelectionLocal
+	return nil
+}
+
+// ResolutionInfo contains the application’s reply to a conflict for a key,
+// providing the resolution value. The resolution may be over a group of keys
+// in which case the application must send a stream of ResolutionInfos with
+// the Continued field for the last ResolutionInfo representing the end of the
+// batch with a value false. ResolutionInfos sent as part of a batch will be
+// committed as a batch. If the commit fails, the Conflict will be re-sent.
+type ResolutionInfo struct {
+	// Key is the key under conflict.
+	Key string
+	// Selection represents the value that was selected as resolution.
+	Selection ValueSelection
+	// Result is the resolved value for the key. This field should be used only
+	// if value of Selection field is 'Other'. If the result of a resolution is
+	// delete for this key then add Value with nil Bytes.
+	Result *Value
+	// Continued represents whether the batch of ResolutionInfos has ended.
+	Continued bool
+}
+
+func (ResolutionInfo) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.ResolutionInfo"`
+}) {
+}
+
+func (m *ResolutionInfo) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Selection")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.Selection == ValueSelectionLocal)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Selection.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Result")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Result == (*Value)(nil))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Result.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+			return err
+		}
+	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Continued")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Continued == false)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromBool(bool(m.Continued), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *ResolutionInfo) MakeVDLTarget() vdl.Target {
+	return &ResolutionInfoTarget{Value: m}
+}
+
+type ResolutionInfoTarget struct {
+	Value           *ResolutionInfo
+	keyTarget       vdl.StringTarget
+	selectionTarget ValueSelectionTarget
+	resultTarget    __VDLTarget2_optional
+	continuedTarget vdl.BoolTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *ResolutionInfoTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*ResolutionInfo)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *ResolutionInfoTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Key":
+		t.keyTarget.Value = &t.Value.Key
+		target, err := &t.keyTarget, error(nil)
+		return nil, target, err
+	case "Selection":
+		t.selectionTarget.Value = &t.Value.Selection
+		target, err := &t.selectionTarget, error(nil)
+		return nil, target, err
+	case "Result":
+		t.resultTarget.Value = &t.Value.Result
+		target, err := &t.resultTarget, error(nil)
+		return nil, target, err
+	case "Continued":
+		t.continuedTarget.Value = &t.Value.Continued
+		target, err := &t.continuedTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.ResolutionInfo", name)
+	}
+}
+func (t *ResolutionInfoTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *ResolutionInfoTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *ResolutionInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ResolutionInfo{}
+	return nil
+}
+
+// CrRule provides a filter and the type of resolution to perform for a row
+// under conflict that passes the filter.
+type CrRule struct {
+	// TableName is the name of the table that this rule applies to.
+	TableName string
+	// KeyPrefix represents the set of keys within the given table for which
+	// this policy applies. TableName must not be empty if this field is set.
+	KeyPrefix string
+	// Type includes the full package path for the value type for which this
+	// policy applies.
+	Type string
+	// Policy for resolving conflict.
+	Resolver ResolverType
+}
+
+func (CrRule) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.CrRule"`
+}) {
+}
+
+func (m *CrRule) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("TableName")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.TableName == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.TableName), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("KeyPrefix")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.KeyPrefix == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.KeyPrefix), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Type")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Type == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Type), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+			return err
+		}
+	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Resolver")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Resolver == ResolverTypeLastWins)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Resolver.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *CrRule) MakeVDLTarget() vdl.Target {
+	return &CrRuleTarget{Value: m}
+}
+
+type CrRuleTarget struct {
+	Value           *CrRule
+	tableNameTarget vdl.StringTarget
+	keyPrefixTarget vdl.StringTarget
+	typeTarget      vdl.StringTarget
+	resolverTarget  ResolverTypeTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *CrRuleTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*CrRule)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *CrRuleTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "TableName":
+		t.tableNameTarget.Value = &t.Value.TableName
+		target, err := &t.tableNameTarget, error(nil)
+		return nil, target, err
+	case "KeyPrefix":
+		t.keyPrefixTarget.Value = &t.Value.KeyPrefix
+		target, err := &t.keyPrefixTarget, error(nil)
+		return nil, target, err
+	case "Type":
+		t.typeTarget.Value = &t.Value.Type
+		target, err := &t.typeTarget, error(nil)
+		return nil, target, err
+	case "Resolver":
+		t.resolverTarget.Value = &t.Value.Resolver
+		target, err := &t.resolverTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.CrRule", name)
+	}
+}
+func (t *CrRuleTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *CrRuleTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *CrRuleTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CrRule{}
+	return nil
+}
+
+// For a given row with a conflict, all rules are matched against the row.
+// If no rules match the row, we default to "LastWins". If multiple
+// rules match the row, ties are broken as follows:
+//  1. If one match has a longer prefix than the other, take that one.
+//  2. Else, if only one match specifies a type, take that one.
+//  3. Else, the two matches are identical; take the last one in the Rules array.
+type CrPolicy struct {
+	Rules []CrRule
+}
+
+func (CrPolicy) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.CrPolicy"`
+}) {
+}
+
+func (m *CrPolicy) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rules")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var4 bool
+		if len(m.Rules) == 0 {
+			var4 = true
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.Rules))
+			if err != nil {
+				return err
+			}
+			for i, elem7 := range m.Rules {
+				elemTarget6, err := listTarget5.StartElem(i)
+				if err != nil {
+					return err
+				}
+
+				if err := elem7.FillVDLTarget(elemTarget6, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *CrPolicy) MakeVDLTarget() vdl.Target {
+	return &CrPolicyTarget{Value: m}
+}
+
+type CrPolicyTarget struct {
+	Value       *CrPolicy
+	rulesTarget __VDLTarget4_list
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *CrPolicyTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*CrPolicy)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *CrPolicyTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Rules":
+		t.rulesTarget.Value = &t.Value.Rules
+		target, err := &t.rulesTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.CrPolicy", name)
+	}
+}
+func (t *CrPolicyTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *CrPolicyTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *CrPolicyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CrPolicy{}
+	return nil
+}
+
+// []CrRule
+type __VDLTarget4_list struct {
+	Value      *[]CrRule
+	elemTarget CrRuleTarget
+	vdl.TargetBase
+	vdl.ListTargetBase
+}
+
+func (t *__VDLTarget4_list) StartList(tt *vdl.Type, len int) (vdl.ListTarget, error) {
+
+	if ttWant := vdl.TypeOf((*[]CrRule)(nil)); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	if cap(*t.Value) < len {
+		*t.Value = make([]CrRule, len)
+	} else {
+		*t.Value = (*t.Value)[:len]
+	}
+	return t, nil
+}
+func (t *__VDLTarget4_list) StartElem(index int) (elem vdl.Target, _ error) {
+	t.elemTarget.Value = &(*t.Value)[index]
+	target, err := &t.elemTarget, error(nil)
+	return target, err
+}
+func (t *__VDLTarget4_list) FinishElem(elem vdl.Target) error {
+	return nil
+}
+func (t *__VDLTarget4_list) FinishList(elem vdl.ListTarget) error {
+
+	return nil
+}
+func (t *__VDLTarget4_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []CrRule(nil)
+	return nil
+}
+
+// SchemaMetadata maintains metadata related to the schema of a given database.
+// There is one SchemaMetadata per database.
+type SchemaMetadata struct {
+	// Non negative Schema version number. Should be increased with every schema change
+	// (e.g. adding fields to structs) that cannot be handled by previous
+	// versions of the app.
+	Version int32
+	Policy  CrPolicy
+}
+
+func (SchemaMetadata) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.SchemaMetadata"`
+}) {
+}
+
+func (m *SchemaMetadata) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Version")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.Version == int32(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Version), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Policy")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := true
+		var var8 bool
+		if len(m.Policy.Rules) == 0 {
+			var8 = true
+		}
+		var7 = var7 && var8
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Policy.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *SchemaMetadata) MakeVDLTarget() vdl.Target {
+	return &SchemaMetadataTarget{Value: m}
+}
+
+type SchemaMetadataTarget struct {
+	Value         *SchemaMetadata
+	versionTarget vdl.Int32Target
+	policyTarget  CrPolicyTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *SchemaMetadataTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*SchemaMetadata)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *SchemaMetadataTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Version":
+		t.versionTarget.Value = &t.Value.Version
+		target, err := &t.versionTarget, error(nil)
+		return nil, target, err
+	case "Policy":
+		t.policyTarget.Value = &t.Value.Policy
+		target, err := &t.policyTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.SchemaMetadata", name)
+	}
+}
+func (t *SchemaMetadataTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *SchemaMetadataTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *SchemaMetadataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SchemaMetadata{}
+	return nil
+}
+
+// BlobRef is a reference to a blob.
+type BlobRef string
+
+func (BlobRef) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.BlobRef"`
+}) {
+}
+
+func (m *BlobRef) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromString(string((*m)), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *BlobRef) MakeVDLTarget() vdl.Target {
+	return &BlobRefTarget{Value: m}
+}
+
+type BlobRefTarget struct {
+	Value *BlobRef
+	vdl.TargetBase
+}
+
+func (t *BlobRefTarget) FromString(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*BlobRef)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	*t.Value = BlobRef(src)
+
+	return nil
+}
+func (t *BlobRefTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlobRef("")
+	return nil
+}
+
+// BlobFetchState represents the state transitions of a blob fetch.
+type BlobFetchState int
+
+const (
+	BlobFetchStatePending BlobFetchState = iota
+	BlobFetchStateLocating
+	BlobFetchStateFetching
+	BlobFetchStateDone
+)
+
+// BlobFetchStateAll holds all labels for BlobFetchState.
+var BlobFetchStateAll = [...]BlobFetchState{BlobFetchStatePending, BlobFetchStateLocating, BlobFetchStateFetching, BlobFetchStateDone}
+
+// BlobFetchStateFromString creates a BlobFetchState from a string label.
+func BlobFetchStateFromString(label string) (x BlobFetchState, err error) {
+	err = x.Set(label)
+	return
+}
+
+// Set assigns label to x.
+func (x *BlobFetchState) Set(label string) error {
+	switch label {
+	case "Pending", "pending":
+		*x = BlobFetchStatePending
+		return nil
+	case "Locating", "locating":
+		*x = BlobFetchStateLocating
+		return nil
+	case "Fetching", "fetching":
+		*x = BlobFetchStateFetching
+		return nil
+	case "Done", "done":
+		*x = BlobFetchStateDone
+		return nil
+	}
+	*x = -1
+	return fmt.Errorf("unknown label %q in nosql.BlobFetchState", label)
+}
+
+// String returns the string label of x.
+func (x BlobFetchState) String() string {
+	switch x {
+	case BlobFetchStatePending:
+		return "Pending"
+	case BlobFetchStateLocating:
+		return "Locating"
+	case BlobFetchStateFetching:
+		return "Fetching"
+	case BlobFetchStateDone:
+		return "Done"
+	}
+	return ""
+}
+
+func (BlobFetchState) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.BlobFetchState"`
+	Enum struct{ Pending, Locating, Fetching, Done string }
+}) {
+}
+
+func (m *BlobFetchState) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	if err := t.FromEnumLabel((*m).String(), tt); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *BlobFetchState) MakeVDLTarget() vdl.Target {
+	return &BlobFetchStateTarget{Value: m}
+}
+
+type BlobFetchStateTarget struct {
+	Value *BlobFetchState
+	vdl.TargetBase
+}
+
+func (t *BlobFetchStateTarget) FromEnumLabel(src string, tt *vdl.Type) error {
+
+	if ttWant := vdl.TypeOf((*BlobFetchState)(nil)); !vdl.Compatible(tt, ttWant) {
+		return fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	switch src {
+	case "Pending":
+		*t.Value = 0
+	case "Locating":
+		*t.Value = 1
+	case "Fetching":
+		*t.Value = 2
+	case "Done":
+		*t.Value = 3
+	default:
+		return fmt.Errorf("label %s not in enum BlobFetchStatePending", src)
+	}
+
+	return nil
+}
+func (t *BlobFetchStateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlobFetchStatePending
+	return nil
+}
+
+// BlobFetchStatus describes the progress of an asynchronous blob fetch.
+type BlobFetchStatus struct {
+	State    BlobFetchState // State of the blob fetch request.
+	Received int64          // Total number of bytes received.
+	Total    int64          // Blob size.
+}
+
+func (BlobFetchStatus) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.BlobFetchStatus"`
+}) {
+}
+
+func (m *BlobFetchStatus) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var4 := (m.State == BlobFetchStatePending)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Received")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.Received == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Received), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Total")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Total == int64(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromInt(int64(m.Total), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *BlobFetchStatus) MakeVDLTarget() vdl.Target {
+	return &BlobFetchStatusTarget{Value: m}
+}
+
+type BlobFetchStatusTarget struct {
+	Value          *BlobFetchStatus
+	stateTarget    BlobFetchStateTarget
+	receivedTarget vdl.Int64Target
+	totalTarget    vdl.Int64Target
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *BlobFetchStatusTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*BlobFetchStatus)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *BlobFetchStatusTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "State":
+		t.stateTarget.Value = &t.Value.State
+		target, err := &t.stateTarget, error(nil)
+		return nil, target, err
+	case "Received":
+		t.receivedTarget.Value = &t.Value.Received
+		target, err := &t.receivedTarget, error(nil)
+		return nil, target, err
+	case "Total":
+		t.totalTarget.Value = &t.Value.Total
+		target, err := &t.totalTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.BlobFetchStatus", name)
+	}
+}
+func (t *BlobFetchStatusTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *BlobFetchStatusTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *BlobFetchStatusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlobFetchStatus{}
+	return nil
+}
+
+// StoreChange is the new value for a watched entity.
+// TODO(rogulenko): Consider adding the Shell state.
+type StoreChange struct {
+	// Value is the new value for the row if the Change state equals to Exists,
+	// otherwise the Value is nil.
+	Value []byte
+	// FromSync indicates whether the change came from sync. If FromSync is
+	// false, then the change originated from the local device.
+	// Note: FromSync is always false for initial state Changes.
+	FromSync bool
+}
+
+func (StoreChange) __VDLReflect(struct {
+	Name string `vdl:"v.io/v23/services/syncbase/nosql.StoreChange"`
+}) {
+}
+
+func (m *StoreChange) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
+	fieldsTarget1, err := t.StartFields(tt)
+	if err != nil {
+		return err
+	}
+	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Value")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var4 bool
+		if len(m.Value) == 0 {
+			var4 = true
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget3.FromBytes([]byte(m.Value), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
+			return err
+		}
+	}
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("FromSync")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var7 := (m.FromSync == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.FromSync), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	if err := t.FinishFields(fieldsTarget1); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *StoreChange) MakeVDLTarget() vdl.Target {
+	return &StoreChangeTarget{Value: m}
+}
+
+type StoreChangeTarget struct {
+	Value          *StoreChange
+	valueTarget    vdl.BytesTarget
+	fromSyncTarget vdl.BoolTarget
+	vdl.TargetBase
+	vdl.FieldsTargetBase
+}
+
+func (t *StoreChangeTarget) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
+
+	if ttWant := vdl.TypeOf((*StoreChange)(nil)).Elem(); !vdl.Compatible(tt, ttWant) {
+		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
+	}
+	return t, nil
+}
+func (t *StoreChangeTarget) StartField(name string) (key, field vdl.Target, _ error) {
+	switch name {
+	case "Value":
+		t.valueTarget.Value = &t.Value.Value
+		target, err := &t.valueTarget, error(nil)
+		return nil, target, err
+	case "FromSync":
+		t.fromSyncTarget.Value = &t.Value.FromSync
+		target, err := &t.fromSyncTarget, error(nil)
+		return nil, target, err
+	default:
+		return nil, nil, fmt.Errorf("field %s not in struct v.io/v23/services/syncbase/nosql.StoreChange", name)
+	}
+}
+func (t *StoreChangeTarget) FinishField(_, _ vdl.Target) error {
+	return nil
+}
+func (t *StoreChangeTarget) FinishFields(_ vdl.FieldsTarget) error {
+
+	return nil
+}
+func (t *StoreChangeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = StoreChange{}
+	return nil
+}
+
+//////////////////////////////////////////////////
+// Const definitions
+
+const NullBlobRef = BlobRef("")
+
+//////////////////////////////////////////////////
+// Error definitions
+var (
+	ErrBoundToBatch          = verror.Register("v.io/v23/services/syncbase/nosql.BoundToBatch", verror.NoRetry, "{1:}{2:} bound to batch")
+	ErrNotBoundToBatch       = verror.Register("v.io/v23/services/syncbase/nosql.NotBoundToBatch", verror.NoRetry, "{1:}{2:} not bound to batch")
+	ErrReadOnlyBatch         = verror.Register("v.io/v23/services/syncbase/nosql.ReadOnlyBatch", verror.NoRetry, "{1:}{2:} batch is read-only")
+	ErrConcurrentBatch       = verror.Register("v.io/v23/services/syncbase/nosql.ConcurrentBatch", verror.NoRetry, "{1:}{2:} concurrent batch")
+	ErrSchemaVersionMismatch = verror.Register("v.io/v23/services/syncbase/nosql.SchemaVersionMismatch", verror.NoRetry, "{1:}{2:} actual schema version does not match the provided one")
+	ErrBlobNotCommitted      = verror.Register("v.io/v23/services/syncbase/nosql.BlobNotCommitted", verror.NoRetry, "{1:}{2:} blob is not yet committed")
+	ErrSyncgroupJoinFailed   = verror.Register("v.io/v23/services/syncbase/nosql.SyncgroupJoinFailed", verror.NoRetry, "{1:}{2:} syncgroup join failed")
+)
+
+// NewErrBoundToBatch returns an error with the ErrBoundToBatch ID.
+func NewErrBoundToBatch(ctx *context.T) error {
+	return verror.New(ErrBoundToBatch, ctx)
+}
+
+// NewErrNotBoundToBatch returns an error with the ErrNotBoundToBatch ID.
+func NewErrNotBoundToBatch(ctx *context.T) error {
+	return verror.New(ErrNotBoundToBatch, ctx)
+}
+
+// NewErrReadOnlyBatch returns an error with the ErrReadOnlyBatch ID.
+func NewErrReadOnlyBatch(ctx *context.T) error {
+	return verror.New(ErrReadOnlyBatch, ctx)
+}
+
+// NewErrConcurrentBatch returns an error with the ErrConcurrentBatch ID.
+func NewErrConcurrentBatch(ctx *context.T) error {
+	return verror.New(ErrConcurrentBatch, ctx)
+}
+
+// NewErrSchemaVersionMismatch returns an error with the ErrSchemaVersionMismatch ID.
+func NewErrSchemaVersionMismatch(ctx *context.T) error {
+	return verror.New(ErrSchemaVersionMismatch, ctx)
+}
+
+// NewErrBlobNotCommitted returns an error with the ErrBlobNotCommitted ID.
+func NewErrBlobNotCommitted(ctx *context.T) error {
+	return verror.New(ErrBlobNotCommitted, ctx)
+}
+
+// NewErrSyncgroupJoinFailed returns an error with the ErrSyncgroupJoinFailed ID.
+func NewErrSyncgroupJoinFailed(ctx *context.T) error {
+	return verror.New(ErrSyncgroupJoinFailed, ctx)
+}
+
+//////////////////////////////////////////////////
+// Interface definitions
+
+// DatabaseWatcherClientMethods is the client interface
+// containing DatabaseWatcher methods.
+//
+// DatabaseWatcher allows a client to watch for updates to the database. For
+// each watch request, the client will receive a reliable stream of watch events
+// without re-ordering. See watch.GlobWatcher for a detailed explanation of the
+// behavior.
+// TODO(rogulenko): Currently the only supported watch patterns are
+// "<tableName>/<rowPrefix>*". Consider changing that.
+//
+// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker
+// argument that points to a particular place in the database event log. If an
+// empty ResumeMarker is provided, the WatchStream will begin with a Change
+// batch containing the initial state. Otherwise, the WatchStream will contain
+// only changes since the provided ResumeMarker.
+//
+// The result stream consists of a never-ending sequence of Change messages
+// (until the call fails or is canceled). Each Change contains the Name field
+// in the form "<tableName>/<rowKey>" and the Value field of the StoreChange
+// type. If the client has no access to a row specified in a change, that change
+// is excluded from the result stream.
+//
+// Note: A single Watch Change batch may contain changes from more than one
+// batch as originally committed on a remote Syncbase or obtained from conflict
+// resolution. However, changes from a single original batch will always appear
+// in the same Change batch.
+type DatabaseWatcherClientMethods interface {
+	// GlobWatcher allows a client to receive updates for changes to objects
+	// that match a pattern.  See the package comments for details.
+	watch.GlobWatcherClientMethods
+	// GetResumeMarker returns the ResumeMarker that points to the current end
+	// of the event log. GetResumeMarker() can be called on a batch.
+	GetResumeMarker(*context.T, ...rpc.CallOpt) (watch.ResumeMarker, error)
+}
+
+// DatabaseWatcherClientStub adds universal methods to DatabaseWatcherClientMethods.
+type DatabaseWatcherClientStub interface {
+	DatabaseWatcherClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// DatabaseWatcherClient returns a client stub for DatabaseWatcher.
+func DatabaseWatcherClient(name string) DatabaseWatcherClientStub {
+	return implDatabaseWatcherClientStub{name, watch.GlobWatcherClient(name)}
+}
+
+type implDatabaseWatcherClientStub struct {
+	name string
+
+	watch.GlobWatcherClientStub
+}
+
+func (c implDatabaseWatcherClientStub) GetResumeMarker(ctx *context.T, opts ...rpc.CallOpt) (o0 watch.ResumeMarker, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetResumeMarker", nil, []interface{}{&o0}, opts...)
+	return
+}
+
+// DatabaseWatcherServerMethods is the interface a server writer
+// implements for DatabaseWatcher.
+//
+// DatabaseWatcher allows a client to watch for updates to the database. For
+// each watch request, the client will receive a reliable stream of watch events
+// without re-ordering. See watch.GlobWatcher for a detailed explanation of the
+// behavior.
+// TODO(rogulenko): Currently the only supported watch patterns are
+// "<tableName>/<rowPrefix>*". Consider changing that.
+//
+// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker
+// argument that points to a particular place in the database event log. If an
+// empty ResumeMarker is provided, the WatchStream will begin with a Change
+// batch containing the initial state. Otherwise, the WatchStream will contain
+// only changes since the provided ResumeMarker.
+//
+// The result stream consists of a never-ending sequence of Change messages
+// (until the call fails or is canceled). Each Change contains the Name field
+// in the form "<tableName>/<rowKey>" and the Value field of the StoreChange
+// type. If the client has no access to a row specified in a change, that change
+// is excluded from the result stream.
+//
+// Note: A single Watch Change batch may contain changes from more than one
+// batch as originally committed on a remote Syncbase or obtained from conflict
+// resolution. However, changes from a single original batch will always appear
+// in the same Change batch.
+type DatabaseWatcherServerMethods interface {
+	// GlobWatcher allows a client to receive updates for changes to objects
+	// that match a pattern.  See the package comments for details.
+	watch.GlobWatcherServerMethods
+	// GetResumeMarker returns the ResumeMarker that points to the current end
+	// of the event log. GetResumeMarker() can be called on a batch.
+	GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+}
+
+// DatabaseWatcherServerStubMethods is the server interface containing
+// DatabaseWatcher methods, as expected by rpc.Server.
+// The only difference between this interface and DatabaseWatcherServerMethods
+// is the streaming methods.
+type DatabaseWatcherServerStubMethods interface {
+	// GlobWatcher allows a client to receive updates for changes to objects
+	// that match a pattern.  See the package comments for details.
+	watch.GlobWatcherServerStubMethods
+	// GetResumeMarker returns the ResumeMarker that points to the current end
+	// of the event log. GetResumeMarker() can be called on a batch.
+	GetResumeMarker(*context.T, rpc.ServerCall) (watch.ResumeMarker, error)
+}
+
+// DatabaseWatcherServerStub adds universal methods to DatabaseWatcherServerStubMethods.
+type DatabaseWatcherServerStub interface {
+	DatabaseWatcherServerStubMethods
+	// Describe the DatabaseWatcher interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// DatabaseWatcherServer returns a server stub for DatabaseWatcher.
+// It converts an implementation of DatabaseWatcherServerMethods into
+// an object that may be used by rpc.Server.
+func DatabaseWatcherServer(impl DatabaseWatcherServerMethods) DatabaseWatcherServerStub {
+	stub := implDatabaseWatcherServerStub{
+		impl: impl,
+		GlobWatcherServerStub: watch.GlobWatcherServer(impl),
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implDatabaseWatcherServerStub struct {
+	impl DatabaseWatcherServerMethods
+	watch.GlobWatcherServerStub
+	gs *rpc.GlobState
+}
+
+func (s implDatabaseWatcherServerStub) GetResumeMarker(ctx *context.T, call rpc.ServerCall) (watch.ResumeMarker, error) {
+	return s.impl.GetResumeMarker(ctx, call)
+}
+
+func (s implDatabaseWatcherServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implDatabaseWatcherServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{DatabaseWatcherDesc, watch.GlobWatcherDesc}
+}
+
+// DatabaseWatcherDesc describes the DatabaseWatcher interface.
+var DatabaseWatcherDesc rpc.InterfaceDesc = descDatabaseWatcher
+
+// descDatabaseWatcher hides the desc to keep godoc clean.
+var descDatabaseWatcher = rpc.InterfaceDesc{
+	Name:    "DatabaseWatcher",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// DatabaseWatcher allows a client to watch for updates to the database. For\n// each watch request, the client will receive a reliable stream of watch events\n// without re-ordering. See watch.GlobWatcher for a detailed explanation of the\n// behavior.\n// TODO(rogulenko): Currently the only supported watch patterns are\n// \"<tableName>/<rowPrefix>*\". Consider changing that.\n//\n// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker\n// argument that points to a particular place in the database event log. If an\n// empty ResumeMarker is provided, the WatchStream will begin with a Change\n// batch containing the initial state. Otherwise, the WatchStream will contain\n// only changes since the provided ResumeMarker.\n//\n// The result stream consists of a never-ending sequence of Change messages\n// (until the call fails or is canceled). Each Change contains the Name field\n// in the form \"<tableName>/<rowKey>\" and the Value field of the StoreChange\n// type. If the client has no access to a row specified in a change, that change\n// is excluded from the result stream.\n//\n// Note: A single Watch Change batch may contain changes from more than one\n// batch as originally committed on a remote Syncbase or obtained from conflict\n// resolution. However, changes from a single original batch will always appear\n// in the same Change batch.",
+	Embeds: []rpc.EmbedDesc{
+		{"GlobWatcher", "v.io/v23/services/watch", "// GlobWatcher allows a client to receive updates for changes to objects\n// that match a pattern.  See the package comments for details."},
+	},
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "GetResumeMarker",
+			Doc:  "// GetResumeMarker returns the ResumeMarker that points to the current end\n// of the event log. GetResumeMarker() can be called on a batch.",
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // watch.ResumeMarker
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+	},
+}
+
+// SyncgroupManagerClientMethods is the client interface
+// containing SyncgroupManager methods.
+//
+// SyncgroupManager is the interface for syncgroup operations.
+// TODO(hpucha): Add blessings to create/join and add a refresh method.
+type SyncgroupManagerClientMethods interface {
+	// GetSyncgroupNames returns the global names of all syncgroups attached to
+	// this database.
+	GetSyncgroupNames(*context.T, ...rpc.CallOpt) ([]string, error)
+	// CreateSyncgroup creates a new syncgroup with the given spec.
+	//
+	// Requires: Client must have at least Read access on the Database; prefix ACL
+	// must exist at each syncgroup prefix; Client must have at least Read access
+	// on each of these prefix ACLs.
+	CreateSyncgroup(_ *context.T, sgName string, spec SyncgroupSpec, myInfo SyncgroupMemberInfo, _ ...rpc.CallOpt) error
+	// JoinSyncgroup joins the syncgroup.
+	//
+	// Requires: Client must have at least Read access on the Database and on the
+	// syncgroup ACL.
+	JoinSyncgroup(_ *context.T, sgName string, myInfo SyncgroupMemberInfo, _ ...rpc.CallOpt) (spec SyncgroupSpec, _ error)
+	// LeaveSyncgroup leaves the syncgroup. Previously synced data will continue
+	// to be available.
+	//
+	// Requires: Client must have at least Read access on the Database.
+	LeaveSyncgroup(_ *context.T, sgName string, _ ...rpc.CallOpt) error
+	// DestroySyncgroup destroys the syncgroup. Previously synced data will
+	// continue to be available to all members.
+	//
+	// Requires: Client must have at least Read access on the Database, and must
+	// have Admin access on the syncgroup ACL.
+	DestroySyncgroup(_ *context.T, sgName string, _ ...rpc.CallOpt) error
+	// EjectFromSyncgroup ejects a member from the syncgroup. The ejected member
+	// will not be able to sync further, but will retain any data it has already
+	// synced.
+	//
+	// Requires: Client must have at least Read access on the Database, and must
+	// have Admin access on the syncgroup ACL.
+	EjectFromSyncgroup(_ *context.T, sgName string, member string, _ ...rpc.CallOpt) error
+	// GetSyncgroupSpec gets the syncgroup spec. version allows for atomic
+	// read-modify-write of the spec - see comment for SetSyncgroupSpec.
+	//
+	// Requires: Client must have at least Read access on the Database and on the
+	// syncgroup ACL.
+	GetSyncgroupSpec(_ *context.T, sgName string, _ ...rpc.CallOpt) (spec SyncgroupSpec, version string, _ error)
+	// SetSyncgroupSpec sets the syncgroup spec. version may be either empty or
+	// the value from a previous Get. If not empty, Set will only succeed if the
+	// current version matches the specified one.
+	//
+	// Requires: Client must have at least Read access on the Database, and must
+	// have Admin access on the syncgroup ACL.
+	SetSyncgroupSpec(_ *context.T, sgName string, spec SyncgroupSpec, version string, _ ...rpc.CallOpt) error
+	// GetSyncgroupMembers gets the info objects for members of the syncgroup.
+	//
+	// Requires: Client must have at least Read access on the Database and on the
+	// syncgroup ACL.
+	GetSyncgroupMembers(_ *context.T, sgName string, _ ...rpc.CallOpt) (members map[string]SyncgroupMemberInfo, _ error)
+}
+
+// SyncgroupManagerClientStub adds universal methods to SyncgroupManagerClientMethods.
+type SyncgroupManagerClientStub interface {
+	SyncgroupManagerClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// SyncgroupManagerClient returns a client stub for SyncgroupManager.
+func SyncgroupManagerClient(name string) SyncgroupManagerClientStub {
+	return implSyncgroupManagerClientStub{name}
+}
+
+type implSyncgroupManagerClientStub struct {
+	name string
+}
+
+func (c implSyncgroupManagerClientStub) GetSyncgroupNames(ctx *context.T, opts ...rpc.CallOpt) (o0 []string, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetSyncgroupNames", nil, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) CreateSyncgroup(ctx *context.T, i0 string, i1 SyncgroupSpec, i2 SyncgroupMemberInfo, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "CreateSyncgroup", []interface{}{i0, i1, i2}, nil, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) JoinSyncgroup(ctx *context.T, i0 string, i1 SyncgroupMemberInfo, opts ...rpc.CallOpt) (o0 SyncgroupSpec, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "JoinSyncgroup", []interface{}{i0, i1}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) LeaveSyncgroup(ctx *context.T, i0 string, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "LeaveSyncgroup", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) DestroySyncgroup(ctx *context.T, i0 string, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "DestroySyncgroup", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) EjectFromSyncgroup(ctx *context.T, i0 string, i1 string, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "EjectFromSyncgroup", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) GetSyncgroupSpec(ctx *context.T, i0 string, opts ...rpc.CallOpt) (o0 SyncgroupSpec, o1 string, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetSyncgroupSpec", []interface{}{i0}, []interface{}{&o0, &o1}, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) SetSyncgroupSpec(ctx *context.T, i0 string, i1 SyncgroupSpec, i2 string, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "SetSyncgroupSpec", []interface{}{i0, i1, i2}, nil, opts...)
+	return
+}
+
+func (c implSyncgroupManagerClientStub) GetSyncgroupMembers(ctx *context.T, i0 string, opts ...rpc.CallOpt) (o0 map[string]SyncgroupMemberInfo, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetSyncgroupMembers", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+// SyncgroupManagerServerMethods is the interface a server writer
+// implements for SyncgroupManager.
+//
+// SyncgroupManager is the interface for syncgroup operations.
+// TODO(hpucha): Add blessings to create/join and add a refresh method.
+type SyncgroupManagerServerMethods interface {
+	// GetSyncgroupNames returns the global names of all syncgroups attached to
+	// this database.
+	GetSyncgroupNames(*context.T, rpc.ServerCall) ([]string, error)
+	// CreateSyncgroup creates a new syncgroup with the given spec.
+	//
+	// Requires: Client must have at least Read access on the Database; prefix ACL
+	// must exist at each syncgroup prefix; Client must have at least Read access
+	// on each of these prefix ACLs.
+	CreateSyncgroup(_ *context.T, _ rpc.ServerCall, sgName string, spec SyncgroupSpec, myInfo SyncgroupMemberInfo) error
+	// JoinSyncgroup joins the syncgroup.
+	//
+	// Requires: Client must have at least Read access on the Database and on the
+	// syncgroup ACL.
+	JoinSyncgroup(_ *context.T, _ rpc.ServerCall, sgName string, myInfo SyncgroupMemberInfo) (spec SyncgroupSpec, _ error)
+	// LeaveSyncgroup leaves the syncgroup. Previously synced data will continue
+	// to be available.
+	//
+	// Requires: Client must have at least Read access on the Database.
+	LeaveSyncgroup(_ *context.T, _ rpc.ServerCall, sgName string) error
+	// DestroySyncgroup destroys the syncgroup. Previously synced data will
+	// continue to be available to all members.
+	//
+	// Requires: Client must have at least Read access on the Database, and must
+	// have Admin access on the syncgroup ACL.
+	DestroySyncgroup(_ *context.T, _ rpc.ServerCall, sgName string) error
+	// EjectFromSyncgroup ejects a member from the syncgroup. The ejected member
+	// will not be able to sync further, but will retain any data it has already
+	// synced.
+	//
+	// Requires: Client must have at least Read access on the Database, and must
+	// have Admin access on the syncgroup ACL.
+	EjectFromSyncgroup(_ *context.T, _ rpc.ServerCall, sgName string, member string) error
+	// GetSyncgroupSpec gets the syncgroup spec. version allows for atomic
+	// read-modify-write of the spec - see comment for SetSyncgroupSpec.
+	//
+	// Requires: Client must have at least Read access on the Database and on the
+	// syncgroup ACL.
+	GetSyncgroupSpec(_ *context.T, _ rpc.ServerCall, sgName string) (spec SyncgroupSpec, version string, _ error)
+	// SetSyncgroupSpec sets the syncgroup spec. version may be either empty or
+	// the value from a previous Get. If not empty, Set will only succeed if the
+	// current version matches the specified one.
+	//
+	// Requires: Client must have at least Read access on the Database, and must
+	// have Admin access on the syncgroup ACL.
+	SetSyncgroupSpec(_ *context.T, _ rpc.ServerCall, sgName string, spec SyncgroupSpec, version string) error
+	// GetSyncgroupMembers gets the info objects for members of the syncgroup.
+	//
+	// Requires: Client must have at least Read access on the Database and on the
+	// syncgroup ACL.
+	GetSyncgroupMembers(_ *context.T, _ rpc.ServerCall, sgName string) (members map[string]SyncgroupMemberInfo, _ error)
+}
+
+// SyncgroupManagerServerStubMethods is the server interface containing
+// SyncgroupManager methods, as expected by rpc.Server.
+// There is no difference between this interface and SyncgroupManagerServerMethods
+// since there are no streaming methods.
+type SyncgroupManagerServerStubMethods SyncgroupManagerServerMethods
+
+// SyncgroupManagerServerStub adds universal methods to SyncgroupManagerServerStubMethods.
+type SyncgroupManagerServerStub interface {
+	SyncgroupManagerServerStubMethods
+	// Describe the SyncgroupManager interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// SyncgroupManagerServer returns a server stub for SyncgroupManager.
+// It converts an implementation of SyncgroupManagerServerMethods into
+// an object that may be used by rpc.Server.
+func SyncgroupManagerServer(impl SyncgroupManagerServerMethods) SyncgroupManagerServerStub {
+	stub := implSyncgroupManagerServerStub{
+		impl: impl,
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implSyncgroupManagerServerStub struct {
+	impl SyncgroupManagerServerMethods
+	gs   *rpc.GlobState
+}
+
+func (s implSyncgroupManagerServerStub) GetSyncgroupNames(ctx *context.T, call rpc.ServerCall) ([]string, error) {
+	return s.impl.GetSyncgroupNames(ctx, call)
+}
+
+func (s implSyncgroupManagerServerStub) CreateSyncgroup(ctx *context.T, call rpc.ServerCall, i0 string, i1 SyncgroupSpec, i2 SyncgroupMemberInfo) error {
+	return s.impl.CreateSyncgroup(ctx, call, i0, i1, i2)
+}
+
+func (s implSyncgroupManagerServerStub) JoinSyncgroup(ctx *context.T, call rpc.ServerCall, i0 string, i1 SyncgroupMemberInfo) (SyncgroupSpec, error) {
+	return s.impl.JoinSyncgroup(ctx, call, i0, i1)
+}
+
+func (s implSyncgroupManagerServerStub) LeaveSyncgroup(ctx *context.T, call rpc.ServerCall, i0 string) error {
+	return s.impl.LeaveSyncgroup(ctx, call, i0)
+}
+
+func (s implSyncgroupManagerServerStub) DestroySyncgroup(ctx *context.T, call rpc.ServerCall, i0 string) error {
+	return s.impl.DestroySyncgroup(ctx, call, i0)
+}
+
+func (s implSyncgroupManagerServerStub) EjectFromSyncgroup(ctx *context.T, call rpc.ServerCall, i0 string, i1 string) error {
+	return s.impl.EjectFromSyncgroup(ctx, call, i0, i1)
+}
+
+func (s implSyncgroupManagerServerStub) GetSyncgroupSpec(ctx *context.T, call rpc.ServerCall, i0 string) (SyncgroupSpec, string, error) {
+	return s.impl.GetSyncgroupSpec(ctx, call, i0)
+}
+
+func (s implSyncgroupManagerServerStub) SetSyncgroupSpec(ctx *context.T, call rpc.ServerCall, i0 string, i1 SyncgroupSpec, i2 string) error {
+	return s.impl.SetSyncgroupSpec(ctx, call, i0, i1, i2)
+}
+
+func (s implSyncgroupManagerServerStub) GetSyncgroupMembers(ctx *context.T, call rpc.ServerCall, i0 string) (map[string]SyncgroupMemberInfo, error) {
+	return s.impl.GetSyncgroupMembers(ctx, call, i0)
+}
+
+func (s implSyncgroupManagerServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implSyncgroupManagerServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{SyncgroupManagerDesc}
+}
+
+// SyncgroupManagerDesc describes the SyncgroupManager interface.
+var SyncgroupManagerDesc rpc.InterfaceDesc = descSyncgroupManager
+
+// descSyncgroupManager hides the desc to keep godoc clean.
+var descSyncgroupManager = rpc.InterfaceDesc{
+	Name:    "SyncgroupManager",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// SyncgroupManager is the interface for syncgroup operations.\n// TODO(hpucha): Add blessings to create/join and add a refresh method.",
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "GetSyncgroupNames",
+			Doc:  "// GetSyncgroupNames returns the global names of all syncgroups attached to\n// this database.",
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // []string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "CreateSyncgroup",
+			Doc:  "// CreateSyncgroup creates a new syncgroup with the given spec.\n//\n// Requires: Client must have at least Read access on the Database; prefix ACL\n// must exist at each syncgroup prefix; Client must have at least Read access\n// on each of these prefix ACLs.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+				{"spec", ``},   // SyncgroupSpec
+				{"myInfo", ``}, // SyncgroupMemberInfo
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "JoinSyncgroup",
+			Doc:  "// JoinSyncgroup joins the syncgroup.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// syncgroup ACL.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+				{"myInfo", ``}, // SyncgroupMemberInfo
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"spec", ``}, // SyncgroupSpec
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "LeaveSyncgroup",
+			Doc:  "// LeaveSyncgroup leaves the syncgroup. Previously synced data will continue\n// to be available.\n//\n// Requires: Client must have at least Read access on the Database.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "DestroySyncgroup",
+			Doc:  "// DestroySyncgroup destroys the syncgroup. Previously synced data will\n// continue to be available to all members.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the syncgroup ACL.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "EjectFromSyncgroup",
+			Doc:  "// EjectFromSyncgroup ejects a member from the syncgroup. The ejected member\n// will not be able to sync further, but will retain any data it has already\n// synced.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the syncgroup ACL.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+				{"member", ``}, // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "GetSyncgroupSpec",
+			Doc:  "// GetSyncgroupSpec gets the syncgroup spec. version allows for atomic\n// read-modify-write of the spec - see comment for SetSyncgroupSpec.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// syncgroup ACL.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"spec", ``},    // SyncgroupSpec
+				{"version", ``}, // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "SetSyncgroupSpec",
+			Doc:  "// SetSyncgroupSpec sets the syncgroup spec. version may be either empty or\n// the value from a previous Get. If not empty, Set will only succeed if the\n// current version matches the specified one.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the syncgroup ACL.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``},  // string
+				{"spec", ``},    // SyncgroupSpec
+				{"version", ``}, // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "GetSyncgroupMembers",
+			Doc:  "// GetSyncgroupMembers gets the info objects for members of the syncgroup.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// syncgroup ACL.",
+			InArgs: []rpc.ArgDesc{
+				{"sgName", ``}, // string
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"members", ``}, // map[string]SyncgroupMemberInfo
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+	},
+}
+
+// BlobManagerClientMethods is the client interface
+// containing BlobManager methods.
+//
+// BlobManager is the interface for blob operations.
+//
+// Description of API for resumable blob creation (append-only):
+// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,
+//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the
+//   current blob size via GetBlobSize and appending to the blob via PutBlob.
+// - After commit, a blob is immutable, at which point PutBlob and CommitBlob
+//   may no longer be used.
+// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used
+//   after commit.
+type BlobManagerClientMethods interface {
+	// CreateBlob returns a BlobRef for a newly created blob.
+	CreateBlob(*context.T, ...rpc.CallOpt) (br BlobRef, _ error)
+	// PutBlob appends the byte stream to the blob.
+	PutBlob(_ *context.T, br BlobRef, _ ...rpc.CallOpt) (BlobManagerPutBlobClientCall, error)
+	// CommitBlob marks the blob as immutable.
+	CommitBlob(_ *context.T, br BlobRef, _ ...rpc.CallOpt) error
+	// GetBlobSize returns the count of bytes written as part of the blob
+	// (committed or uncommitted).
+	GetBlobSize(_ *context.T, br BlobRef, _ ...rpc.CallOpt) (int64, error)
+	// DeleteBlob locally deletes the blob (committed or uncommitted).
+	DeleteBlob(_ *context.T, br BlobRef, _ ...rpc.CallOpt) error
+	// GetBlob returns the byte stream from a committed blob starting at offset.
+	GetBlob(_ *context.T, br BlobRef, offset int64, _ ...rpc.CallOpt) (BlobManagerGetBlobClientCall, error)
+	// FetchBlob initiates fetching a blob if not locally found. priority
+	// controls the network priority of the blob. Higher priority blobs are
+	// fetched before the lower priority ones. However, an ongoing blob
+	// transfer is not interrupted. Status updates are streamed back to the
+	// client as fetch is in progress.
+	FetchBlob(_ *context.T, br BlobRef, priority uint64, _ ...rpc.CallOpt) (BlobManagerFetchBlobClientCall, error)
+	// PinBlob locally pins the blob so that it is not evicted.
+	PinBlob(_ *context.T, br BlobRef, _ ...rpc.CallOpt) error
+	// UnpinBlob locally unpins the blob so that it can be evicted if needed.
+	UnpinBlob(_ *context.T, br BlobRef, _ ...rpc.CallOpt) error
+	// KeepBlob locally caches the blob with the specified rank. Lower
+	// ranked blobs are more eagerly evicted.
+	KeepBlob(_ *context.T, br BlobRef, rank uint64, _ ...rpc.CallOpt) error
+}
+
+// BlobManagerClientStub adds universal methods to BlobManagerClientMethods.
+type BlobManagerClientStub interface {
+	BlobManagerClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// BlobManagerClient returns a client stub for BlobManager.
+func BlobManagerClient(name string) BlobManagerClientStub {
+	return implBlobManagerClientStub{name}
+}
+
+type implBlobManagerClientStub struct {
+	name string
+}
+
+func (c implBlobManagerClientStub) CreateBlob(ctx *context.T, opts ...rpc.CallOpt) (o0 BlobRef, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "CreateBlob", nil, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implBlobManagerClientStub) PutBlob(ctx *context.T, i0 BlobRef, opts ...rpc.CallOpt) (ocall BlobManagerPutBlobClientCall, err error) {
+	var call rpc.ClientCall
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "PutBlob", []interface{}{i0}, opts...); err != nil {
+		return
+	}
+	ocall = &implBlobManagerPutBlobClientCall{ClientCall: call}
+	return
+}
+
+func (c implBlobManagerClientStub) CommitBlob(ctx *context.T, i0 BlobRef, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "CommitBlob", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implBlobManagerClientStub) GetBlobSize(ctx *context.T, i0 BlobRef, opts ...rpc.CallOpt) (o0 int64, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetBlobSize", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implBlobManagerClientStub) DeleteBlob(ctx *context.T, i0 BlobRef, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "DeleteBlob", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implBlobManagerClientStub) GetBlob(ctx *context.T, i0 BlobRef, i1 int64, opts ...rpc.CallOpt) (ocall BlobManagerGetBlobClientCall, err error) {
+	var call rpc.ClientCall
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "GetBlob", []interface{}{i0, i1}, opts...); err != nil {
+		return
+	}
+	ocall = &implBlobManagerGetBlobClientCall{ClientCall: call}
+	return
+}
+
+func (c implBlobManagerClientStub) FetchBlob(ctx *context.T, i0 BlobRef, i1 uint64, opts ...rpc.CallOpt) (ocall BlobManagerFetchBlobClientCall, err error) {
+	var call rpc.ClientCall
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "FetchBlob", []interface{}{i0, i1}, opts...); err != nil {
+		return
+	}
+	ocall = &implBlobManagerFetchBlobClientCall{ClientCall: call}
+	return
+}
+
+func (c implBlobManagerClientStub) PinBlob(ctx *context.T, i0 BlobRef, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "PinBlob", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implBlobManagerClientStub) UnpinBlob(ctx *context.T, i0 BlobRef, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "UnpinBlob", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implBlobManagerClientStub) KeepBlob(ctx *context.T, i0 BlobRef, i1 uint64, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "KeepBlob", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+// BlobManagerPutBlobClientStream is the client stream for BlobManager.PutBlob.
+type BlobManagerPutBlobClientStream interface {
+	// SendStream returns the send side of the BlobManager.PutBlob client stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors
+		// encountered while sending, or if Send is called after Close or
+		// the stream has been canceled.  Blocks if there is no buffer
+		// space; will unblock when buffer space is available or after
+		// the stream has been canceled.
+		Send(item []byte) error
+		// Close indicates to the server that no more items will be sent;
+		// server Recv calls will receive io.EOF after all sent items.
+		// This is an optional call - e.g. a client might call Close if it
+		// needs to continue receiving items from the server after it's
+		// done sending.  Returns errors encountered while closing, or if
+		// Close is called after the stream has been canceled.  Like Send,
+		// blocks if there is no buffer space available.
+		Close() error
+	}
+}
+
+// BlobManagerPutBlobClientCall represents the call returned from BlobManager.PutBlob.
+type BlobManagerPutBlobClientCall interface {
+	BlobManagerPutBlobClientStream
+	// Finish performs the equivalent of SendStream().Close, then blocks until
+	// the server is done, and returns the positional return values for the call.
+	//
+	// Finish returns immediately if the call has been canceled; depending on the
+	// timing the output could either be an error signaling cancelation, or the
+	// valid positional return values from the server.
+	//
+	// Calling Finish is mandatory for releasing stream resources, unless the call
+	// has been canceled or any of the other methods return an error.  Finish should
+	// be called at most once.
+	Finish() error
+}
+
+type implBlobManagerPutBlobClientCall struct {
+	rpc.ClientCall
+}
+
+func (c *implBlobManagerPutBlobClientCall) SendStream() interface {
+	Send(item []byte) error
+	Close() error
+} {
+	return implBlobManagerPutBlobClientCallSend{c}
+}
+
+type implBlobManagerPutBlobClientCallSend struct {
+	c *implBlobManagerPutBlobClientCall
+}
+
+func (c implBlobManagerPutBlobClientCallSend) Send(item []byte) error {
+	return c.c.Send(item)
+}
+func (c implBlobManagerPutBlobClientCallSend) Close() error {
+	return c.c.CloseSend()
+}
+func (c *implBlobManagerPutBlobClientCall) Finish() (err error) {
+	err = c.ClientCall.Finish()
+	return
+}
+
+// BlobManagerGetBlobClientStream is the client stream for BlobManager.GetBlob.
+type BlobManagerGetBlobClientStream interface {
+	// RecvStream returns the receiver side of the BlobManager.GetBlob client stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() []byte
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+}
+
+// BlobManagerGetBlobClientCall represents the call returned from BlobManager.GetBlob.
+type BlobManagerGetBlobClientCall interface {
+	BlobManagerGetBlobClientStream
+	// Finish blocks until the server is done, and returns the positional return
+	// values for call.
+	//
+	// Finish returns immediately if the call has been canceled; depending on the
+	// timing the output could either be an error signaling cancelation, or the
+	// valid positional return values from the server.
+	//
+	// Calling Finish is mandatory for releasing stream resources, unless the call
+	// has been canceled or any of the other methods return an error.  Finish should
+	// be called at most once.
+	Finish() error
+}
+
+type implBlobManagerGetBlobClientCall struct {
+	rpc.ClientCall
+	valRecv []byte
+	errRecv error
+}
+
+func (c *implBlobManagerGetBlobClientCall) RecvStream() interface {
+	Advance() bool
+	Value() []byte
+	Err() error
+} {
+	return implBlobManagerGetBlobClientCallRecv{c}
+}
+
+type implBlobManagerGetBlobClientCallRecv struct {
+	c *implBlobManagerGetBlobClientCall
+}
+
+func (c implBlobManagerGetBlobClientCallRecv) Advance() bool {
+	c.c.errRecv = c.c.Recv(&c.c.valRecv)
+	return c.c.errRecv == nil
+}
+func (c implBlobManagerGetBlobClientCallRecv) Value() []byte {
+	return c.c.valRecv
+}
+func (c implBlobManagerGetBlobClientCallRecv) Err() error {
+	if c.c.errRecv == io.EOF {
+		return nil
+	}
+	return c.c.errRecv
+}
+func (c *implBlobManagerGetBlobClientCall) Finish() (err error) {
+	err = c.ClientCall.Finish()
+	return
+}
+
+// BlobManagerFetchBlobClientStream is the client stream for BlobManager.FetchBlob.
+type BlobManagerFetchBlobClientStream interface {
+	// RecvStream returns the receiver side of the BlobManager.FetchBlob client stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() BlobFetchStatus
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+}
+
+// BlobManagerFetchBlobClientCall represents the call returned from BlobManager.FetchBlob.
+type BlobManagerFetchBlobClientCall interface {
+	BlobManagerFetchBlobClientStream
+	// Finish blocks until the server is done, and returns the positional return
+	// values for call.
+	//
+	// Finish returns immediately if the call has been canceled; depending on the
+	// timing the output could either be an error signaling cancelation, or the
+	// valid positional return values from the server.
+	//
+	// Calling Finish is mandatory for releasing stream resources, unless the call
+	// has been canceled or any of the other methods return an error.  Finish should
+	// be called at most once.
+	Finish() error
+}
+
+type implBlobManagerFetchBlobClientCall struct {
+	rpc.ClientCall
+	valRecv BlobFetchStatus
+	errRecv error
+}
+
+func (c *implBlobManagerFetchBlobClientCall) RecvStream() interface {
+	Advance() bool
+	Value() BlobFetchStatus
+	Err() error
+} {
+	return implBlobManagerFetchBlobClientCallRecv{c}
+}
+
+type implBlobManagerFetchBlobClientCallRecv struct {
+	c *implBlobManagerFetchBlobClientCall
+}
+
+func (c implBlobManagerFetchBlobClientCallRecv) Advance() bool {
+	c.c.valRecv = BlobFetchStatus{}
+	c.c.errRecv = c.c.Recv(&c.c.valRecv)
+	return c.c.errRecv == nil
+}
+func (c implBlobManagerFetchBlobClientCallRecv) Value() BlobFetchStatus {
+	return c.c.valRecv
+}
+func (c implBlobManagerFetchBlobClientCallRecv) Err() error {
+	if c.c.errRecv == io.EOF {
+		return nil
+	}
+	return c.c.errRecv
+}
+func (c *implBlobManagerFetchBlobClientCall) Finish() (err error) {
+	err = c.ClientCall.Finish()
+	return
+}
+
+// BlobManagerServerMethods is the interface a server writer
+// implements for BlobManager.
+//
+// BlobManager is the interface for blob operations.
+//
+// Description of API for resumable blob creation (append-only):
+// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,
+//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the
+//   current blob size via GetBlobSize and appending to the blob via PutBlob.
+// - After commit, a blob is immutable, at which point PutBlob and CommitBlob
+//   may no longer be used.
+// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used
+//   after commit.
+type BlobManagerServerMethods interface {
+	// CreateBlob returns a BlobRef for a newly created blob.
+	CreateBlob(*context.T, rpc.ServerCall) (br BlobRef, _ error)
+	// PutBlob appends the byte stream to the blob.
+	PutBlob(_ *context.T, _ BlobManagerPutBlobServerCall, br BlobRef) error
+	// CommitBlob marks the blob as immutable.
+	CommitBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// GetBlobSize returns the count of bytes written as part of the blob
+	// (committed or uncommitted).
+	GetBlobSize(_ *context.T, _ rpc.ServerCall, br BlobRef) (int64, error)
+	// DeleteBlob locally deletes the blob (committed or uncommitted).
+	DeleteBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// GetBlob returns the byte stream from a committed blob starting at offset.
+	GetBlob(_ *context.T, _ BlobManagerGetBlobServerCall, br BlobRef, offset int64) error
+	// FetchBlob initiates fetching a blob if not locally found. priority
+	// controls the network priority of the blob. Higher priority blobs are
+	// fetched before the lower priority ones. However, an ongoing blob
+	// transfer is not interrupted. Status updates are streamed back to the
+	// client as fetch is in progress.
+	FetchBlob(_ *context.T, _ BlobManagerFetchBlobServerCall, br BlobRef, priority uint64) error
+	// PinBlob locally pins the blob so that it is not evicted.
+	PinBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// UnpinBlob locally unpins the blob so that it can be evicted if needed.
+	UnpinBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// KeepBlob locally caches the blob with the specified rank. Lower
+	// ranked blobs are more eagerly evicted.
+	KeepBlob(_ *context.T, _ rpc.ServerCall, br BlobRef, rank uint64) error
+}
+
+// BlobManagerServerStubMethods is the server interface containing
+// BlobManager methods, as expected by rpc.Server.
+// The only difference between this interface and BlobManagerServerMethods
+// is the streaming methods.
+type BlobManagerServerStubMethods interface {
+	// CreateBlob returns a BlobRef for a newly created blob.
+	CreateBlob(*context.T, rpc.ServerCall) (br BlobRef, _ error)
+	// PutBlob appends the byte stream to the blob.
+	PutBlob(_ *context.T, _ *BlobManagerPutBlobServerCallStub, br BlobRef) error
+	// CommitBlob marks the blob as immutable.
+	CommitBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// GetBlobSize returns the count of bytes written as part of the blob
+	// (committed or uncommitted).
+	GetBlobSize(_ *context.T, _ rpc.ServerCall, br BlobRef) (int64, error)
+	// DeleteBlob locally deletes the blob (committed or uncommitted).
+	DeleteBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// GetBlob returns the byte stream from a committed blob starting at offset.
+	GetBlob(_ *context.T, _ *BlobManagerGetBlobServerCallStub, br BlobRef, offset int64) error
+	// FetchBlob initiates fetching a blob if not locally found. priority
+	// controls the network priority of the blob. Higher priority blobs are
+	// fetched before the lower priority ones. However, an ongoing blob
+	// transfer is not interrupted. Status updates are streamed back to the
+	// client as fetch is in progress.
+	FetchBlob(_ *context.T, _ *BlobManagerFetchBlobServerCallStub, br BlobRef, priority uint64) error
+	// PinBlob locally pins the blob so that it is not evicted.
+	PinBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// UnpinBlob locally unpins the blob so that it can be evicted if needed.
+	UnpinBlob(_ *context.T, _ rpc.ServerCall, br BlobRef) error
+	// KeepBlob locally caches the blob with the specified rank. Lower
+	// ranked blobs are more eagerly evicted.
+	KeepBlob(_ *context.T, _ rpc.ServerCall, br BlobRef, rank uint64) error
+}
+
+// BlobManagerServerStub adds universal methods to BlobManagerServerStubMethods.
+type BlobManagerServerStub interface {
+	BlobManagerServerStubMethods
+	// Describe the BlobManager interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// BlobManagerServer returns a server stub for BlobManager.
+// It converts an implementation of BlobManagerServerMethods into
+// an object that may be used by rpc.Server.
+func BlobManagerServer(impl BlobManagerServerMethods) BlobManagerServerStub {
+	stub := implBlobManagerServerStub{
+		impl: impl,
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implBlobManagerServerStub struct {
+	impl BlobManagerServerMethods
+	gs   *rpc.GlobState
+}
+
+func (s implBlobManagerServerStub) CreateBlob(ctx *context.T, call rpc.ServerCall) (BlobRef, error) {
+	return s.impl.CreateBlob(ctx, call)
+}
+
+func (s implBlobManagerServerStub) PutBlob(ctx *context.T, call *BlobManagerPutBlobServerCallStub, i0 BlobRef) error {
+	return s.impl.PutBlob(ctx, call, i0)
+}
+
+func (s implBlobManagerServerStub) CommitBlob(ctx *context.T, call rpc.ServerCall, i0 BlobRef) error {
+	return s.impl.CommitBlob(ctx, call, i0)
+}
+
+func (s implBlobManagerServerStub) GetBlobSize(ctx *context.T, call rpc.ServerCall, i0 BlobRef) (int64, error) {
+	return s.impl.GetBlobSize(ctx, call, i0)
+}
+
+func (s implBlobManagerServerStub) DeleteBlob(ctx *context.T, call rpc.ServerCall, i0 BlobRef) error {
+	return s.impl.DeleteBlob(ctx, call, i0)
+}
+
+func (s implBlobManagerServerStub) GetBlob(ctx *context.T, call *BlobManagerGetBlobServerCallStub, i0 BlobRef, i1 int64) error {
+	return s.impl.GetBlob(ctx, call, i0, i1)
+}
+
+func (s implBlobManagerServerStub) FetchBlob(ctx *context.T, call *BlobManagerFetchBlobServerCallStub, i0 BlobRef, i1 uint64) error {
+	return s.impl.FetchBlob(ctx, call, i0, i1)
+}
+
+func (s implBlobManagerServerStub) PinBlob(ctx *context.T, call rpc.ServerCall, i0 BlobRef) error {
+	return s.impl.PinBlob(ctx, call, i0)
+}
+
+func (s implBlobManagerServerStub) UnpinBlob(ctx *context.T, call rpc.ServerCall, i0 BlobRef) error {
+	return s.impl.UnpinBlob(ctx, call, i0)
+}
+
+func (s implBlobManagerServerStub) KeepBlob(ctx *context.T, call rpc.ServerCall, i0 BlobRef, i1 uint64) error {
+	return s.impl.KeepBlob(ctx, call, i0, i1)
+}
+
+func (s implBlobManagerServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implBlobManagerServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{BlobManagerDesc}
+}
+
+// BlobManagerDesc describes the BlobManager interface.
+var BlobManagerDesc rpc.InterfaceDesc = descBlobManager
+
+// descBlobManager hides the desc to keep godoc clean.
+var descBlobManager = rpc.InterfaceDesc{
+	Name:    "BlobManager",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// BlobManager is the interface for blob operations.\n//\n// Description of API for resumable blob creation (append-only):\n// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,\n//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the\n//   current blob size via GetBlobSize and appending to the blob via PutBlob.\n// - After commit, a blob is immutable, at which point PutBlob and CommitBlob\n//   may no longer be used.\n// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used\n//   after commit.",
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "CreateBlob",
+			Doc:  "// CreateBlob returns a BlobRef for a newly created blob.",
+			OutArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "PutBlob",
+			Doc:  "// PutBlob appends the byte stream to the blob.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "CommitBlob",
+			Doc:  "// CommitBlob marks the blob as immutable.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "GetBlobSize",
+			Doc:  "// GetBlobSize returns the count of bytes written as part of the blob\n// (committed or uncommitted).",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // int64
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "DeleteBlob",
+			Doc:  "// DeleteBlob locally deletes the blob (committed or uncommitted).",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "GetBlob",
+			Doc:  "// GetBlob returns the byte stream from a committed blob starting at offset.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``},     // BlobRef
+				{"offset", ``}, // int64
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "FetchBlob",
+			Doc:  "// FetchBlob initiates fetching a blob if not locally found. priority\n// controls the network priority of the blob. Higher priority blobs are\n// fetched before the lower priority ones. However, an ongoing blob\n// transfer is not interrupted. Status updates are streamed back to the\n// client as fetch is in progress.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``},       // BlobRef
+				{"priority", ``}, // uint64
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "PinBlob",
+			Doc:  "// PinBlob locally pins the blob so that it is not evicted.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "UnpinBlob",
+			Doc:  "// UnpinBlob locally unpins the blob so that it can be evicted if needed.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``}, // BlobRef
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "KeepBlob",
+			Doc:  "// KeepBlob locally caches the blob with the specified rank. Lower\n// ranked blobs are more eagerly evicted.",
+			InArgs: []rpc.ArgDesc{
+				{"br", ``},   // BlobRef
+				{"rank", ``}, // uint64
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+	},
+}
+
+// BlobManagerPutBlobServerStream is the server stream for BlobManager.PutBlob.
+type BlobManagerPutBlobServerStream interface {
+	// RecvStream returns the receiver side of the BlobManager.PutBlob server stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() []byte
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+}
+
+// BlobManagerPutBlobServerCall represents the context passed to BlobManager.PutBlob.
+type BlobManagerPutBlobServerCall interface {
+	rpc.ServerCall
+	BlobManagerPutBlobServerStream
+}
+
+// BlobManagerPutBlobServerCallStub is a wrapper that converts rpc.StreamServerCall into
+// a typesafe stub that implements BlobManagerPutBlobServerCall.
+type BlobManagerPutBlobServerCallStub struct {
+	rpc.StreamServerCall
+	valRecv []byte
+	errRecv error
+}
+
+// Init initializes BlobManagerPutBlobServerCallStub from rpc.StreamServerCall.
+func (s *BlobManagerPutBlobServerCallStub) Init(call rpc.StreamServerCall) {
+	s.StreamServerCall = call
+}
+
+// RecvStream returns the receiver side of the BlobManager.PutBlob server stream.
+func (s *BlobManagerPutBlobServerCallStub) RecvStream() interface {
+	Advance() bool
+	Value() []byte
+	Err() error
+} {
+	return implBlobManagerPutBlobServerCallRecv{s}
+}
+
+type implBlobManagerPutBlobServerCallRecv struct {
+	s *BlobManagerPutBlobServerCallStub
+}
+
+func (s implBlobManagerPutBlobServerCallRecv) Advance() bool {
+	s.s.errRecv = s.s.Recv(&s.s.valRecv)
+	return s.s.errRecv == nil
+}
+func (s implBlobManagerPutBlobServerCallRecv) Value() []byte {
+	return s.s.valRecv
+}
+func (s implBlobManagerPutBlobServerCallRecv) Err() error {
+	if s.s.errRecv == io.EOF {
+		return nil
+	}
+	return s.s.errRecv
+}
+
+// BlobManagerGetBlobServerStream is the server stream for BlobManager.GetBlob.
+type BlobManagerGetBlobServerStream interface {
+	// SendStream returns the send side of the BlobManager.GetBlob server stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors encountered
+		// while sending.  Blocks if there is no buffer space; will unblock when
+		// buffer space is available.
+		Send(item []byte) error
+	}
+}
+
+// BlobManagerGetBlobServerCall represents the context passed to BlobManager.GetBlob.
+type BlobManagerGetBlobServerCall interface {
+	rpc.ServerCall
+	BlobManagerGetBlobServerStream
+}
+
+// BlobManagerGetBlobServerCallStub is a wrapper that converts rpc.StreamServerCall into
+// a typesafe stub that implements BlobManagerGetBlobServerCall.
+type BlobManagerGetBlobServerCallStub struct {
+	rpc.StreamServerCall
+}
+
+// Init initializes BlobManagerGetBlobServerCallStub from rpc.StreamServerCall.
+func (s *BlobManagerGetBlobServerCallStub) Init(call rpc.StreamServerCall) {
+	s.StreamServerCall = call
+}
+
+// SendStream returns the send side of the BlobManager.GetBlob server stream.
+func (s *BlobManagerGetBlobServerCallStub) SendStream() interface {
+	Send(item []byte) error
+} {
+	return implBlobManagerGetBlobServerCallSend{s}
+}
+
+type implBlobManagerGetBlobServerCallSend struct {
+	s *BlobManagerGetBlobServerCallStub
+}
+
+func (s implBlobManagerGetBlobServerCallSend) Send(item []byte) error {
+	return s.s.Send(item)
+}
+
+// BlobManagerFetchBlobServerStream is the server stream for BlobManager.FetchBlob.
+type BlobManagerFetchBlobServerStream interface {
+	// SendStream returns the send side of the BlobManager.FetchBlob server stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors encountered
+		// while sending.  Blocks if there is no buffer space; will unblock when
+		// buffer space is available.
+		Send(item BlobFetchStatus) error
+	}
+}
+
+// BlobManagerFetchBlobServerCall represents the context passed to BlobManager.FetchBlob.
+type BlobManagerFetchBlobServerCall interface {
+	rpc.ServerCall
+	BlobManagerFetchBlobServerStream
+}
+
+// BlobManagerFetchBlobServerCallStub is a wrapper that converts rpc.StreamServerCall into
+// a typesafe stub that implements BlobManagerFetchBlobServerCall.
+type BlobManagerFetchBlobServerCallStub struct {
+	rpc.StreamServerCall
+}
+
+// Init initializes BlobManagerFetchBlobServerCallStub from rpc.StreamServerCall.
+func (s *BlobManagerFetchBlobServerCallStub) Init(call rpc.StreamServerCall) {
+	s.StreamServerCall = call
+}
+
+// SendStream returns the send side of the BlobManager.FetchBlob server stream.
+func (s *BlobManagerFetchBlobServerCallStub) SendStream() interface {
+	Send(item BlobFetchStatus) error
+} {
+	return implBlobManagerFetchBlobServerCallSend{s}
+}
+
+type implBlobManagerFetchBlobServerCallSend struct {
+	s *BlobManagerFetchBlobServerCallStub
+}
+
+func (s implBlobManagerFetchBlobServerCallSend) Send(item BlobFetchStatus) error {
+	return s.s.Send(item)
+}
+
+// SchemaManagerClientMethods is the client interface
+// containing SchemaManager methods.
+//
+// SchemaManager implements the API for managing schema metadata attached
+// to a Database.
+type SchemaManagerClientMethods interface {
+	// GetSchemaMetadata retrieves schema metadata for this database.
+	//
+	// Requires: Client must have at least Read access on the Database.
+	GetSchemaMetadata(*context.T, ...rpc.CallOpt) (SchemaMetadata, error)
+	// SetSchemaMetadata stores schema metadata for this database.
+	//
+	// Requires: Client must have at least Write access on the Database.
+	SetSchemaMetadata(_ *context.T, metadata SchemaMetadata, _ ...rpc.CallOpt) error
+}
+
+// SchemaManagerClientStub adds universal methods to SchemaManagerClientMethods.
+type SchemaManagerClientStub interface {
+	SchemaManagerClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// SchemaManagerClient returns a client stub for SchemaManager.
+func SchemaManagerClient(name string) SchemaManagerClientStub {
+	return implSchemaManagerClientStub{name}
+}
+
+type implSchemaManagerClientStub struct {
+	name string
+}
+
+func (c implSchemaManagerClientStub) GetSchemaMetadata(ctx *context.T, opts ...rpc.CallOpt) (o0 SchemaMetadata, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetSchemaMetadata", nil, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implSchemaManagerClientStub) SetSchemaMetadata(ctx *context.T, i0 SchemaMetadata, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "SetSchemaMetadata", []interface{}{i0}, nil, opts...)
+	return
+}
+
+// SchemaManagerServerMethods is the interface a server writer
+// implements for SchemaManager.
+//
+// SchemaManager implements the API for managing schema metadata attached
+// to a Database.
+type SchemaManagerServerMethods interface {
+	// GetSchemaMetadata retrieves schema metadata for this database.
+	//
+	// Requires: Client must have at least Read access on the Database.
+	GetSchemaMetadata(*context.T, rpc.ServerCall) (SchemaMetadata, error)
+	// SetSchemaMetadata stores schema metadata for this database.
+	//
+	// Requires: Client must have at least Write access on the Database.
+	SetSchemaMetadata(_ *context.T, _ rpc.ServerCall, metadata SchemaMetadata) error
+}
+
+// SchemaManagerServerStubMethods is the server interface containing
+// SchemaManager methods, as expected by rpc.Server.
+// There is no difference between this interface and SchemaManagerServerMethods
+// since there are no streaming methods.
+type SchemaManagerServerStubMethods SchemaManagerServerMethods
+
+// SchemaManagerServerStub adds universal methods to SchemaManagerServerStubMethods.
+type SchemaManagerServerStub interface {
+	SchemaManagerServerStubMethods
+	// Describe the SchemaManager interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// SchemaManagerServer returns a server stub for SchemaManager.
+// It converts an implementation of SchemaManagerServerMethods into
+// an object that may be used by rpc.Server.
+func SchemaManagerServer(impl SchemaManagerServerMethods) SchemaManagerServerStub {
+	stub := implSchemaManagerServerStub{
+		impl: impl,
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implSchemaManagerServerStub struct {
+	impl SchemaManagerServerMethods
+	gs   *rpc.GlobState
+}
+
+func (s implSchemaManagerServerStub) GetSchemaMetadata(ctx *context.T, call rpc.ServerCall) (SchemaMetadata, error) {
+	return s.impl.GetSchemaMetadata(ctx, call)
+}
+
+func (s implSchemaManagerServerStub) SetSchemaMetadata(ctx *context.T, call rpc.ServerCall, i0 SchemaMetadata) error {
+	return s.impl.SetSchemaMetadata(ctx, call, i0)
+}
+
+func (s implSchemaManagerServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implSchemaManagerServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{SchemaManagerDesc}
+}
+
+// SchemaManagerDesc describes the SchemaManager interface.
+var SchemaManagerDesc rpc.InterfaceDesc = descSchemaManager
+
+// descSchemaManager hides the desc to keep godoc clean.
+var descSchemaManager = rpc.InterfaceDesc{
+	Name:    "SchemaManager",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// SchemaManager implements the API for managing schema metadata attached\n// to a Database.",
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "GetSchemaMetadata",
+			Doc:  "// GetSchemaMetadata retrieves schema metadata for this database.\n//\n// Requires: Client must have at least Read access on the Database.",
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // SchemaMetadata
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "SetSchemaMetadata",
+			Doc:  "// SetSchemaMetadata stores schema metadata for this database.\n//\n// Requires: Client must have at least Write access on the Database.",
+			InArgs: []rpc.ArgDesc{
+				{"metadata", ``}, // SchemaMetadata
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+	},
+}
+
+// ConflictManagerClientMethods is the client interface
+// containing ConflictManager methods.
+//
+// ConflictManager interface provides all the methods necessary to handle
+// conflict resolution for a given database.
+type ConflictManagerClientMethods interface {
+	// StartConflictResolver registers a resolver for the database that is
+	// associated with this ConflictManager and creates a stream to receive
+	// conflicts and send resolutions.
+	// Batches of ConflictInfos will be sent over with the Continued field
+	// within the ConflictInfo representing the batch boundary. Client must
+	// respond with a batch of ResolutionInfos in the same fashion.
+	// A key is under conflict if two different values were written to it
+	// concurrently (in logical time), i.e. neither value is an ancestor of the
+	// other in the history graph.
+	// A key under conflict can be a part of a batch committed on local or
+	// remote or both syncbases. ConflictInfos for all keys in these two batches
+	// are grouped together. These keys may themselves be under conflict; the
+	// presented batch is a transitive closure of all batches containing keys
+	// under conflict.
+	// For example, for local batch {key1, key2} and remote batch {key1, key3},
+	// the batch sent for conflict resolution will be {key1, key2, key3}.
+	// If there was another concurrent batch {key2, key4}, then the batch sent
+	// for conflict resolution will be {key1, key2, key3, key4}.
+	StartConflictResolver(*context.T, ...rpc.CallOpt) (ConflictManagerStartConflictResolverClientCall, error)
+}
+
+// ConflictManagerClientStub adds universal methods to ConflictManagerClientMethods.
+type ConflictManagerClientStub interface {
+	ConflictManagerClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// ConflictManagerClient returns a client stub for ConflictManager.
+func ConflictManagerClient(name string) ConflictManagerClientStub {
+	return implConflictManagerClientStub{name}
+}
+
+type implConflictManagerClientStub struct {
+	name string
+}
+
+func (c implConflictManagerClientStub) StartConflictResolver(ctx *context.T, opts ...rpc.CallOpt) (ocall ConflictManagerStartConflictResolverClientCall, err error) {
+	var call rpc.ClientCall
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "StartConflictResolver", nil, opts...); err != nil {
+		return
+	}
+	ocall = &implConflictManagerStartConflictResolverClientCall{ClientCall: call}
+	return
+}
+
+// ConflictManagerStartConflictResolverClientStream is the client stream for ConflictManager.StartConflictResolver.
+type ConflictManagerStartConflictResolverClientStream interface {
+	// RecvStream returns the receiver side of the ConflictManager.StartConflictResolver client stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() ConflictInfo
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+	// SendStream returns the send side of the ConflictManager.StartConflictResolver client stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors
+		// encountered while sending, or if Send is called after Close or
+		// the stream has been canceled.  Blocks if there is no buffer
+		// space; will unblock when buffer space is available or after
+		// the stream has been canceled.
+		Send(item ResolutionInfo) error
+		// Close indicates to the server that no more items will be sent;
+		// server Recv calls will receive io.EOF after all sent items.
+		// This is an optional call - e.g. a client might call Close if it
+		// needs to continue receiving items from the server after it's
+		// done sending.  Returns errors encountered while closing, or if
+		// Close is called after the stream has been canceled.  Like Send,
+		// blocks if there is no buffer space available.
+		Close() error
+	}
+}
+
+// ConflictManagerStartConflictResolverClientCall represents the call returned from ConflictManager.StartConflictResolver.
+type ConflictManagerStartConflictResolverClientCall interface {
+	ConflictManagerStartConflictResolverClientStream
+	// Finish performs the equivalent of SendStream().Close, then blocks until
+	// the server is done, and returns the positional return values for the call.
+	//
+	// Finish returns immediately if the call has been canceled; depending on the
+	// timing the output could either be an error signaling cancelation, or the
+	// valid positional return values from the server.
+	//
+	// Calling Finish is mandatory for releasing stream resources, unless the call
+	// has been canceled or any of the other methods return an error.  Finish should
+	// be called at most once.
+	Finish() error
+}
+
+type implConflictManagerStartConflictResolverClientCall struct {
+	rpc.ClientCall
+	valRecv ConflictInfo
+	errRecv error
+}
+
+func (c *implConflictManagerStartConflictResolverClientCall) RecvStream() interface {
+	Advance() bool
+	Value() ConflictInfo
+	Err() error
+} {
+	return implConflictManagerStartConflictResolverClientCallRecv{c}
+}
+
+type implConflictManagerStartConflictResolverClientCallRecv struct {
+	c *implConflictManagerStartConflictResolverClientCall
+}
+
+func (c implConflictManagerStartConflictResolverClientCallRecv) Advance() bool {
+	c.c.valRecv = ConflictInfo{}
+	c.c.errRecv = c.c.Recv(&c.c.valRecv)
+	return c.c.errRecv == nil
+}
+func (c implConflictManagerStartConflictResolverClientCallRecv) Value() ConflictInfo {
+	return c.c.valRecv
+}
+func (c implConflictManagerStartConflictResolverClientCallRecv) Err() error {
+	if c.c.errRecv == io.EOF {
+		return nil
+	}
+	return c.c.errRecv
+}
+func (c *implConflictManagerStartConflictResolverClientCall) SendStream() interface {
+	Send(item ResolutionInfo) error
+	Close() error
+} {
+	return implConflictManagerStartConflictResolverClientCallSend{c}
+}
+
+type implConflictManagerStartConflictResolverClientCallSend struct {
+	c *implConflictManagerStartConflictResolverClientCall
+}
+
+func (c implConflictManagerStartConflictResolverClientCallSend) Send(item ResolutionInfo) error {
+	return c.c.Send(item)
+}
+func (c implConflictManagerStartConflictResolverClientCallSend) Close() error {
+	return c.c.CloseSend()
+}
+func (c *implConflictManagerStartConflictResolverClientCall) Finish() (err error) {
+	err = c.ClientCall.Finish()
+	return
+}
+
+// ConflictManagerServerMethods is the interface a server writer
+// implements for ConflictManager.
+//
+// ConflictManager interface provides all the methods necessary to handle
+// conflict resolution for a given database.
+type ConflictManagerServerMethods interface {
+	// StartConflictResolver registers a resolver for the database that is
+	// associated with this ConflictManager and creates a stream to receive
+	// conflicts and send resolutions.
+	// Batches of ConflictInfos will be sent over with the Continued field
+	// within the ConflictInfo representing the batch boundary. Client must
+	// respond with a batch of ResolutionInfos in the same fashion.
+	// A key is under conflict if two different values were written to it
+	// concurrently (in logical time), i.e. neither value is an ancestor of the
+	// other in the history graph.
+	// A key under conflict can be a part of a batch committed on local or
+	// remote or both syncbases. ConflictInfos for all keys in these two batches
+	// are grouped together. These keys may themselves be under conflict; the
+	// presented batch is a transitive closure of all batches containing keys
+	// under conflict.
+	// For example, for local batch {key1, key2} and remote batch {key1, key3},
+	// the batch sent for conflict resolution will be {key1, key2, key3}.
+	// If there was another concurrent batch {key2, key4}, then the batch sent
+	// for conflict resolution will be {key1, key2, key3, key4}.
+	StartConflictResolver(*context.T, ConflictManagerStartConflictResolverServerCall) error
+}
+
+// ConflictManagerServerStubMethods is the server interface containing
+// ConflictManager methods, as expected by rpc.Server.
+// The only difference between this interface and ConflictManagerServerMethods
+// is the streaming methods.
+type ConflictManagerServerStubMethods interface {
+	// StartConflictResolver registers a resolver for the database that is
+	// associated with this ConflictManager and creates a stream to receive
+	// conflicts and send resolutions.
+	// Batches of ConflictInfos will be sent over with the Continued field
+	// within the ConflictInfo representing the batch boundary. Client must
+	// respond with a batch of ResolutionInfos in the same fashion.
+	// A key is under conflict if two different values were written to it
+	// concurrently (in logical time), i.e. neither value is an ancestor of the
+	// other in the history graph.
+	// A key under conflict can be a part of a batch committed on local or
+	// remote or both syncbases. ConflictInfos for all keys in these two batches
+	// are grouped together. These keys may themselves be under conflict; the
+	// presented batch is a transitive closure of all batches containing keys
+	// under conflict.
+	// For example, for local batch {key1, key2} and remote batch {key1, key3},
+	// the batch sent for conflict resolution will be {key1, key2, key3}.
+	// If there was another concurrent batch {key2, key4}, then the batch sent
+	// for conflict resolution will be {key1, key2, key3, key4}.
+	StartConflictResolver(*context.T, *ConflictManagerStartConflictResolverServerCallStub) error
+}
+
+// ConflictManagerServerStub adds universal methods to ConflictManagerServerStubMethods.
+type ConflictManagerServerStub interface {
+	ConflictManagerServerStubMethods
+	// Describe the ConflictManager interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// ConflictManagerServer returns a server stub for ConflictManager.
+// It converts an implementation of ConflictManagerServerMethods into
+// an object that may be used by rpc.Server.
+func ConflictManagerServer(impl ConflictManagerServerMethods) ConflictManagerServerStub {
+	stub := implConflictManagerServerStub{
+		impl: impl,
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implConflictManagerServerStub struct {
+	impl ConflictManagerServerMethods
+	gs   *rpc.GlobState
+}
+
+func (s implConflictManagerServerStub) StartConflictResolver(ctx *context.T, call *ConflictManagerStartConflictResolverServerCallStub) error {
+	return s.impl.StartConflictResolver(ctx, call)
+}
+
+func (s implConflictManagerServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implConflictManagerServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{ConflictManagerDesc}
+}
+
+// ConflictManagerDesc describes the ConflictManager interface.
+var ConflictManagerDesc rpc.InterfaceDesc = descConflictManager
+
+// descConflictManager hides the desc to keep godoc clean.
+var descConflictManager = rpc.InterfaceDesc{
+	Name:    "ConflictManager",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// ConflictManager interface provides all the methods necessary to handle\n// conflict resolution for a given database.",
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "StartConflictResolver",
+			Doc:  "// StartConflictResolver registers a resolver for the database that is\n// associated with this ConflictManager and creates a stream to receive\n// conflicts and send resolutions.\n// Batches of ConflictInfos will be sent over with the Continued field\n// within the ConflictInfo representing the batch boundary. Client must\n// respond with a batch of ResolutionInfos in the same fashion.\n// A key is under conflict if two different values were written to it\n// concurrently (in logical time), i.e. neither value is an ancestor of the\n// other in the history graph.\n// A key under conflict can be a part of a batch committed on local or\n// remote or both syncbases. ConflictInfos for all keys in these two batches\n// are grouped together. These keys may themselves be under conflict; the\n// presented batch is a transitive closure of all batches containing keys\n// under conflict.\n// For example, for local batch {key1, key2} and remote batch {key1, key3},\n// the batch sent for conflict resolution will be {key1, key2, key3}.\n// If there was another concurrent batch {key2, key4}, then the batch sent\n// for conflict resolution will be {key1, key2, key3, key4}.",
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+	},
+}
+
+// ConflictManagerStartConflictResolverServerStream is the server stream for ConflictManager.StartConflictResolver.
+type ConflictManagerStartConflictResolverServerStream interface {
+	// RecvStream returns the receiver side of the ConflictManager.StartConflictResolver server stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() ResolutionInfo
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+	// SendStream returns the send side of the ConflictManager.StartConflictResolver server stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors encountered
+		// while sending.  Blocks if there is no buffer space; will unblock when
+		// buffer space is available.
+		Send(item ConflictInfo) error
+	}
+}
+
+// ConflictManagerStartConflictResolverServerCall represents the context passed to ConflictManager.StartConflictResolver.
+type ConflictManagerStartConflictResolverServerCall interface {
+	rpc.ServerCall
+	ConflictManagerStartConflictResolverServerStream
+}
+
+// ConflictManagerStartConflictResolverServerCallStub is a wrapper that converts rpc.StreamServerCall into
+// a typesafe stub that implements ConflictManagerStartConflictResolverServerCall.
+type ConflictManagerStartConflictResolverServerCallStub struct {
+	rpc.StreamServerCall
+	valRecv ResolutionInfo
+	errRecv error
+}
+
+// Init initializes ConflictManagerStartConflictResolverServerCallStub from rpc.StreamServerCall.
+func (s *ConflictManagerStartConflictResolverServerCallStub) Init(call rpc.StreamServerCall) {
+	s.StreamServerCall = call
+}
+
+// RecvStream returns the receiver side of the ConflictManager.StartConflictResolver server stream.
+func (s *ConflictManagerStartConflictResolverServerCallStub) RecvStream() interface {
+	Advance() bool
+	Value() ResolutionInfo
+	Err() error
+} {
+	return implConflictManagerStartConflictResolverServerCallRecv{s}
+}
+
+type implConflictManagerStartConflictResolverServerCallRecv struct {
+	s *ConflictManagerStartConflictResolverServerCallStub
+}
+
+func (s implConflictManagerStartConflictResolverServerCallRecv) Advance() bool {
+	s.s.valRecv = ResolutionInfo{}
+	s.s.errRecv = s.s.Recv(&s.s.valRecv)
+	return s.s.errRecv == nil
+}
+func (s implConflictManagerStartConflictResolverServerCallRecv) Value() ResolutionInfo {
+	return s.s.valRecv
+}
+func (s implConflictManagerStartConflictResolverServerCallRecv) Err() error {
+	if s.s.errRecv == io.EOF {
+		return nil
+	}
+	return s.s.errRecv
+}
+
+// SendStream returns the send side of the ConflictManager.StartConflictResolver server stream.
+func (s *ConflictManagerStartConflictResolverServerCallStub) SendStream() interface {
+	Send(item ConflictInfo) error
+} {
+	return implConflictManagerStartConflictResolverServerCallSend{s}
+}
+
+type implConflictManagerStartConflictResolverServerCallSend struct {
+	s *ConflictManagerStartConflictResolverServerCallStub
+}
+
+func (s implConflictManagerStartConflictResolverServerCallSend) Send(item ConflictInfo) error {
+	return s.s.Send(item)
+}
+
+// DatabaseClientMethods is the client interface
+// containing Database methods.
+//
+// Database represents a collection of Tables. Batches, queries, sync, watch,
+// etc. all operate at the Database level.
+// Database.Glob operates over Table names.
+// Param schemaVersion is the version number that the client expects the
+// database to be at. To disable schema version checking, pass -1.
+type DatabaseClientMethods interface {
+	// Object provides access control for Vanadium objects.
+	//
+	// Vanadium services implementing dynamic access control would typically embed
+	// this interface and tag additional methods defined by the service with one of
+	// Admin, Read, Write, Resolve etc. For example, the VDL definition of the
+	// object would be:
+	//
+	//   package mypackage
+	//
+	//   import "v.io/v23/security/access"
+	//   import "v.io/v23/services/permissions"
+	//
+	//   type MyObject interface {
+	//     permissions.Object
+	//     MyRead() (string, error) {access.Read}
+	//     MyWrite(string) error    {access.Write}
+	//   }
+	//
+	// If the set of pre-defined tags is insufficient, services may define their
+	// own tag type and annotate all methods with this new type.
+	//
+	// Instead of embedding this Object interface, define SetPermissions and
+	// GetPermissions in their own interface. Authorization policies will typically
+	// respect annotations of a single type. For example, the VDL definition of an
+	// object would be:
+	//
+	//  package mypackage
+	//
+	//  import "v.io/v23/security/access"
+	//
+	//  type MyTag string
+	//
+	//  const (
+	//    Blue = MyTag("Blue")
+	//    Red  = MyTag("Red")
+	//  )
+	//
+	//  type MyObject interface {
+	//    MyMethod() (string, error) {Blue}
+	//
+	//    // Allow clients to change access via the access.Object interface:
+	//    SetPermissions(perms access.Permissions, version string) error         {Red}
+	//    GetPermissions() (perms access.Permissions, version string, err error) {Blue}
+	//  }
+	permissions.ObjectClientMethods
+	// DatabaseWatcher allows a client to watch for updates to the database. For
+	// each watch request, the client will receive a reliable stream of watch events
+	// without re-ordering. See watch.GlobWatcher for a detailed explanation of the
+	// behavior.
+	// TODO(rogulenko): Currently the only supported watch patterns are
+	// "<tableName>/<rowPrefix>*". Consider changing that.
+	//
+	// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker
+	// argument that points to a particular place in the database event log. If an
+	// empty ResumeMarker is provided, the WatchStream will begin with a Change
+	// batch containing the initial state. Otherwise, the WatchStream will contain
+	// only changes since the provided ResumeMarker.
+	//
+	// The result stream consists of a never-ending sequence of Change messages
+	// (until the call fails or is canceled). Each Change contains the Name field
+	// in the form "<tableName>/<rowKey>" and the Value field of the StoreChange
+	// type. If the client has no access to a row specified in a change, that change
+	// is excluded from the result stream.
+	//
+	// Note: A single Watch Change batch may contain changes from more than one
+	// batch as originally committed on a remote Syncbase or obtained from conflict
+	// resolution. However, changes from a single original batch will always appear
+	// in the same Change batch.
+	DatabaseWatcherClientMethods
+	// SyncgroupManager is the interface for syncgroup operations.
+	// TODO(hpucha): Add blessings to create/join and add a refresh method.
+	SyncgroupManagerClientMethods
+	// BlobManager is the interface for blob operations.
+	//
+	// Description of API for resumable blob creation (append-only):
+	// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,
+	//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the
+	//   current blob size via GetBlobSize and appending to the blob via PutBlob.
+	// - After commit, a blob is immutable, at which point PutBlob and CommitBlob
+	//   may no longer be used.
+	// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used
+	//   after commit.
+	BlobManagerClientMethods
+	// SchemaManager implements the API for managing schema metadata attached
+	// to a Database.
+	SchemaManagerClientMethods
+	// ConflictManager interface provides all the methods necessary to handle
+	// conflict resolution for a given database.
+	ConflictManagerClientMethods
+	// Create creates this Database.
+	// If perms is nil, we inherit (copy) the App perms.
+	// Create requires the caller to have Write permission at the App.
+	Create(_ *context.T, metadata *SchemaMetadata, perms access.Permissions, _ ...rpc.CallOpt) error
+	// Destroy destroys this Database, permanently removing all of its data.
+	Destroy(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) error
+	// Exists returns true only if this Database exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) (bool, error)
+	// ListTables returns a list of all Table names.
+	// This method exists on Database but not on Service or App because for the
+	// latter we can simply use glob, while for the former glob fails on
+	// BatchDatabase since we encode the batch id in the BatchDatabase object
+	// name. More specifically, the glob client library appears to have two odd
+	// behaviors:
+	// 1) It checks Resolve access on every component along the path (by doing a
+	//    Dispatcher.Lookup), whereas this doesn't happen for other RPCs.
+	// 2) It does a Glob(<prefix>/*) for every prefix path, and only proceeds to
+	//    the next path component if that component appeared in its parent's Glob
+	//    results. This is inefficient in general, and broken for us since
+	//    Glob("app/*") does not return batch database names like "a/d##bId".
+	// TODO(sadovsky): Maybe switch to streaming RPC.
+	ListTables(*context.T, ...rpc.CallOpt) ([]string, error)
+	// Exec executes a syncQL query with positional parameters and returns all
+	// results as specified by the query's select/delete statement.
+	// Concurrency semantics are documented in model.go.
+	Exec(_ *context.T, schemaVersion int32, query string, params []*vom.RawBytes, _ ...rpc.CallOpt) (DatabaseExecClientCall, error)
+	// BeginBatch creates a new batch. It returns a "batch suffix" string to
+	// append to the object name of this Database, yielding an object name for the
+	// Database bound to the created batch. (For example, if this Database is
+	// named "/path/to/db" and BeginBatch returns "##abc", the client should
+	// construct batch Database object name "/path/to/db##abc".) If this Database
+	// is already bound to a batch, BeginBatch() will fail with ErrBoundToBatch.
+	// Concurrency semantics are documented in model.go.
+	// TODO(sadovsky): Maybe make BatchOptions optional. Also, rename it to 'opts'
+	// everywhere now that v.io/i/912 is resolved.
+	BeginBatch(_ *context.T, schemaVersion int32, bo BatchOptions, _ ...rpc.CallOpt) (string, error)
+	// Commit persists the pending changes to the database.
+	// If this Database is not bound to a batch, Commit() will fail with
+	// ErrNotBoundToBatch.
+	Commit(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) error
+	// Abort notifies the server that any pending changes can be discarded.
+	// It is not strictly required, but it may allow the server to release locks
+	// or other resources sooner than if it was not called.
+	// If this Database is not bound to a batch, Abort() will fail with
+	// ErrNotBoundToBatch.
+	Abort(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) error
+	// PauseSync pauses sync for this database. Incoming sync, as well as
+	// outgoing sync of subsequent writes, will be disabled until ResumeSync
+	// is called. PauseSync is idempotent.
+	PauseSync(*context.T, ...rpc.CallOpt) error
+	// ResumeSync resumes sync for this database. ResumeSync is idempotent.
+	ResumeSync(*context.T, ...rpc.CallOpt) error
+}
+
+// DatabaseClientStub adds universal methods to DatabaseClientMethods.
+type DatabaseClientStub interface {
+	DatabaseClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// DatabaseClient returns a client stub for Database.
+func DatabaseClient(name string) DatabaseClientStub {
+	return implDatabaseClientStub{name, permissions.ObjectClient(name), DatabaseWatcherClient(name), SyncgroupManagerClient(name), BlobManagerClient(name), SchemaManagerClient(name), ConflictManagerClient(name)}
+}
+
+type implDatabaseClientStub struct {
+	name string
+
+	permissions.ObjectClientStub
+	DatabaseWatcherClientStub
+	SyncgroupManagerClientStub
+	BlobManagerClientStub
+	SchemaManagerClientStub
+	ConflictManagerClientStub
+}
+
+func (c implDatabaseClientStub) Create(ctx *context.T, i0 *SchemaMetadata, i1 access.Permissions, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Create", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) Destroy(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Destroy", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) Exists(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (o0 bool, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Exists", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) ListTables(ctx *context.T, opts ...rpc.CallOpt) (o0 []string, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "ListTables", nil, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) Exec(ctx *context.T, i0 int32, i1 string, i2 []*vom.RawBytes, opts ...rpc.CallOpt) (ocall DatabaseExecClientCall, err error) {
+	var call rpc.ClientCall
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "Exec", []interface{}{i0, i1, i2}, opts...); err != nil {
+		return
+	}
+	ocall = &implDatabaseExecClientCall{ClientCall: call}
+	return
+}
+
+func (c implDatabaseClientStub) BeginBatch(ctx *context.T, i0 int32, i1 BatchOptions, opts ...rpc.CallOpt) (o0 string, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "BeginBatch", []interface{}{i0, i1}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) Commit(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Commit", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) Abort(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Abort", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) PauseSync(ctx *context.T, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "PauseSync", nil, nil, opts...)
+	return
+}
+
+func (c implDatabaseClientStub) ResumeSync(ctx *context.T, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "ResumeSync", nil, nil, opts...)
+	return
+}
+
+// DatabaseExecClientStream is the client stream for Database.Exec.
+type DatabaseExecClientStream interface {
+	// RecvStream returns the receiver side of the Database.Exec client stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() []*vom.RawBytes
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+}
+
+// DatabaseExecClientCall represents the call returned from Database.Exec.
+type DatabaseExecClientCall interface {
+	DatabaseExecClientStream
+	// Finish blocks until the server is done, and returns the positional return
+	// values for call.
+	//
+	// Finish returns immediately if the call has been canceled; depending on the
+	// timing the output could either be an error signaling cancelation, or the
+	// valid positional return values from the server.
+	//
+	// Calling Finish is mandatory for releasing stream resources, unless the call
+	// has been canceled or any of the other methods return an error.  Finish should
+	// be called at most once.
+	Finish() error
+}
+
+type implDatabaseExecClientCall struct {
+	rpc.ClientCall
+	valRecv []*vom.RawBytes
+	errRecv error
+}
+
+func (c *implDatabaseExecClientCall) RecvStream() interface {
+	Advance() bool
+	Value() []*vom.RawBytes
+	Err() error
+} {
+	return implDatabaseExecClientCallRecv{c}
+}
+
+type implDatabaseExecClientCallRecv struct {
+	c *implDatabaseExecClientCall
+}
+
+func (c implDatabaseExecClientCallRecv) Advance() bool {
+	c.c.errRecv = c.c.Recv(&c.c.valRecv)
+	return c.c.errRecv == nil
+}
+func (c implDatabaseExecClientCallRecv) Value() []*vom.RawBytes {
+	return c.c.valRecv
+}
+func (c implDatabaseExecClientCallRecv) Err() error {
+	if c.c.errRecv == io.EOF {
+		return nil
+	}
+	return c.c.errRecv
+}
+func (c *implDatabaseExecClientCall) Finish() (err error) {
+	err = c.ClientCall.Finish()
+	return
+}
+
+// DatabaseServerMethods is the interface a server writer
+// implements for Database.
+//
+// Database represents a collection of Tables. Batches, queries, sync, watch,
+// etc. all operate at the Database level.
+// Database.Glob operates over Table names.
+// Param schemaVersion is the version number that the client expects the
+// database to be at. To disable schema version checking, pass -1.
+type DatabaseServerMethods interface {
+	// Object provides access control for Vanadium objects.
+	//
+	// Vanadium services implementing dynamic access control would typically embed
+	// this interface and tag additional methods defined by the service with one of
+	// Admin, Read, Write, Resolve etc. For example, the VDL definition of the
+	// object would be:
+	//
+	//   package mypackage
+	//
+	//   import "v.io/v23/security/access"
+	//   import "v.io/v23/services/permissions"
+	//
+	//   type MyObject interface {
+	//     permissions.Object
+	//     MyRead() (string, error) {access.Read}
+	//     MyWrite(string) error    {access.Write}
+	//   }
+	//
+	// If the set of pre-defined tags is insufficient, services may define their
+	// own tag type and annotate all methods with this new type.
+	//
+	// Instead of embedding this Object interface, define SetPermissions and
+	// GetPermissions in their own interface. Authorization policies will typically
+	// respect annotations of a single type. For example, the VDL definition of an
+	// object would be:
+	//
+	//  package mypackage
+	//
+	//  import "v.io/v23/security/access"
+	//
+	//  type MyTag string
+	//
+	//  const (
+	//    Blue = MyTag("Blue")
+	//    Red  = MyTag("Red")
+	//  )
+	//
+	//  type MyObject interface {
+	//    MyMethod() (string, error) {Blue}
+	//
+	//    // Allow clients to change access via the access.Object interface:
+	//    SetPermissions(perms access.Permissions, version string) error         {Red}
+	//    GetPermissions() (perms access.Permissions, version string, err error) {Blue}
+	//  }
+	permissions.ObjectServerMethods
+	// DatabaseWatcher allows a client to watch for updates to the database. For
+	// each watch request, the client will receive a reliable stream of watch events
+	// without re-ordering. See watch.GlobWatcher for a detailed explanation of the
+	// behavior.
+	// TODO(rogulenko): Currently the only supported watch patterns are
+	// "<tableName>/<rowPrefix>*". Consider changing that.
+	//
+	// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker
+	// argument that points to a particular place in the database event log. If an
+	// empty ResumeMarker is provided, the WatchStream will begin with a Change
+	// batch containing the initial state. Otherwise, the WatchStream will contain
+	// only changes since the provided ResumeMarker.
+	//
+	// The result stream consists of a never-ending sequence of Change messages
+	// (until the call fails or is canceled). Each Change contains the Name field
+	// in the form "<tableName>/<rowKey>" and the Value field of the StoreChange
+	// type. If the client has no access to a row specified in a change, that change
+	// is excluded from the result stream.
+	//
+	// Note: A single Watch Change batch may contain changes from more than one
+	// batch as originally committed on a remote Syncbase or obtained from conflict
+	// resolution. However, changes from a single original batch will always appear
+	// in the same Change batch.
+	DatabaseWatcherServerMethods
+	// SyncgroupManager is the interface for syncgroup operations.
+	// TODO(hpucha): Add blessings to create/join and add a refresh method.
+	SyncgroupManagerServerMethods
+	// BlobManager is the interface for blob operations.
+	//
+	// Description of API for resumable blob creation (append-only):
+	// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,
+	//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the
+	//   current blob size via GetBlobSize and appending to the blob via PutBlob.
+	// - After commit, a blob is immutable, at which point PutBlob and CommitBlob
+	//   may no longer be used.
+	// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used
+	//   after commit.
+	BlobManagerServerMethods
+	// SchemaManager implements the API for managing schema metadata attached
+	// to a Database.
+	SchemaManagerServerMethods
+	// ConflictManager interface provides all the methods necessary to handle
+	// conflict resolution for a given database.
+	ConflictManagerServerMethods
+	// Create creates this Database.
+	// If perms is nil, we inherit (copy) the App perms.
+	// Create requires the caller to have Write permission at the App.
+	Create(_ *context.T, _ rpc.ServerCall, metadata *SchemaMetadata, perms access.Permissions) error
+	// Destroy destroys this Database, permanently removing all of its data.
+	Destroy(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// Exists returns true only if this Database exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (bool, error)
+	// ListTables returns a list of all Table names.
+	// This method exists on Database but not on Service or App because for the
+	// latter we can simply use glob, while for the former glob fails on
+	// BatchDatabase since we encode the batch id in the BatchDatabase object
+	// name. More specifically, the glob client library appears to have two odd
+	// behaviors:
+	// 1) It checks Resolve access on every component along the path (by doing a
+	//    Dispatcher.Lookup), whereas this doesn't happen for other RPCs.
+	// 2) It does a Glob(<prefix>/*) for every prefix path, and only proceeds to
+	//    the next path component if that component appeared in its parent's Glob
+	//    results. This is inefficient in general, and broken for us since
+	//    Glob("app/*") does not return batch database names like "a/d##bId".
+	// TODO(sadovsky): Maybe switch to streaming RPC.
+	ListTables(*context.T, rpc.ServerCall) ([]string, error)
+	// Exec executes a syncQL query with positional parameters and returns all
+	// results as specified by the query's select/delete statement.
+	// Concurrency semantics are documented in model.go.
+	Exec(_ *context.T, _ DatabaseExecServerCall, schemaVersion int32, query string, params []*vom.RawBytes) error
+	// BeginBatch creates a new batch. It returns a "batch suffix" string to
+	// append to the object name of this Database, yielding an object name for the
+	// Database bound to the created batch. (For example, if this Database is
+	// named "/path/to/db" and BeginBatch returns "##abc", the client should
+	// construct batch Database object name "/path/to/db##abc".) If this Database
+	// is already bound to a batch, BeginBatch() will fail with ErrBoundToBatch.
+	// Concurrency semantics are documented in model.go.
+	// TODO(sadovsky): Maybe make BatchOptions optional. Also, rename it to 'opts'
+	// everywhere now that v.io/i/912 is resolved.
+	BeginBatch(_ *context.T, _ rpc.ServerCall, schemaVersion int32, bo BatchOptions) (string, error)
+	// Commit persists the pending changes to the database.
+	// If this Database is not bound to a batch, Commit() will fail with
+	// ErrNotBoundToBatch.
+	Commit(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// Abort notifies the server that any pending changes can be discarded.
+	// It is not strictly required, but it may allow the server to release locks
+	// or other resources sooner than if it was not called.
+	// If this Database is not bound to a batch, Abort() will fail with
+	// ErrNotBoundToBatch.
+	Abort(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// PauseSync pauses sync for this database. Incoming sync, as well as
+	// outgoing sync of subsequent writes, will be disabled until ResumeSync
+	// is called. PauseSync is idempotent.
+	PauseSync(*context.T, rpc.ServerCall) error
+	// ResumeSync resumes sync for this database. ResumeSync is idempotent.
+	ResumeSync(*context.T, rpc.ServerCall) error
+}
+
+// DatabaseServerStubMethods is the server interface containing
+// Database methods, as expected by rpc.Server.
+// The only difference between this interface and DatabaseServerMethods
+// is the streaming methods.
+type DatabaseServerStubMethods interface {
+	// Object provides access control for Vanadium objects.
+	//
+	// Vanadium services implementing dynamic access control would typically embed
+	// this interface and tag additional methods defined by the service with one of
+	// Admin, Read, Write, Resolve etc. For example, the VDL definition of the
+	// object would be:
+	//
+	//   package mypackage
+	//
+	//   import "v.io/v23/security/access"
+	//   import "v.io/v23/services/permissions"
+	//
+	//   type MyObject interface {
+	//     permissions.Object
+	//     MyRead() (string, error) {access.Read}
+	//     MyWrite(string) error    {access.Write}
+	//   }
+	//
+	// If the set of pre-defined tags is insufficient, services may define their
+	// own tag type and annotate all methods with this new type.
+	//
+	// Instead of embedding this Object interface, define SetPermissions and
+	// GetPermissions in their own interface. Authorization policies will typically
+	// respect annotations of a single type. For example, the VDL definition of an
+	// object would be:
+	//
+	//  package mypackage
+	//
+	//  import "v.io/v23/security/access"
+	//
+	//  type MyTag string
+	//
+	//  const (
+	//    Blue = MyTag("Blue")
+	//    Red  = MyTag("Red")
+	//  )
+	//
+	//  type MyObject interface {
+	//    MyMethod() (string, error) {Blue}
+	//
+	//    // Allow clients to change access via the access.Object interface:
+	//    SetPermissions(perms access.Permissions, version string) error         {Red}
+	//    GetPermissions() (perms access.Permissions, version string, err error) {Blue}
+	//  }
+	permissions.ObjectServerStubMethods
+	// DatabaseWatcher allows a client to watch for updates to the database. For
+	// each watch request, the client will receive a reliable stream of watch events
+	// without re-ordering. See watch.GlobWatcher for a detailed explanation of the
+	// behavior.
+	// TODO(rogulenko): Currently the only supported watch patterns are
+	// "<tableName>/<rowPrefix>*". Consider changing that.
+	//
+	// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker
+	// argument that points to a particular place in the database event log. If an
+	// empty ResumeMarker is provided, the WatchStream will begin with a Change
+	// batch containing the initial state. Otherwise, the WatchStream will contain
+	// only changes since the provided ResumeMarker.
+	//
+	// The result stream consists of a never-ending sequence of Change messages
+	// (until the call fails or is canceled). Each Change contains the Name field
+	// in the form "<tableName>/<rowKey>" and the Value field of the StoreChange
+	// type. If the client has no access to a row specified in a change, that change
+	// is excluded from the result stream.
+	//
+	// Note: A single Watch Change batch may contain changes from more than one
+	// batch as originally committed on a remote Syncbase or obtained from conflict
+	// resolution. However, changes from a single original batch will always appear
+	// in the same Change batch.
+	DatabaseWatcherServerStubMethods
+	// SyncgroupManager is the interface for syncgroup operations.
+	// TODO(hpucha): Add blessings to create/join and add a refresh method.
+	SyncgroupManagerServerStubMethods
+	// BlobManager is the interface for blob operations.
+	//
+	// Description of API for resumable blob creation (append-only):
+	// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,
+	//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the
+	//   current blob size via GetBlobSize and appending to the blob via PutBlob.
+	// - After commit, a blob is immutable, at which point PutBlob and CommitBlob
+	//   may no longer be used.
+	// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used
+	//   after commit.
+	BlobManagerServerStubMethods
+	// SchemaManager implements the API for managing schema metadata attached
+	// to a Database.
+	SchemaManagerServerStubMethods
+	// ConflictManager interface provides all the methods necessary to handle
+	// conflict resolution for a given database.
+	ConflictManagerServerStubMethods
+	// Create creates this Database.
+	// If perms is nil, we inherit (copy) the App perms.
+	// Create requires the caller to have Write permission at the App.
+	Create(_ *context.T, _ rpc.ServerCall, metadata *SchemaMetadata, perms access.Permissions) error
+	// Destroy destroys this Database, permanently removing all of its data.
+	Destroy(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// Exists returns true only if this Database exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (bool, error)
+	// ListTables returns a list of all Table names.
+	// This method exists on Database but not on Service or App because for the
+	// latter we can simply use glob, while for the former glob fails on
+	// BatchDatabase since we encode the batch id in the BatchDatabase object
+	// name. More specifically, the glob client library appears to have two odd
+	// behaviors:
+	// 1) It checks Resolve access on every component along the path (by doing a
+	//    Dispatcher.Lookup), whereas this doesn't happen for other RPCs.
+	// 2) It does a Glob(<prefix>/*) for every prefix path, and only proceeds to
+	//    the next path component if that component appeared in its parent's Glob
+	//    results. This is inefficient in general, and broken for us since
+	//    Glob("app/*") does not return batch database names like "a/d##bId".
+	// TODO(sadovsky): Maybe switch to streaming RPC.
+	ListTables(*context.T, rpc.ServerCall) ([]string, error)
+	// Exec executes a syncQL query with positional parameters and returns all
+	// results as specified by the query's select/delete statement.
+	// Concurrency semantics are documented in model.go.
+	Exec(_ *context.T, _ *DatabaseExecServerCallStub, schemaVersion int32, query string, params []*vom.RawBytes) error
+	// BeginBatch creates a new batch. It returns a "batch suffix" string to
+	// append to the object name of this Database, yielding an object name for the
+	// Database bound to the created batch. (For example, if this Database is
+	// named "/path/to/db" and BeginBatch returns "##abc", the client should
+	// construct batch Database object name "/path/to/db##abc".) If this Database
+	// is already bound to a batch, BeginBatch() will fail with ErrBoundToBatch.
+	// Concurrency semantics are documented in model.go.
+	// TODO(sadovsky): Maybe make BatchOptions optional. Also, rename it to 'opts'
+	// everywhere now that v.io/i/912 is resolved.
+	BeginBatch(_ *context.T, _ rpc.ServerCall, schemaVersion int32, bo BatchOptions) (string, error)
+	// Commit persists the pending changes to the database.
+	// If this Database is not bound to a batch, Commit() will fail with
+	// ErrNotBoundToBatch.
+	Commit(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// Abort notifies the server that any pending changes can be discarded.
+	// It is not strictly required, but it may allow the server to release locks
+	// or other resources sooner than if it was not called.
+	// If this Database is not bound to a batch, Abort() will fail with
+	// ErrNotBoundToBatch.
+	Abort(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// PauseSync pauses sync for this database. Incoming sync, as well as
+	// outgoing sync of subsequent writes, will be disabled until ResumeSync
+	// is called. PauseSync is idempotent.
+	PauseSync(*context.T, rpc.ServerCall) error
+	// ResumeSync resumes sync for this database. ResumeSync is idempotent.
+	ResumeSync(*context.T, rpc.ServerCall) error
+}
+
+// DatabaseServerStub adds universal methods to DatabaseServerStubMethods.
+type DatabaseServerStub interface {
+	DatabaseServerStubMethods
+	// Describe the Database interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// DatabaseServer returns a server stub for Database.
+// It converts an implementation of DatabaseServerMethods into
+// an object that may be used by rpc.Server.
+func DatabaseServer(impl DatabaseServerMethods) DatabaseServerStub {
+	stub := implDatabaseServerStub{
+		impl:                       impl,
+		ObjectServerStub:           permissions.ObjectServer(impl),
+		DatabaseWatcherServerStub:  DatabaseWatcherServer(impl),
+		SyncgroupManagerServerStub: SyncgroupManagerServer(impl),
+		BlobManagerServerStub:      BlobManagerServer(impl),
+		SchemaManagerServerStub:    SchemaManagerServer(impl),
+		ConflictManagerServerStub:  ConflictManagerServer(impl),
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implDatabaseServerStub struct {
+	impl DatabaseServerMethods
+	permissions.ObjectServerStub
+	DatabaseWatcherServerStub
+	SyncgroupManagerServerStub
+	BlobManagerServerStub
+	SchemaManagerServerStub
+	ConflictManagerServerStub
+	gs *rpc.GlobState
+}
+
+func (s implDatabaseServerStub) Create(ctx *context.T, call rpc.ServerCall, i0 *SchemaMetadata, i1 access.Permissions) error {
+	return s.impl.Create(ctx, call, i0, i1)
+}
+
+func (s implDatabaseServerStub) Destroy(ctx *context.T, call rpc.ServerCall, i0 int32) error {
+	return s.impl.Destroy(ctx, call, i0)
+}
+
+func (s implDatabaseServerStub) Exists(ctx *context.T, call rpc.ServerCall, i0 int32) (bool, error) {
+	return s.impl.Exists(ctx, call, i0)
+}
+
+func (s implDatabaseServerStub) ListTables(ctx *context.T, call rpc.ServerCall) ([]string, error) {
+	return s.impl.ListTables(ctx, call)
+}
+
+func (s implDatabaseServerStub) Exec(ctx *context.T, call *DatabaseExecServerCallStub, i0 int32, i1 string, i2 []*vom.RawBytes) error {
+	return s.impl.Exec(ctx, call, i0, i1, i2)
+}
+
+func (s implDatabaseServerStub) BeginBatch(ctx *context.T, call rpc.ServerCall, i0 int32, i1 BatchOptions) (string, error) {
+	return s.impl.BeginBatch(ctx, call, i0, i1)
+}
+
+func (s implDatabaseServerStub) Commit(ctx *context.T, call rpc.ServerCall, i0 int32) error {
+	return s.impl.Commit(ctx, call, i0)
+}
+
+func (s implDatabaseServerStub) Abort(ctx *context.T, call rpc.ServerCall, i0 int32) error {
+	return s.impl.Abort(ctx, call, i0)
+}
+
+func (s implDatabaseServerStub) PauseSync(ctx *context.T, call rpc.ServerCall) error {
+	return s.impl.PauseSync(ctx, call)
+}
+
+func (s implDatabaseServerStub) ResumeSync(ctx *context.T, call rpc.ServerCall) error {
+	return s.impl.ResumeSync(ctx, call)
+}
+
+func (s implDatabaseServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implDatabaseServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{DatabaseDesc, permissions.ObjectDesc, DatabaseWatcherDesc, watch.GlobWatcherDesc, SyncgroupManagerDesc, BlobManagerDesc, SchemaManagerDesc, ConflictManagerDesc}
+}
+
+// DatabaseDesc describes the Database interface.
+var DatabaseDesc rpc.InterfaceDesc = descDatabase
+
+// descDatabase hides the desc to keep godoc clean.
+var descDatabase = rpc.InterfaceDesc{
+	Name:    "Database",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// Database represents a collection of Tables. Batches, queries, sync, watch,\n// etc. all operate at the Database level.\n// Database.Glob operates over Table names.\n// Param schemaVersion is the version number that the client expects the\n// database to be at. To disable schema version checking, pass -1.",
+	Embeds: []rpc.EmbedDesc{
+		{"Object", "v.io/v23/services/permissions", "// Object provides access control for Vanadium objects.\n//\n// Vanadium services implementing dynamic access control would typically embed\n// this interface and tag additional methods defined by the service with one of\n// Admin, Read, Write, Resolve etc. For example, the VDL definition of the\n// object would be:\n//\n//   package mypackage\n//\n//   import \"v.io/v23/security/access\"\n//   import \"v.io/v23/services/permissions\"\n//\n//   type MyObject interface {\n//     permissions.Object\n//     MyRead() (string, error) {access.Read}\n//     MyWrite(string) error    {access.Write}\n//   }\n//\n// If the set of pre-defined tags is insufficient, services may define their\n// own tag type and annotate all methods with this new type.\n//\n// Instead of embedding this Object interface, define SetPermissions and\n// GetPermissions in their own interface. Authorization policies will typically\n// respect annotations of a single type. For example, the VDL definition of an\n// object would be:\n//\n//  package mypackage\n//\n//  import \"v.io/v23/security/access\"\n//\n//  type MyTag string\n//\n//  const (\n//    Blue = MyTag(\"Blue\")\n//    Red  = MyTag(\"Red\")\n//  )\n//\n//  type MyObject interface {\n//    MyMethod() (string, error) {Blue}\n//\n//    // Allow clients to change access via the access.Object interface:\n//    SetPermissions(perms access.Permissions, version string) error         {Red}\n//    GetPermissions() (perms access.Permissions, version string, err error) {Blue}\n//  }"},
+		{"DatabaseWatcher", "v.io/v23/services/syncbase/nosql", "// DatabaseWatcher allows a client to watch for updates to the database. For\n// each watch request, the client will receive a reliable stream of watch events\n// without re-ordering. See watch.GlobWatcher for a detailed explanation of the\n// behavior.\n// TODO(rogulenko): Currently the only supported watch patterns are\n// \"<tableName>/<rowPrefix>*\". Consider changing that.\n//\n// Watching is done by starting a streaming RPC. The RPC takes a ResumeMarker\n// argument that points to a particular place in the database event log. If an\n// empty ResumeMarker is provided, the WatchStream will begin with a Change\n// batch containing the initial state. Otherwise, the WatchStream will contain\n// only changes since the provided ResumeMarker.\n//\n// The result stream consists of a never-ending sequence of Change messages\n// (until the call fails or is canceled). Each Change contains the Name field\n// in the form \"<tableName>/<rowKey>\" and the Value field of the StoreChange\n// type. If the client has no access to a row specified in a change, that change\n// is excluded from the result stream.\n//\n// Note: A single Watch Change batch may contain changes from more than one\n// batch as originally committed on a remote Syncbase or obtained from conflict\n// resolution. However, changes from a single original batch will always appear\n// in the same Change batch."},
+		{"SyncgroupManager", "v.io/v23/services/syncbase/nosql", "// SyncgroupManager is the interface for syncgroup operations.\n// TODO(hpucha): Add blessings to create/join and add a refresh method."},
+		{"BlobManager", "v.io/v23/services/syncbase/nosql", "// BlobManager is the interface for blob operations.\n//\n// Description of API for resumable blob creation (append-only):\n// - Up until commit, a BlobRef may be used with PutBlob, GetBlobSize,\n//   DeleteBlob, and CommitBlob. Blob creation may be resumed by obtaining the\n//   current blob size via GetBlobSize and appending to the blob via PutBlob.\n// - After commit, a blob is immutable, at which point PutBlob and CommitBlob\n//   may no longer be used.\n// - All other methods (GetBlob, FetchBlob, PinBlob, etc.) may only be used\n//   after commit."},
+		{"SchemaManager", "v.io/v23/services/syncbase/nosql", "// SchemaManager implements the API for managing schema metadata attached\n// to a Database."},
+		{"ConflictManager", "v.io/v23/services/syncbase/nosql", "// ConflictManager interface provides all the methods necessary to handle\n// conflict resolution for a given database."},
+	},
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "Create",
+			Doc:  "// Create creates this Database.\n// If perms is nil, we inherit (copy) the App perms.\n// Create requires the caller to have Write permission at the App.",
+			InArgs: []rpc.ArgDesc{
+				{"metadata", ``}, // *SchemaMetadata
+				{"perms", ``},    // access.Permissions
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "Destroy",
+			Doc:  "// Destroy destroys this Database, permanently removing all of its data.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "Exists",
+			Doc:  "// Exists returns true only if this Database exists. Insufficient permissions\n// cause Exists to return false instead of an error.\n// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy\n// do not exist.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // bool
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Resolve"))},
+		},
+		{
+			Name: "ListTables",
+			Doc:  "// ListTables returns a list of all Table names.\n// This method exists on Database but not on Service or App because for the\n// latter we can simply use glob, while for the former glob fails on\n// BatchDatabase since we encode the batch id in the BatchDatabase object\n// name. More specifically, the glob client library appears to have two odd\n// behaviors:\n// 1) It checks Resolve access on every component along the path (by doing a\n//    Dispatcher.Lookup), whereas this doesn't happen for other RPCs.\n// 2) It does a Glob(<prefix>/*) for every prefix path, and only proceeds to\n//    the next path component if that component appeared in its parent's Glob\n//    results. This is inefficient in general, and broken for us since\n//    Glob(\"app/*\") does not return batch database names like \"a/d##bId\".\n// TODO(sadovsky): Maybe switch to streaming RPC.",
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // []string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "Exec",
+			Doc:  "// Exec executes a syncQL query with positional parameters and returns all\n// results as specified by the query's select/delete statement.\n// Concurrency semantics are documented in model.go.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"query", ``},         // string
+				{"params", ``},        // []*vom.RawBytes
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "BeginBatch",
+			Doc:  "// BeginBatch creates a new batch. It returns a \"batch suffix\" string to\n// append to the object name of this Database, yielding an object name for the\n// Database bound to the created batch. (For example, if this Database is\n// named \"/path/to/db\" and BeginBatch returns \"##abc\", the client should\n// construct batch Database object name \"/path/to/db##abc\".) If this Database\n// is already bound to a batch, BeginBatch() will fail with ErrBoundToBatch.\n// Concurrency semantics are documented in model.go.\n// TODO(sadovsky): Maybe make BatchOptions optional. Also, rename it to 'opts'\n// everywhere now that v.io/i/912 is resolved.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"bo", ``},            // BatchOptions
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "Commit",
+			Doc:  "// Commit persists the pending changes to the database.\n// If this Database is not bound to a batch, Commit() will fail with\n// ErrNotBoundToBatch.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "Abort",
+			Doc:  "// Abort notifies the server that any pending changes can be discarded.\n// It is not strictly required, but it may allow the server to release locks\n// or other resources sooner than if it was not called.\n// If this Database is not bound to a batch, Abort() will fail with\n// ErrNotBoundToBatch.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "PauseSync",
+			Doc:  "// PauseSync pauses sync for this database. Incoming sync, as well as\n// outgoing sync of subsequent writes, will be disabled until ResumeSync\n// is called. PauseSync is idempotent.",
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "ResumeSync",
+			Doc:  "// ResumeSync resumes sync for this database. ResumeSync is idempotent.",
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+	},
+}
+
+// DatabaseExecServerStream is the server stream for Database.Exec.
+type DatabaseExecServerStream interface {
+	// SendStream returns the send side of the Database.Exec server stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors encountered
+		// while sending.  Blocks if there is no buffer space; will unblock when
+		// buffer space is available.
+		Send(item []*vom.RawBytes) error
+	}
+}
+
+// DatabaseExecServerCall represents the context passed to Database.Exec.
+type DatabaseExecServerCall interface {
+	rpc.ServerCall
+	DatabaseExecServerStream
+}
+
+// DatabaseExecServerCallStub is a wrapper that converts rpc.StreamServerCall into
+// a typesafe stub that implements DatabaseExecServerCall.
+type DatabaseExecServerCallStub struct {
+	rpc.StreamServerCall
+}
+
+// Init initializes DatabaseExecServerCallStub from rpc.StreamServerCall.
+func (s *DatabaseExecServerCallStub) Init(call rpc.StreamServerCall) {
+	s.StreamServerCall = call
+}
+
+// SendStream returns the send side of the Database.Exec server stream.
+func (s *DatabaseExecServerCallStub) SendStream() interface {
+	Send(item []*vom.RawBytes) error
+} {
+	return implDatabaseExecServerCallSend{s}
+}
+
+type implDatabaseExecServerCallSend struct {
+	s *DatabaseExecServerCallStub
+}
+
+func (s implDatabaseExecServerCallSend) Send(item []*vom.RawBytes) error {
+	return s.s.Send(item)
+}
+
+// TableClientMethods is the client interface
+// containing Table methods.
+//
+// Table represents a collection of Rows.
+// Table.Glob operates over the primary keys of Rows in the Table.
+// SchemaVersion is the version number that the client expects the database
+// to be at. To disable schema version checking, pass -1.
+type TableClientMethods interface {
+	// Create creates this Table.
+	// If perms is nil, we inherit (copy) the Database perms.
+	Create(_ *context.T, schemaVersion int32, perms access.Permissions, _ ...rpc.CallOpt) error
+	// Destroy destroys this Table.
+	Destroy(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) error
+	// Exists returns true only if this Table exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) (bool, error)
+	// GetPermissions returns the current Permissions for the Table.
+	GetPermissions(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) (access.Permissions, error)
+	// SetPermissions replaces the current Permissions for the Table.
+	SetPermissions(_ *context.T, schemaVersion int32, perms access.Permissions, _ ...rpc.CallOpt) error
+	// DeleteRange deletes all rows in the given half-open range [start, limit).
+	// If limit is "", all rows with keys >= start are included.
+	// TODO(sadovsky): Maybe add option to delete prefix perms fully covered by
+	// the row range.
+	DeleteRange(_ *context.T, schemaVersion int32, start []byte, limit []byte, _ ...rpc.CallOpt) error
+	// Scan returns all rows in the given half-open range [start, limit). If limit
+	// is "", all rows with keys >= start are included. Concurrency semantics are
+	// documented in model.go.
+	Scan(_ *context.T, schemaVersion int32, start []byte, limit []byte, _ ...rpc.CallOpt) (TableScanClientCall, error)
+	// GetPrefixPermissions returns an array of (prefix, perms) pairs. The array is
+	// sorted from longest prefix to shortest, so element zero is the one that
+	// applies to the row with the given key. The last element is always the
+	// prefix "" which represents the table's permissions -- the array will always
+	// have at least one element.
+	GetPrefixPermissions(_ *context.T, schemaVersion int32, key string, _ ...rpc.CallOpt) ([]PrefixPermissions, error)
+	// SetPrefixPermissions sets the permissions for all current and future rows with
+	// the given prefix. If the prefix overlaps with an existing prefix, the
+	// longest prefix that matches a row applies. For example:
+	//     SetPrefixPermissions(ctx, Prefix("a/b"), perms1)
+	//     SetPrefixPermissions(ctx, Prefix("a/b/c"), perms2)
+	// The permissions for row "a/b/1" are perms1, and the permissions for row
+	// "a/b/c/1" are perms2.
+	SetPrefixPermissions(_ *context.T, schemaVersion int32, prefix string, perms access.Permissions, _ ...rpc.CallOpt) error
+	// DeletePrefixPermissions deletes the permissions for the specified prefix. Any
+	// rows covered by this prefix will use the next longest prefix's permissions
+	// (see the array returned by GetPrefixPermissions).
+	DeletePrefixPermissions(_ *context.T, schemaVersion int32, prefix string, _ ...rpc.CallOpt) error
+}
+
+// TableClientStub adds universal methods to TableClientMethods.
+type TableClientStub interface {
+	TableClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// TableClient returns a client stub for Table.
+func TableClient(name string) TableClientStub {
+	return implTableClientStub{name}
+}
+
+type implTableClientStub struct {
+	name string
+}
+
+func (c implTableClientStub) Create(ctx *context.T, i0 int32, i1 access.Permissions, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Create", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+func (c implTableClientStub) Destroy(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Destroy", []interface{}{i0}, nil, opts...)
+	return
+}
+
+func (c implTableClientStub) Exists(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (o0 bool, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Exists", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implTableClientStub) GetPermissions(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (o0 access.Permissions, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetPermissions", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implTableClientStub) SetPermissions(ctx *context.T, i0 int32, i1 access.Permissions, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "SetPermissions", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+func (c implTableClientStub) DeleteRange(ctx *context.T, i0 int32, i1 []byte, i2 []byte, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "DeleteRange", []interface{}{i0, i1, i2}, nil, opts...)
+	return
+}
+
+func (c implTableClientStub) Scan(ctx *context.T, i0 int32, i1 []byte, i2 []byte, opts ...rpc.CallOpt) (ocall TableScanClientCall, err error) {
+	var call rpc.ClientCall
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "Scan", []interface{}{i0, i1, i2}, opts...); err != nil {
+		return
+	}
+	ocall = &implTableScanClientCall{ClientCall: call}
+	return
+}
+
+func (c implTableClientStub) GetPrefixPermissions(ctx *context.T, i0 int32, i1 string, opts ...rpc.CallOpt) (o0 []PrefixPermissions, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "GetPrefixPermissions", []interface{}{i0, i1}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implTableClientStub) SetPrefixPermissions(ctx *context.T, i0 int32, i1 string, i2 access.Permissions, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "SetPrefixPermissions", []interface{}{i0, i1, i2}, nil, opts...)
+	return
+}
+
+func (c implTableClientStub) DeletePrefixPermissions(ctx *context.T, i0 int32, i1 string, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "DeletePrefixPermissions", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+// TableScanClientStream is the client stream for Table.Scan.
+type TableScanClientStream interface {
+	// RecvStream returns the receiver side of the Table.Scan client stream.
+	RecvStream() interface {
+		// Advance stages an item so that it may be retrieved via Value.  Returns
+		// true iff there is an item to retrieve.  Advance must be called before
+		// Value is called.  May block if an item is not available.
+		Advance() bool
+		// Value returns the item that was staged by Advance.  May panic if Advance
+		// returned false or was not called.  Never blocks.
+		Value() KeyValue
+		// Err returns any error encountered by Advance.  Never blocks.
+		Err() error
+	}
+}
+
+// TableScanClientCall represents the call returned from Table.Scan.
+type TableScanClientCall interface {
+	TableScanClientStream
+	// Finish blocks until the server is done, and returns the positional return
+	// values for call.
+	//
+	// Finish returns immediately if the call has been canceled; depending on the
+	// timing the output could either be an error signaling cancelation, or the
+	// valid positional return values from the server.
+	//
+	// Calling Finish is mandatory for releasing stream resources, unless the call
+	// has been canceled or any of the other methods return an error.  Finish should
+	// be called at most once.
+	Finish() error
+}
+
+type implTableScanClientCall struct {
+	rpc.ClientCall
+	valRecv KeyValue
+	errRecv error
+}
+
+func (c *implTableScanClientCall) RecvStream() interface {
+	Advance() bool
+	Value() KeyValue
+	Err() error
+} {
+	return implTableScanClientCallRecv{c}
+}
+
+type implTableScanClientCallRecv struct {
+	c *implTableScanClientCall
+}
+
+func (c implTableScanClientCallRecv) Advance() bool {
+	c.c.valRecv = KeyValue{}
+	c.c.errRecv = c.c.Recv(&c.c.valRecv)
+	return c.c.errRecv == nil
+}
+func (c implTableScanClientCallRecv) Value() KeyValue {
+	return c.c.valRecv
+}
+func (c implTableScanClientCallRecv) Err() error {
+	if c.c.errRecv == io.EOF {
+		return nil
+	}
+	return c.c.errRecv
+}
+func (c *implTableScanClientCall) Finish() (err error) {
+	err = c.ClientCall.Finish()
+	return
+}
+
+// TableServerMethods is the interface a server writer
+// implements for Table.
+//
+// Table represents a collection of Rows.
+// Table.Glob operates over the primary keys of Rows in the Table.
+// SchemaVersion is the version number that the client expects the database
+// to be at. To disable schema version checking, pass -1.
+type TableServerMethods interface {
+	// Create creates this Table.
+	// If perms is nil, we inherit (copy) the Database perms.
+	Create(_ *context.T, _ rpc.ServerCall, schemaVersion int32, perms access.Permissions) error
+	// Destroy destroys this Table.
+	Destroy(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// Exists returns true only if this Table exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (bool, error)
+	// GetPermissions returns the current Permissions for the Table.
+	GetPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (access.Permissions, error)
+	// SetPermissions replaces the current Permissions for the Table.
+	SetPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, perms access.Permissions) error
+	// DeleteRange deletes all rows in the given half-open range [start, limit).
+	// If limit is "", all rows with keys >= start are included.
+	// TODO(sadovsky): Maybe add option to delete prefix perms fully covered by
+	// the row range.
+	DeleteRange(_ *context.T, _ rpc.ServerCall, schemaVersion int32, start []byte, limit []byte) error
+	// Scan returns all rows in the given half-open range [start, limit). If limit
+	// is "", all rows with keys >= start are included. Concurrency semantics are
+	// documented in model.go.
+	Scan(_ *context.T, _ TableScanServerCall, schemaVersion int32, start []byte, limit []byte) error
+	// GetPrefixPermissions returns an array of (prefix, perms) pairs. The array is
+	// sorted from longest prefix to shortest, so element zero is the one that
+	// applies to the row with the given key. The last element is always the
+	// prefix "" which represents the table's permissions -- the array will always
+	// have at least one element.
+	GetPrefixPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, key string) ([]PrefixPermissions, error)
+	// SetPrefixPermissions sets the permissions for all current and future rows with
+	// the given prefix. If the prefix overlaps with an existing prefix, the
+	// longest prefix that matches a row applies. For example:
+	//     SetPrefixPermissions(ctx, Prefix("a/b"), perms1)
+	//     SetPrefixPermissions(ctx, Prefix("a/b/c"), perms2)
+	// The permissions for row "a/b/1" are perms1, and the permissions for row
+	// "a/b/c/1" are perms2.
+	SetPrefixPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, prefix string, perms access.Permissions) error
+	// DeletePrefixPermissions deletes the permissions for the specified prefix. Any
+	// rows covered by this prefix will use the next longest prefix's permissions
+	// (see the array returned by GetPrefixPermissions).
+	DeletePrefixPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, prefix string) error
+}
+
+// TableServerStubMethods is the server interface containing
+// Table methods, as expected by rpc.Server.
+// The only difference between this interface and TableServerMethods
+// is the streaming methods.
+type TableServerStubMethods interface {
+	// Create creates this Table.
+	// If perms is nil, we inherit (copy) the Database perms.
+	Create(_ *context.T, _ rpc.ServerCall, schemaVersion int32, perms access.Permissions) error
+	// Destroy destroys this Table.
+	Destroy(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+	// Exists returns true only if this Table exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (bool, error)
+	// GetPermissions returns the current Permissions for the Table.
+	GetPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (access.Permissions, error)
+	// SetPermissions replaces the current Permissions for the Table.
+	SetPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, perms access.Permissions) error
+	// DeleteRange deletes all rows in the given half-open range [start, limit).
+	// If limit is "", all rows with keys >= start are included.
+	// TODO(sadovsky): Maybe add option to delete prefix perms fully covered by
+	// the row range.
+	DeleteRange(_ *context.T, _ rpc.ServerCall, schemaVersion int32, start []byte, limit []byte) error
+	// Scan returns all rows in the given half-open range [start, limit). If limit
+	// is "", all rows with keys >= start are included. Concurrency semantics are
+	// documented in model.go.
+	Scan(_ *context.T, _ *TableScanServerCallStub, schemaVersion int32, start []byte, limit []byte) error
+	// GetPrefixPermissions returns an array of (prefix, perms) pairs. The array is
+	// sorted from longest prefix to shortest, so element zero is the one that
+	// applies to the row with the given key. The last element is always the
+	// prefix "" which represents the table's permissions -- the array will always
+	// have at least one element.
+	GetPrefixPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, key string) ([]PrefixPermissions, error)
+	// SetPrefixPermissions sets the permissions for all current and future rows with
+	// the given prefix. If the prefix overlaps with an existing prefix, the
+	// longest prefix that matches a row applies. For example:
+	//     SetPrefixPermissions(ctx, Prefix("a/b"), perms1)
+	//     SetPrefixPermissions(ctx, Prefix("a/b/c"), perms2)
+	// The permissions for row "a/b/1" are perms1, and the permissions for row
+	// "a/b/c/1" are perms2.
+	SetPrefixPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, prefix string, perms access.Permissions) error
+	// DeletePrefixPermissions deletes the permissions for the specified prefix. Any
+	// rows covered by this prefix will use the next longest prefix's permissions
+	// (see the array returned by GetPrefixPermissions).
+	DeletePrefixPermissions(_ *context.T, _ rpc.ServerCall, schemaVersion int32, prefix string) error
+}
+
+// TableServerStub adds universal methods to TableServerStubMethods.
+type TableServerStub interface {
+	TableServerStubMethods
+	// Describe the Table interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// TableServer returns a server stub for Table.
+// It converts an implementation of TableServerMethods into
+// an object that may be used by rpc.Server.
+func TableServer(impl TableServerMethods) TableServerStub {
+	stub := implTableServerStub{
+		impl: impl,
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implTableServerStub struct {
+	impl TableServerMethods
+	gs   *rpc.GlobState
+}
+
+func (s implTableServerStub) Create(ctx *context.T, call rpc.ServerCall, i0 int32, i1 access.Permissions) error {
+	return s.impl.Create(ctx, call, i0, i1)
+}
+
+func (s implTableServerStub) Destroy(ctx *context.T, call rpc.ServerCall, i0 int32) error {
+	return s.impl.Destroy(ctx, call, i0)
+}
+
+func (s implTableServerStub) Exists(ctx *context.T, call rpc.ServerCall, i0 int32) (bool, error) {
+	return s.impl.Exists(ctx, call, i0)
+}
+
+func (s implTableServerStub) GetPermissions(ctx *context.T, call rpc.ServerCall, i0 int32) (access.Permissions, error) {
+	return s.impl.GetPermissions(ctx, call, i0)
+}
+
+func (s implTableServerStub) SetPermissions(ctx *context.T, call rpc.ServerCall, i0 int32, i1 access.Permissions) error {
+	return s.impl.SetPermissions(ctx, call, i0, i1)
+}
+
+func (s implTableServerStub) DeleteRange(ctx *context.T, call rpc.ServerCall, i0 int32, i1 []byte, i2 []byte) error {
+	return s.impl.DeleteRange(ctx, call, i0, i1, i2)
+}
+
+func (s implTableServerStub) Scan(ctx *context.T, call *TableScanServerCallStub, i0 int32, i1 []byte, i2 []byte) error {
+	return s.impl.Scan(ctx, call, i0, i1, i2)
+}
+
+func (s implTableServerStub) GetPrefixPermissions(ctx *context.T, call rpc.ServerCall, i0 int32, i1 string) ([]PrefixPermissions, error) {
+	return s.impl.GetPrefixPermissions(ctx, call, i0, i1)
+}
+
+func (s implTableServerStub) SetPrefixPermissions(ctx *context.T, call rpc.ServerCall, i0 int32, i1 string, i2 access.Permissions) error {
+	return s.impl.SetPrefixPermissions(ctx, call, i0, i1, i2)
+}
+
+func (s implTableServerStub) DeletePrefixPermissions(ctx *context.T, call rpc.ServerCall, i0 int32, i1 string) error {
+	return s.impl.DeletePrefixPermissions(ctx, call, i0, i1)
+}
+
+func (s implTableServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implTableServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{TableDesc}
+}
+
+// TableDesc describes the Table interface.
+var TableDesc rpc.InterfaceDesc = descTable
+
+// descTable hides the desc to keep godoc clean.
+var descTable = rpc.InterfaceDesc{
+	Name:    "Table",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// Table represents a collection of Rows.\n// Table.Glob operates over the primary keys of Rows in the Table.\n// SchemaVersion is the version number that the client expects the database\n// to be at. To disable schema version checking, pass -1.",
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "Create",
+			Doc:  "// Create creates this Table.\n// If perms is nil, we inherit (copy) the Database perms.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"perms", ``},         // access.Permissions
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "Destroy",
+			Doc:  "// Destroy destroys this Table.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "Exists",
+			Doc:  "// Exists returns true only if this Table exists. Insufficient permissions\n// cause Exists to return false instead of an error.\n// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy\n// do not exist.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // bool
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Resolve"))},
+		},
+		{
+			Name: "GetPermissions",
+			Doc:  "// GetPermissions returns the current Permissions for the Table.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // access.Permissions
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Admin"))},
+		},
+		{
+			Name: "SetPermissions",
+			Doc:  "// SetPermissions replaces the current Permissions for the Table.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"perms", ``},         // access.Permissions
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Admin"))},
+		},
+		{
+			Name: "DeleteRange",
+			Doc:  "// DeleteRange deletes all rows in the given half-open range [start, limit).\n// If limit is \"\", all rows with keys >= start are included.\n// TODO(sadovsky): Maybe add option to delete prefix perms fully covered by\n// the row range.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"start", ``},         // []byte
+				{"limit", ``},         // []byte
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "Scan",
+			Doc:  "// Scan returns all rows in the given half-open range [start, limit). If limit\n// is \"\", all rows with keys >= start are included. Concurrency semantics are\n// documented in model.go.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"start", ``},         // []byte
+				{"limit", ``},         // []byte
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "GetPrefixPermissions",
+			Doc:  "// GetPrefixPermissions returns an array of (prefix, perms) pairs. The array is\n// sorted from longest prefix to shortest, so element zero is the one that\n// applies to the row with the given key. The last element is always the\n// prefix \"\" which represents the table's permissions -- the array will always\n// have at least one element.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"key", ``},           // string
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // []PrefixPermissions
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Admin"))},
+		},
+		{
+			Name: "SetPrefixPermissions",
+			Doc:  "// SetPrefixPermissions sets the permissions for all current and future rows with\n// the given prefix. If the prefix overlaps with an existing prefix, the\n// longest prefix that matches a row applies. For example:\n//     SetPrefixPermissions(ctx, Prefix(\"a/b\"), perms1)\n//     SetPrefixPermissions(ctx, Prefix(\"a/b/c\"), perms2)\n// The permissions for row \"a/b/1\" are perms1, and the permissions for row\n// \"a/b/c/1\" are perms2.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"prefix", ``},        // string
+				{"perms", ``},         // access.Permissions
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Admin"))},
+		},
+		{
+			Name: "DeletePrefixPermissions",
+			Doc:  "// DeletePrefixPermissions deletes the permissions for the specified prefix. Any\n// rows covered by this prefix will use the next longest prefix's permissions\n// (see the array returned by GetPrefixPermissions).",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"prefix", ``},        // string
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Admin"))},
+		},
+	},
+}
+
+// TableScanServerStream is the server stream for Table.Scan.
+type TableScanServerStream interface {
+	// SendStream returns the send side of the Table.Scan server stream.
+	SendStream() interface {
+		// Send places the item onto the output stream.  Returns errors encountered
+		// while sending.  Blocks if there is no buffer space; will unblock when
+		// buffer space is available.
+		Send(item KeyValue) error
+	}
+}
+
+// TableScanServerCall represents the context passed to Table.Scan.
+type TableScanServerCall interface {
+	rpc.ServerCall
+	TableScanServerStream
+}
+
+// TableScanServerCallStub is a wrapper that converts rpc.StreamServerCall into
+// a typesafe stub that implements TableScanServerCall.
+type TableScanServerCallStub struct {
+	rpc.StreamServerCall
+}
+
+// Init initializes TableScanServerCallStub from rpc.StreamServerCall.
+func (s *TableScanServerCallStub) Init(call rpc.StreamServerCall) {
+	s.StreamServerCall = call
+}
+
+// SendStream returns the send side of the Table.Scan server stream.
+func (s *TableScanServerCallStub) SendStream() interface {
+	Send(item KeyValue) error
+} {
+	return implTableScanServerCallSend{s}
+}
+
+type implTableScanServerCallSend struct {
+	s *TableScanServerCallStub
+}
+
+func (s implTableScanServerCallSend) Send(item KeyValue) error {
+	return s.s.Send(item)
+}
+
+// RowClientMethods is the client interface
+// containing Row methods.
+//
+// Row represents a single row in a Table.
+// All access checks are performed against the most specific matching prefix
+// permissions in the Table.
+// SchemaVersion is the version number that the client expects the database
+// to be at. To disable schema version checking, pass -1.
+// NOTE(sadovsky): Currently we send []byte values over the wire for Get, Put,
+// and Scan. If there's a way to avoid encoding/decoding on the server side, we
+// can use vdl.Value everywhere without sacrificing performance.
+type RowClientMethods interface {
+	// Exists returns true only if this Row exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// Note, Exists on Row requires read permissions, unlike higher levels of
+	// hierarchy which require resolve, because Row existence usually carries
+	// more information.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) (bool, error)
+	// Get returns the value for this Row.
+	Get(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) ([]byte, error)
+	// Put writes the given value for this Row.
+	Put(_ *context.T, schemaVersion int32, value []byte, _ ...rpc.CallOpt) error
+	// Delete deletes this Row.
+	Delete(_ *context.T, schemaVersion int32, _ ...rpc.CallOpt) error
+}
+
+// RowClientStub adds universal methods to RowClientMethods.
+type RowClientStub interface {
+	RowClientMethods
+	rpc.UniversalServiceMethods
+}
+
+// RowClient returns a client stub for Row.
+func RowClient(name string) RowClientStub {
+	return implRowClientStub{name}
+}
+
+type implRowClientStub struct {
+	name string
+}
+
+func (c implRowClientStub) Exists(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (o0 bool, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Exists", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implRowClientStub) Get(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (o0 []byte, err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Get", []interface{}{i0}, []interface{}{&o0}, opts...)
+	return
+}
+
+func (c implRowClientStub) Put(ctx *context.T, i0 int32, i1 []byte, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Put", []interface{}{i0, i1}, nil, opts...)
+	return
+}
+
+func (c implRowClientStub) Delete(ctx *context.T, i0 int32, opts ...rpc.CallOpt) (err error) {
+	err = v23.GetClient(ctx).Call(ctx, c.name, "Delete", []interface{}{i0}, nil, opts...)
+	return
+}
+
+// RowServerMethods is the interface a server writer
+// implements for Row.
+//
+// Row represents a single row in a Table.
+// All access checks are performed against the most specific matching prefix
+// permissions in the Table.
+// SchemaVersion is the version number that the client expects the database
+// to be at. To disable schema version checking, pass -1.
+// NOTE(sadovsky): Currently we send []byte values over the wire for Get, Put,
+// and Scan. If there's a way to avoid encoding/decoding on the server side, we
+// can use vdl.Value everywhere without sacrificing performance.
+type RowServerMethods interface {
+	// Exists returns true only if this Row exists. Insufficient permissions
+	// cause Exists to return false instead of an error.
+	// Note, Exists on Row requires read permissions, unlike higher levels of
+	// hierarchy which require resolve, because Row existence usually carries
+	// more information.
+	// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy
+	// do not exist.
+	Exists(_ *context.T, _ rpc.ServerCall, schemaVersion int32) (bool, error)
+	// Get returns the value for this Row.
+	Get(_ *context.T, _ rpc.ServerCall, schemaVersion int32) ([]byte, error)
+	// Put writes the given value for this Row.
+	Put(_ *context.T, _ rpc.ServerCall, schemaVersion int32, value []byte) error
+	// Delete deletes this Row.
+	Delete(_ *context.T, _ rpc.ServerCall, schemaVersion int32) error
+}
+
+// RowServerStubMethods is the server interface containing
+// Row methods, as expected by rpc.Server.
+// There is no difference between this interface and RowServerMethods
+// since there are no streaming methods.
+type RowServerStubMethods RowServerMethods
+
+// RowServerStub adds universal methods to RowServerStubMethods.
+type RowServerStub interface {
+	RowServerStubMethods
+	// Describe the Row interfaces.
+	Describe__() []rpc.InterfaceDesc
+}
+
+// RowServer returns a server stub for Row.
+// It converts an implementation of RowServerMethods into
+// an object that may be used by rpc.Server.
+func RowServer(impl RowServerMethods) RowServerStub {
+	stub := implRowServerStub{
+		impl: impl,
+	}
+	// Initialize GlobState; always check the stub itself first, to handle the
+	// case where the user has the Glob method defined in their VDL source.
+	if gs := rpc.NewGlobState(stub); gs != nil {
+		stub.gs = gs
+	} else if gs := rpc.NewGlobState(impl); gs != nil {
+		stub.gs = gs
+	}
+	return stub
+}
+
+type implRowServerStub struct {
+	impl RowServerMethods
+	gs   *rpc.GlobState
+}
+
+func (s implRowServerStub) Exists(ctx *context.T, call rpc.ServerCall, i0 int32) (bool, error) {
+	return s.impl.Exists(ctx, call, i0)
+}
+
+func (s implRowServerStub) Get(ctx *context.T, call rpc.ServerCall, i0 int32) ([]byte, error) {
+	return s.impl.Get(ctx, call, i0)
+}
+
+func (s implRowServerStub) Put(ctx *context.T, call rpc.ServerCall, i0 int32, i1 []byte) error {
+	return s.impl.Put(ctx, call, i0, i1)
+}
+
+func (s implRowServerStub) Delete(ctx *context.T, call rpc.ServerCall, i0 int32) error {
+	return s.impl.Delete(ctx, call, i0)
+}
+
+func (s implRowServerStub) Globber() *rpc.GlobState {
+	return s.gs
+}
+
+func (s implRowServerStub) Describe__() []rpc.InterfaceDesc {
+	return []rpc.InterfaceDesc{RowDesc}
+}
+
+// RowDesc describes the Row interface.
+var RowDesc rpc.InterfaceDesc = descRow
+
+// descRow hides the desc to keep godoc clean.
+var descRow = rpc.InterfaceDesc{
+	Name:    "Row",
+	PkgPath: "v.io/v23/services/syncbase/nosql",
+	Doc:     "// Row represents a single row in a Table.\n// All access checks are performed against the most specific matching prefix\n// permissions in the Table.\n// SchemaVersion is the version number that the client expects the database\n// to be at. To disable schema version checking, pass -1.\n// NOTE(sadovsky): Currently we send []byte values over the wire for Get, Put,\n// and Scan. If there's a way to avoid encoding/decoding on the server side, we\n// can use vdl.Value everywhere without sacrificing performance.",
+	Methods: []rpc.MethodDesc{
+		{
+			Name: "Exists",
+			Doc:  "// Exists returns true only if this Row exists. Insufficient permissions\n// cause Exists to return false instead of an error.\n// Note, Exists on Row requires read permissions, unlike higher levels of\n// hierarchy which require resolve, because Row existence usually carries\n// more information.\n// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy\n// do not exist.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // bool
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "Get",
+			Doc:  "// Get returns the value for this Row.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			OutArgs: []rpc.ArgDesc{
+				{"", ``}, // []byte
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
+		},
+		{
+			Name: "Put",
+			Doc:  "// Put writes the given value for this Row.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+				{"value", ``},         // []byte
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+		{
+			Name: "Delete",
+			Doc:  "// Delete deletes this Row.",
+			InArgs: []rpc.ArgDesc{
+				{"schemaVersion", ``}, // int32
+			},
+			Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
+		},
+	},
+}
+
+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{}{}
+	}
+	__VDLInitCalled = true
+
+	// Register types.
+	vdl.Register((*BatchOptions)(nil))
+	vdl.Register((*PrefixPermissions)(nil))
+	vdl.Register((*KeyValue)(nil))
+	vdl.Register((*TableRow)(nil))
+	vdl.Register((*SyncgroupSpec)(nil))
+	vdl.Register((*SyncgroupMemberInfo)(nil))
+	vdl.Register((*ResolverType)(nil))
+	vdl.Register((*BatchSource)(nil))
+	vdl.Register((*BatchInfo)(nil))
+	vdl.Register((*ValueState)(nil))
+	vdl.Register((*Value)(nil))
+	vdl.Register((*RowOp)(nil))
+	vdl.Register((*ScanOp)(nil))
+	vdl.Register((*Operation)(nil))
+	vdl.Register((*RowInfo)(nil))
+	vdl.Register((*ConflictData)(nil))
+	vdl.Register((*ConflictInfo)(nil))
+	vdl.Register((*ValueSelection)(nil))
+	vdl.Register((*ResolutionInfo)(nil))
+	vdl.Register((*CrRule)(nil))
+	vdl.Register((*CrPolicy)(nil))
+	vdl.Register((*SchemaMetadata)(nil))
+	vdl.Register((*BlobRef)(nil))
+	vdl.Register((*BlobFetchState)(nil))
+	vdl.Register((*BlobFetchStatus)(nil))
+	vdl.Register((*StoreChange)(nil))
+
+	// Set error format strings.
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrBoundToBatch.ID), "{1:}{2:} bound to batch")
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrNotBoundToBatch.ID), "{1:}{2:} not bound to batch")
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrReadOnlyBatch.ID), "{1:}{2:} batch is read-only")
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrConcurrentBatch.ID), "{1:}{2:} concurrent batch")
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrSchemaVersionMismatch.ID), "{1:}{2:} actual schema version does not match the provided one")
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrBlobNotCommitted.ID), "{1:}{2:} blob is not yet committed")
+	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrSyncgroupJoinFailed.ID), "{1:}{2:} syncgroup join failed")
+
+	return struct{}{}
+}
diff --git a/services/syncbase/syncbase.vdl.go b/services/syncbase/syncbase.vdl.go
index 22c6559..70d7847 100644
--- a/services/syncbase/syncbase.vdl.go
+++ b/services/syncbase/syncbase.vdl.go
@@ -62,76 +62,115 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("NtpHost")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.NtpHost), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.NtpHost == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.NtpHost), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	var wireValue4 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue4, m.Now); err != nil {
+	var wireValue5 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue5, m.Now); err != nil {
 		return err
 	}
 
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Now")
+	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Now")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue4.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var8 := (wireValue5 == time_2.Time{})
+		if var8 {
+			if err := fieldTarget7.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue5.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
 			return err
 		}
 	}
-	var wireValue7 time_2.Duration
-	if err := time_2.DurationFromNative(&wireValue7, m.ElapsedTime); err != nil {
+	var wireValue9 time_2.Duration
+	if err := time_2.DurationFromNative(&wireValue9, m.ElapsedTime); err != nil {
 		return err
 	}
 
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ElapsedTime")
+	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("ElapsedTime")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue7.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
-			return err
-		}
-	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("DoNtpUpdate")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget11.FromBool(bool(m.DoNtpUpdate), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var12 := (wireValue9 == time_2.Duration{})
+		if var12 {
+			if err := fieldTarget11.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue9.FillVDLTarget(fieldTarget11, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("DoLocalUpdate")
+	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("DoNtpUpdate")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget13.FromBool(bool(m.DoLocalUpdate), tt.NonOptional().Field(4).Type); err != nil {
+
+		var15 := (m.DoNtpUpdate == false)
+		if var15 {
+			if err := fieldTarget14.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget14.FromBool(bool(m.DoNtpUpdate), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
+	}
+	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("DoLocalUpdate")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var18 := (m.DoLocalUpdate == false)
+		if var18 {
+			if err := fieldTarget17.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget17.FromBool(bool(m.DoLocalUpdate), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
 			return err
 		}
 	}
@@ -196,6 +235,10 @@
 
 	return nil
 }
+func (t *DevModeUpdateVClockOptsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = DevModeUpdateVClockOpts{}
+	return nil
+}
 
 // BatchOptions configures a batch.
 // TODO(sadovsky): Add more options, e.g. to configure isolation, timeouts,
@@ -226,28 +269,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Hint")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Hint), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Hint == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Hint), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("ReadOnly")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("ReadOnly")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromBool(bool(m.ReadOnly), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.ReadOnly == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.ReadOnly), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -297,6 +355,10 @@
 
 	return nil
 }
+func (t *BatchOptionsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BatchOptions{}
+	return nil
+}
 
 // PrefixPermissions represents a pair of (prefix, perms).
 type PrefixPermissions struct {
@@ -314,29 +376,47 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Prefix")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Prefix), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Prefix == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Prefix), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Perms")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Perms")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Perms.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Perms) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Perms.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -386,6 +466,10 @@
 
 	return nil
 }
+func (t *PrefixPermissionsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = PrefixPermissions{}
+	return nil
+}
 
 // KeyValue is a key-value pair.
 type KeyValue struct {
@@ -403,29 +487,47 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Value")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Value")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.Value), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Value) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Value), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -475,6 +577,10 @@
 
 	return nil
 }
+func (t *KeyValueTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = KeyValue{}
+	return nil
+}
 
 // CollectionRow encapsulates the collection name and row key or row prefix.
 type CollectionRow struct {
@@ -492,28 +598,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("CollectionName")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.CollectionName), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.CollectionName == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.CollectionName), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Row")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Row")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Row), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Row == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Row), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -563,6 +684,10 @@
 
 	return nil
 }
+func (t *CollectionRowTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CollectionRow{}
+	return nil
+}
 
 // SyncgroupSpec contains the specification for a syncgroup.
 type SyncgroupSpec struct {
@@ -597,100 +722,148 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Description")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Description), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Description == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Description), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Perms")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Perms")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Perms.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Perms) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Perms.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Prefixes")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Prefixes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget8, err := fieldTarget7.StartList(tt.NonOptional().Field(2).Type, len(m.Prefixes))
-		if err != nil {
-			return err
+		var var10 bool
+		if len(m.Prefixes) == 0 {
+			var10 = true
 		}
-		for i, elem10 := range m.Prefixes {
-			elemTarget9, err := listTarget8.StartElem(i)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(2).Type, len(m.Prefixes))
 			if err != nil {
 				return err
 			}
+			for i, elem13 := range m.Prefixes {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(2).Type.Elem()); err != nil {
-				return err
+				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
 			}
-			if err := listTarget8.FinishElem(elemTarget9); err != nil {
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget7.FinishList(listTarget8); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("MountTables")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("MountTables")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget13, err := fieldTarget12.StartList(tt.NonOptional().Field(3).Type, len(m.MountTables))
-		if err != nil {
-			return err
+		var var16 bool
+		if len(m.MountTables) == 0 {
+			var16 = true
 		}
-		for i, elem15 := range m.MountTables {
-			elemTarget14, err := listTarget13.StartElem(i)
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget17, err := fieldTarget15.StartList(tt.NonOptional().Field(3).Type, len(m.MountTables))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget14.FromString(string(elem15), tt.NonOptional().Field(3).Type.Elem()); err != nil {
-				return err
+			for i, elem19 := range m.MountTables {
+				elemTarget18, err := listTarget17.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget18.FromString(string(elem19), tt.NonOptional().Field(3).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget17.FinishElem(elemTarget18); err != nil {
+					return err
+				}
 			}
-			if err := listTarget13.FinishElem(elemTarget14); err != nil {
+			if err := fieldTarget15.FinishList(listTarget17); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget12.FinishList(listTarget13); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("IsPrivate")
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("IsPrivate")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget17.FromBool(bool(m.IsPrivate), tt.NonOptional().Field(4).Type); err != nil {
-			return err
+
+		var22 := (m.IsPrivate == false)
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget21.FromBool(bool(m.IsPrivate), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
 	}
@@ -755,6 +928,10 @@
 
 	return nil
 }
+func (t *SyncgroupSpecTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SyncgroupSpec{}
+	return nil
+}
 
 // []CollectionRow
 type __VDLTarget1_list struct {
@@ -788,6 +965,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []CollectionRow(nil)
+	return nil
+}
 
 // SyncgroupMemberInfo contains per-member metadata.
 type SyncgroupMemberInfo struct {
@@ -805,28 +986,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("SyncPriority")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.SyncPriority), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.SyncPriority == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.SyncPriority), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("IsServer")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("IsServer")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromBool(bool(m.IsServer), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.IsServer == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.IsServer), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -876,6 +1072,10 @@
 
 	return nil
 }
+func (t *SyncgroupMemberInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SyncgroupMemberInfo{}
+	return nil
+}
 
 // ResolverType defines the possible conflict resolution policies.
 // A Conflict is defined as presence of two independent sets of updates
@@ -970,11 +1170,15 @@
 	case "Defer":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/syncbase.ResolverType", src)
+		return fmt.Errorf("label %s not in enum ResolverType", src)
 	}
 
 	return nil
 }
+func (t *ResolverTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ResolverTypeLastWins
+	return nil
+}
 
 // BatchSource represents where the batch was committed.
 type BatchSource int
@@ -1051,11 +1255,15 @@
 	case "Remote":
 		*t.Value = 1
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/syncbase.BatchSource", src)
+		return fmt.Errorf("label %s not in enum BatchSource", src)
 	}
 
 	return nil
 }
+func (t *BatchSourceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BatchSourceLocal
+	return nil
+}
 
 type BatchInfo struct {
 	// Id is an identifier for a batch contained in a conflict. It is
@@ -1079,41 +1287,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.Id), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Id == uint64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.Id), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Hint")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Hint), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Source")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Hint")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Source.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
+		var7 := (m.Hint == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Hint), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Source")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Source == BatchSourceLocal)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Source.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -1168,6 +1399,10 @@
 
 	return nil
 }
+func (t *BatchInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BatchInfo{}
+	return nil
+}
 
 // ValueState represents the state for Value object providing information about
 // whether the Value object's Byte field is empty or not.
@@ -1261,11 +1496,15 @@
 	case "Unknown":
 		*t.Value = 3
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/syncbase.ValueState", src)
+		return fmt.Errorf("label %s not in enum ValueState", src)
 	}
 
 	return nil
 }
+func (t *ValueStateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ValueStateExists
+	return nil
+}
 
 // Value contains the encoded bytes for a row's value stored in syncbase.
 type Value struct {
@@ -1288,48 +1527,74 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.State == ValueStateExists)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Bytes")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Bytes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Bytes) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	var wireValue6 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue6, m.WriteTs); err != nil {
+	var wireValue8 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue8, m.WriteTs); err != nil {
 		return err
 	}
 
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("WriteTs")
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("WriteTs")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue6.FillVDLTarget(fieldTarget8, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var11 := (wireValue8 == time_2.Time{})
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue8.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
 			return err
 		}
 	}
@@ -1384,6 +1649,10 @@
 
 	return nil
 }
+func (t *ValueTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Value{}
+	return nil
+}
 
 // RowOp represents a read or write operation on a row corresponding to the
 // given key.
@@ -1410,69 +1679,61 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("LocalValue")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("LocalValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.LocalValue == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.LocalValue == (*Value)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.LocalValue.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
+
+			if err := m.LocalValue.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("RemoteValue")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("RemoteValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.RemoteValue == nil {
-			if err := fieldTarget7.FromNil(tt.NonOptional().Field(2).Type); err != nil {
+		var10 := (m.RemoteValue == (*Value)(nil))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.RemoteValue.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-				return err
-			}
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("AncestorValue")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
 
-		if m.AncestorValue == nil {
-			if err := fieldTarget9.FromNil(tt.NonOptional().Field(3).Type); err != nil {
-				return err
-			}
-		} else {
-			if err := m.AncestorValue.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
+			if err := m.RemoteValue.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		}
@@ -1480,6 +1741,27 @@
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("AncestorValue")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.AncestorValue == (*Value)(nil))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.AncestorValue.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -1536,6 +1818,10 @@
 
 	return nil
 }
+func (t *RowOpTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RowOp{}
+	return nil
+}
 
 // Optional Value
 type __VDLTarget2_optional struct {
@@ -1561,10 +1847,8 @@
 
 	return nil
 }
-func (t *__VDLTarget2_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget2_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*Value)(nil)
 	return nil
 }
 
@@ -1586,28 +1870,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Start")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Start), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Start == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Start), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Limit")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Limit")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Limit), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Limit == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Limit), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1657,6 +1956,10 @@
 
 	return nil
 }
+func (t *ScanOpTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ScanOp{}
+	return nil
+}
 
 type (
 	// Operation represents any single field of the Operation union type.
@@ -1845,6 +2148,10 @@
 
 	return nil
 }
+func (t *OperationTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Operation(OperationRead{})
+	return nil
+}
 
 type operationTargetFactory struct{}
 
@@ -1880,50 +2187,81 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Op")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue4 := m.Op
-		if unionValue4 == nil {
-			unionValue4 = OperationRead{}
+		var var4 bool
+		if field, ok := m.Op.(OperationRead); ok {
+
+			var5 := true
+			var6 := (field.Value.Key == "")
+			var5 = var5 && var6
+			var7 := (field.Value.LocalValue == (*Value)(nil))
+			var5 = var5 && var7
+			var8 := (field.Value.RemoteValue == (*Value)(nil))
+			var5 = var5 && var8
+			var9 := (field.Value.AncestorValue == (*Value)(nil))
+			var5 = var5 && var9
+			var4 = var5
 		}
-		if err := unionValue4.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue10 := m.Op
+			if unionValue10 == nil {
+				unionValue10 = OperationRead{}
+			}
+			if err := unionValue10.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("BatchIds")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("BatchIds")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget7, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.BatchIds))
-		if err != nil {
-			return err
+		var var13 bool
+		if len(m.BatchIds) == 0 {
+			var13 = true
 		}
-		for i, elem9 := range m.BatchIds {
-			elemTarget8, err := listTarget7.StartElem(i)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget14, err := fieldTarget12.StartList(tt.NonOptional().Field(1).Type, len(m.BatchIds))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget8.FromUint(uint64(elem9), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+			for i, elem16 := range m.BatchIds {
+				elemTarget15, err := listTarget14.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget15.FromUint(uint64(elem16), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget14.FinishElem(elemTarget15); err != nil {
+					return err
+				}
 			}
-			if err := listTarget7.FinishElem(elemTarget8); err != nil {
+			if err := fieldTarget12.FinishList(listTarget14); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget6.FinishList(listTarget7); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
@@ -1973,6 +2311,12 @@
 
 	return nil
 }
+func (t *RowInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RowInfo{
+		Op: OperationRead{},
+	}
+	return nil
+}
 
 // []uint64
 type __VDLTarget3_list struct {
@@ -2006,6 +2350,10 @@
 
 	return nil
 }
+func (t *__VDLTarget3_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []uint64(nil)
+	return nil
+}
 
 type (
 	// ConflictData represents any single field of the ConflictData union type.
@@ -2147,6 +2495,10 @@
 
 	return nil
 }
+func (t *ConflictDataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictData(ConflictDataBatch{})
+	return nil
+}
 
 type conflictDataTargetFactory struct{}
 
@@ -2182,33 +2534,53 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Data")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue4 := m.Data
-		if unionValue4 == nil {
-			unionValue4 = ConflictDataBatch{}
+		var var4 bool
+		if field, ok := m.Data.(ConflictDataBatch); ok {
+
+			var5 := (field.Value == BatchInfo{})
+			var4 = var5
 		}
-		if err := unionValue4.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue6 := m.Data
+			if unionValue6 == nil {
+				unionValue6 = ConflictDataBatch{}
+			}
+			if err := unionValue6.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Continued")
+	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Continued")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget6.FromBool(bool(m.Continued), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var9 := (m.Continued == false)
+		if var9 {
+			if err := fieldTarget8.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget8.FromBool(bool(m.Continued), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
 			return err
 		}
 	}
@@ -2258,6 +2630,12 @@
 
 	return nil
 }
+func (t *ConflictInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictInfo{
+		Data: ConflictDataBatch{},
+	}
+	return nil
+}
 
 // ValueSelection represents the value that was selected as the final resolution
 // for a conflict.
@@ -2343,11 +2721,15 @@
 	case "Other":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/syncbase.ValueSelection", src)
+		return fmt.Errorf("label %s not in enum ValueSelection", src)
 	}
 
 	return nil
 }
+func (t *ValueSelectionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ValueSelectionLocal
+	return nil
+}
 
 // ResolutionInfo contains the application’s reply to a conflict for a key,
 // providing the resolution value. The resolution may be over a group of keys
@@ -2378,63 +2760,88 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Selection")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Selection")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Selection.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Result")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		if m.Result == nil {
-			if err := fieldTarget7.FromNil(tt.NonOptional().Field(2).Type); err != nil {
+		var7 := (m.Selection == ValueSelectionLocal)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.Result.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
+
+			if err := m.Selection.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Continued")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Result")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromBool(bool(m.Continued), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.Result == (*Value)(nil))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Result.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Continued")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Continued == false)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromBool(bool(m.Continued), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -2491,6 +2898,10 @@
 
 	return nil
 }
+func (t *ResolutionInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ResolutionInfo{}
+	return nil
+}
 
 // CrRule provides a filter and the type of resolution to perform for a row
 // under conflict that passes the filter.
@@ -2517,56 +2928,87 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("CollectionName")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.CollectionName), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.CollectionName == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.CollectionName), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("KeyPrefix")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.KeyPrefix), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Type")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.Type), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Resolver")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("KeyPrefix")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Resolver.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
+		var7 := (m.KeyPrefix == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.KeyPrefix), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Type")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Type == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Type), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Resolver")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Resolver == ResolverTypeLastWins)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Resolver.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -2623,6 +3065,10 @@
 
 	return nil
 }
+func (t *CrRuleTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CrRule{}
+	return nil
+}
 
 // For a given row with a conflict, all rules are matched against the row.
 // If no rules match the row, we default to "LastWins". If multiple
@@ -2644,32 +3090,42 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rules")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget4, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.Rules))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.Rules) == 0 {
+			var4 = true
 		}
-		for i, elem6 := range m.Rules {
-			elemTarget5, err := listTarget4.StartElem(i)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.Rules))
 			if err != nil {
 				return err
 			}
+			for i, elem7 := range m.Rules {
+				elemTarget6, err := listTarget5.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem6.FillVDLTarget(elemTarget5, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+				if err := elem7.FillVDLTarget(elemTarget6, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
 				return err
 			}
-			if err := listTarget4.FinishElem(elemTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishList(listTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -2716,6 +3172,10 @@
 
 	return nil
 }
+func (t *CrPolicyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CrPolicy{}
+	return nil
+}
 
 // []CrRule
 type __VDLTarget4_list struct {
@@ -2749,6 +3209,10 @@
 
 	return nil
 }
+func (t *__VDLTarget4_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []CrRule(nil)
+	return nil
+}
 
 // SchemaMetadata maintains metadata related to the schema of a given database.
 // There is one SchemaMetadata per database.
@@ -2770,29 +3234,49 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Version")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Version), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Version == int32(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Version), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Policy")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Policy")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Policy.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := true
+		var var8 bool
+		if len(m.Policy.Rules) == 0 {
+			var8 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		var7 = var7 && var8
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Policy.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -2842,6 +3326,10 @@
 
 	return nil
 }
+func (t *SchemaMetadataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SchemaMetadata{}
+	return nil
+}
 
 // BlobRef is a reference to a blob.
 type BlobRef string
@@ -2876,6 +3364,10 @@
 
 	return nil
 }
+func (t *BlobRefTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlobRef("")
+	return nil
+}
 
 // BlobFetchState represents the state transitions of a blob fetch.
 type BlobFetchState int
@@ -2968,11 +3460,15 @@
 	case "Done":
 		*t.Value = 3
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/services/syncbase.BlobFetchState", src)
+		return fmt.Errorf("label %s not in enum BlobFetchState", src)
 	}
 
 	return nil
 }
+func (t *BlobFetchStateTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlobFetchStatePending
+	return nil
+}
 
 // BlobFetchStatus describes the progress of an asynchronous blob fetch.
 type BlobFetchStatus struct {
@@ -2991,41 +3487,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.State == BlobFetchStatePending)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Received")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Received")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Received), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Received == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Received), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Total")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Total")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromInt(int64(m.Total), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.Total == int64(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromInt(int64(m.Total), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -3080,6 +3599,10 @@
 
 	return nil
 }
+func (t *BlobFetchStatusTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BlobFetchStatus{}
+	return nil
+}
 
 // StoreChange is the new value for a watched entity.
 // TODO(rogulenko): Consider adding the Shell state.
@@ -3103,29 +3626,47 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Value")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget3.FromBytes([]byte(m.Value), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var var4 bool
+		if len(m.Value) == 0 {
+			var4 = true
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget3.FromBytes([]byte(m.Value), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("FromSync")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("FromSync")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromBool(bool(m.FromSync), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.FromSync == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.FromSync), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -3175,41 +3716,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroDevModeUpdateVClockOpts = DevModeUpdateVClockOpts{}
-	__VDLZeroBatchOptions            = BatchOptions{}
-	__VDLZeroPrefixPermissions       = PrefixPermissions{}
-	__VDLZeroKeyValue                = KeyValue{}
-	__VDLZeroCollectionRow           = CollectionRow{}
-	__VDLZeroSyncgroupSpec           = SyncgroupSpec{}
-	__VDLZeroSyncgroupMemberInfo     = SyncgroupMemberInfo{}
-	__VDLZeroResolverType            = ResolverTypeLastWins
-	__VDLZeroBatchSource             = BatchSourceLocal
-	__VDLZeroBatchInfo               = BatchInfo{}
-	__VDLZeroValueState              = ValueStateExists
-	__VDLZeroValue                   = Value{}
-	__VDLZeroRowOp                   = RowOp{}
-	__VDLZeroScanOp                  = ScanOp{}
-	__VDLZeroOperation               = Operation(OperationRead{})
-	__VDLZeroRowInfo                 = RowInfo{
-		Op: OperationRead{},
-	}
-	__VDLZeroConflictData = ConflictData(ConflictDataBatch{})
-	__VDLZeroConflictInfo = ConflictInfo{
-		Data: ConflictDataBatch{},
-	}
-	__VDLZeroValueSelection  = ValueSelectionLocal
-	__VDLZeroResolutionInfo  = ResolutionInfo{}
-	__VDLZeroCrRule          = CrRule{}
-	__VDLZeroCrPolicy        = CrPolicy{}
-	__VDLZeroSchemaMetadata  = SchemaMetadata{}
-	__VDLZeroBlobRef         = BlobRef("")
-	__VDLZeroBlobFetchState  = BlobFetchStatePending
-	__VDLZeroBlobFetchStatus = BlobFetchStatus{}
-	__VDLZeroStoreChange     = StoreChange{}
-)
+func (t *StoreChangeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = StoreChange{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -7081,6 +7591,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*DevModeUpdateVClockOpts)(nil))
diff --git a/services/tidyable/.api b/services/tidyable/.api
index 3cda79b..6f87286 100644
--- a/services/tidyable/.api
+++ b/services/tidyable/.api
@@ -2,8 +2,8 @@
 pkg tidyable, func TidyableServer(TidyableServerMethods) TidyableServerStub
 pkg tidyable, type TidyableClientMethods interface { TidyNow }
 pkg tidyable, type TidyableClientMethods interface, TidyNow(*context.T, ...rpc.CallOpt) error
-pkg tidyable, type TidyableClientStub interface { TidyNow }
 pkg tidyable, type TidyableClientStub interface, TidyNow(*context.T, ...rpc.CallOpt) error
+pkg tidyable, type TidyableClientStub interface, unexported methods
 pkg tidyable, type TidyableServerMethods interface { TidyNow }
 pkg tidyable, type TidyableServerMethods interface, TidyNow(*context.T, rpc.ServerCall) error
 pkg tidyable, type TidyableServerStub interface, Describe__() []rpc.InterfaceDesc
diff --git a/services/tidyable/tidyable.vdl.go b/services/tidyable/tidyable.vdl.go
index efdb05a..8ba05dc 100644
--- a/services/tidyable/tidyable.vdl.go
+++ b/services/tidyable/tidyable.vdl.go
@@ -145,6 +145,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/services/vtrace/.api b/services/vtrace/.api
index fcbb841..abb4dd5 100644
--- a/services/vtrace/.api
+++ b/services/vtrace/.api
@@ -7,14 +7,8 @@
 pkg vtrace, type StoreAllTracesClientCall interface, RecvStream() interface {  Advance() bool;; Value() vtrace.TraceRecord;; Err() error;}
 pkg vtrace, type StoreAllTracesClientStream interface { RecvStream }
 pkg vtrace, type StoreAllTracesClientStream interface, RecvStream() interface {  Advance() bool;; Value() vtrace.TraceRecord;; Err() error;}
-pkg vtrace, type StoreAllTracesServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg vtrace, type StoreAllTracesServerCall interface, GrantedBlessings() security.Blessings
-pkg vtrace, type StoreAllTracesServerCall interface, LocalEndpoint() naming.Endpoint
-pkg vtrace, type StoreAllTracesServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg vtrace, type StoreAllTracesServerCall interface, Security() security.Call
 pkg vtrace, type StoreAllTracesServerCall interface, SendStream() interface {  Send(item vtrace.TraceRecord) error;}
-pkg vtrace, type StoreAllTracesServerCall interface, Server() Server
-pkg vtrace, type StoreAllTracesServerCall interface, Suffix() string
+pkg vtrace, type StoreAllTracesServerCall interface, unexported methods
 pkg vtrace, type StoreAllTracesServerCallStub struct
 pkg vtrace, type StoreAllTracesServerCallStub struct, embedded rpc.StreamServerCall
 pkg vtrace, type StoreAllTracesServerStream interface { SendStream }
@@ -22,9 +16,9 @@
 pkg vtrace, type StoreClientMethods interface { AllTraces, Trace }
 pkg vtrace, type StoreClientMethods interface, AllTraces(*context.T, ...rpc.CallOpt) (StoreAllTracesClientCall, error)
 pkg vtrace, type StoreClientMethods interface, Trace(*context.T, uniqueid.Id, ...rpc.CallOpt) (vtrace.TraceRecord, error)
-pkg vtrace, type StoreClientStub interface { AllTraces, Trace }
 pkg vtrace, type StoreClientStub interface, AllTraces(*context.T, ...rpc.CallOpt) (StoreAllTracesClientCall, error)
 pkg vtrace, type StoreClientStub interface, Trace(*context.T, uniqueid.Id, ...rpc.CallOpt) (vtrace.TraceRecord, error)
+pkg vtrace, type StoreClientStub interface, unexported methods
 pkg vtrace, type StoreServerMethods interface { AllTraces, Trace }
 pkg vtrace, type StoreServerMethods interface, AllTraces(*context.T, StoreAllTracesServerCall) error
 pkg vtrace, type StoreServerMethods interface, Trace(*context.T, rpc.ServerCall, uniqueid.Id) (vtrace.TraceRecord, error)
diff --git a/services/vtrace/vtrace.vdl.go b/services/vtrace/vtrace.vdl.go
index 1b3c403..0da214a 100644
--- a/services/vtrace/vtrace.vdl.go
+++ b/services/vtrace/vtrace.vdl.go
@@ -292,6 +292,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/services/wakeup/.api b/services/wakeup/.api
index f5afef5..7166393 100644
--- a/services/wakeup/.api
+++ b/services/wakeup/.api
@@ -2,8 +2,8 @@
 pkg wakeup, func WakeUpServer(WakeUpServerMethods) WakeUpServerStub
 pkg wakeup, type WakeUpClientMethods interface { Register }
 pkg wakeup, type WakeUpClientMethods interface, Register(*context.T, string, ...rpc.CallOpt) (string, error)
-pkg wakeup, type WakeUpClientStub interface { Register }
 pkg wakeup, type WakeUpClientStub interface, Register(*context.T, string, ...rpc.CallOpt) (string, error)
+pkg wakeup, type WakeUpClientStub interface, unexported methods
 pkg wakeup, type WakeUpServerMethods interface { Register }
 pkg wakeup, type WakeUpServerMethods interface, Register(*context.T, rpc.ServerCall, string) (string, error)
 pkg wakeup, type WakeUpServerStub interface, Describe__() []rpc.InterfaceDesc
diff --git a/services/wakeup/wakeup.vdl.go b/services/wakeup/wakeup.vdl.go
index 82fa20d..5291493 100644
--- a/services/wakeup/wakeup.vdl.go
+++ b/services/wakeup/wakeup.vdl.go
@@ -148,6 +148,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/services/watch/.api b/services/watch/.api
index 9974ca6..f54a364 100644
--- a/services/watch/.api
+++ b/services/watch/.api
@@ -8,12 +8,14 @@
 pkg watch, method (*Change) MakeVDLTarget() vdl.Target
 pkg watch, method (*ChangeTarget) FinishField(vdl.Target, vdl.Target) error
 pkg watch, method (*ChangeTarget) FinishFields(vdl.FieldsTarget) error
+pkg watch, method (*ChangeTarget) FromZero(*vdl.Type) error
 pkg watch, method (*ChangeTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg watch, method (*ChangeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg watch, method (*GlobRequest) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg watch, method (*GlobRequest) MakeVDLTarget() vdl.Target
 pkg watch, method (*GlobRequestTarget) FinishField(vdl.Target, vdl.Target) error
 pkg watch, method (*GlobRequestTarget) FinishFields(vdl.FieldsTarget) error
+pkg watch, method (*GlobRequestTarget) FromZero(*vdl.Type) error
 pkg watch, method (*GlobRequestTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg watch, method (*GlobRequestTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg watch, method (*GlobWatcherWatchGlobServerCallStub) Init(rpc.StreamServerCall)
@@ -21,6 +23,7 @@
 pkg watch, method (*ResumeMarker) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg watch, method (*ResumeMarker) MakeVDLTarget() vdl.Target
 pkg watch, method (*ResumeMarkerTarget) FromBytes([]byte, *vdl.Type) error
+pkg watch, method (*ResumeMarkerTarget) FromZero(*vdl.Type) error
 pkg watch, type Change struct
 pkg watch, type Change struct, Continued bool
 pkg watch, type Change struct, Name string
@@ -40,8 +43,8 @@
 pkg watch, type GlobRequestTarget struct, embedded vdl.TargetBase
 pkg watch, type GlobWatcherClientMethods interface { WatchGlob }
 pkg watch, type GlobWatcherClientMethods interface, WatchGlob(*context.T, GlobRequest, ...rpc.CallOpt) (GlobWatcherWatchGlobClientCall, error)
-pkg watch, type GlobWatcherClientStub interface { WatchGlob }
 pkg watch, type GlobWatcherClientStub interface, WatchGlob(*context.T, GlobRequest, ...rpc.CallOpt) (GlobWatcherWatchGlobClientCall, error)
+pkg watch, type GlobWatcherClientStub interface, unexported methods
 pkg watch, type GlobWatcherServerMethods interface { WatchGlob }
 pkg watch, type GlobWatcherServerMethods interface, WatchGlob(*context.T, GlobWatcherWatchGlobServerCall, GlobRequest) error
 pkg watch, type GlobWatcherServerStub interface { Describe__, WatchGlob }
@@ -54,14 +57,8 @@
 pkg watch, type GlobWatcherWatchGlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() Change;; Err() error;}
 pkg watch, type GlobWatcherWatchGlobClientStream interface { RecvStream }
 pkg watch, type GlobWatcherWatchGlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() Change;; Err() error;}
-pkg watch, type GlobWatcherWatchGlobServerCall interface { GrantedBlessings, LocalEndpoint, RemoteEndpoint, Security, SendStream, Server, Suffix }
-pkg watch, type GlobWatcherWatchGlobServerCall interface, GrantedBlessings() security.Blessings
-pkg watch, type GlobWatcherWatchGlobServerCall interface, LocalEndpoint() naming.Endpoint
-pkg watch, type GlobWatcherWatchGlobServerCall interface, RemoteEndpoint() naming.Endpoint
-pkg watch, type GlobWatcherWatchGlobServerCall interface, Security() security.Call
 pkg watch, type GlobWatcherWatchGlobServerCall interface, SendStream() interface {  Send(item Change) error;}
-pkg watch, type GlobWatcherWatchGlobServerCall interface, Server() Server
-pkg watch, type GlobWatcherWatchGlobServerCall interface, Suffix() string
+pkg watch, type GlobWatcherWatchGlobServerCall interface, unexported methods
 pkg watch, type GlobWatcherWatchGlobServerCallStub struct
 pkg watch, type GlobWatcherWatchGlobServerCallStub struct, embedded rpc.StreamServerCall
 pkg watch, type GlobWatcherWatchGlobServerStream interface { SendStream }
@@ -70,5 +67,5 @@
 pkg watch, type ResumeMarkerTarget struct
 pkg watch, type ResumeMarkerTarget struct, Value *ResumeMarker
 pkg watch, type ResumeMarkerTarget struct, embedded vdl.TargetBase
-pkg watch, var ErrUnknownResumeMarker verror.IDAction
+pkg watch, var ErrUnknownResumeMarker unknown-type
 pkg watch, var GlobWatcherDesc rpc.InterfaceDesc
diff --git a/services/watch/watch.vdl.go b/services/watch/watch.vdl.go
index 47f9034..73a71d5 100644
--- a/services/watch/watch.vdl.go
+++ b/services/watch/watch.vdl.go
@@ -194,6 +194,10 @@
 
 	return nil
 }
+func (t *ResumeMarkerTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ResumeMarker(nil)
+	return nil
+}
 
 // GlobRequest specifies which entities should be watched and, optionally,
 // how to resume from a previous Watch call.
@@ -216,29 +220,47 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Pattern")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Pattern), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Pattern == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Pattern), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("ResumeMarker")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("ResumeMarker")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.ResumeMarker.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.ResumeMarker) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.ResumeMarker.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -288,6 +310,10 @@
 
 	return nil
 }
+func (t *GlobRequestTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GlobRequest{}
+	return nil
+}
 
 // Change is the new value for a watched entity.
 type Change struct {
@@ -320,72 +346,114 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("State")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.State), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Value")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Value == nil {
-			if err := fieldTarget7.FromNil(tt.NonOptional().Field(2).Type); err != nil {
+		var7 := (m.State == int32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.Value.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
+			if err := fieldTarget6.FromInt(int64(m.State), tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ResumeMarker")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Value")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.ResumeMarker.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var10 := (m.Value == vom.RawBytesOf(vdl.ZeroValue(vdl.AnyType)))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if m.Value == nil {
+				if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+					return err
+				}
+			} else {
+				if err := m.Value.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+					return err
+				}
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("Continued")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("ResumeMarker")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget11.FromBool(bool(m.Continued), tt.NonOptional().Field(4).Type); err != nil {
+
+		var var13 bool
+		if len(m.ResumeMarker) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.ResumeMarker.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Continued")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var16 := (m.Continued == false)
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromBool(bool(m.Continued), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
@@ -449,13 +517,12 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroResumeMarker = ResumeMarker(nil)
-	__VDLZeroGlobRequest  = GlobRequest{}
-	__VDLZeroChange       = Change{}
-)
+func (t *ChangeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Change{
+		Value: vom.RawBytesOf(vdl.ZeroValue(vdl.AnyType)),
+	}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -731,6 +798,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*ResumeMarker)(nil))
diff --git a/syncbase/.api b/syncbase/.api
index db5cadb..a824ebc 100644
--- a/syncbase/.api
+++ b/syncbase/.api
@@ -17,20 +17,24 @@
 pkg syncbase, method (*ConflictRowSet) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ConflictRowSetTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ConflictRowSetTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ConflictRowSetTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ConflictRowSetTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ConflictRowSetTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ConflictRowTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ConflictRowTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ConflictRowTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ConflictRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ConflictRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ConflictScanSet) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ConflictScanSet) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ConflictScanSetTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ConflictScanSetTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ConflictScanSetTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ConflictScanSetTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ConflictScanSetTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ConflictTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ConflictTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ConflictTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ConflictTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ConflictTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*InvalidScanStream) Advance() bool
@@ -42,12 +46,14 @@
 pkg syncbase, method (*Resolution) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ResolutionTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ResolutionTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ResolutionTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ResolutionTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ResolutionTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*ResolvedRow) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg syncbase, method (*ResolvedRow) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ResolvedRowTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ResolvedRowTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ResolvedRowTarget) FromZero(*vdl.Type) error
 pkg syncbase, method (*ResolvedRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg syncbase, method (*ResolvedRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg syncbase, method (*Value) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -55,6 +61,7 @@
 pkg syncbase, method (*Value) MakeVDLTarget() vdl.Target
 pkg syncbase, method (*ValueTarget) FinishField(vdl.Target, vdl.Target) error
 pkg syncbase, method (*ValueTarget) FinishFields(vdl.FieldsTarget) error
+pkg syncbase, method (*ValueTarget) FromZero(*vdl.Type) error
 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
diff --git a/syncbase/nosql/.api b/syncbase/nosql/.api
new file mode 100644
index 0000000..e420c51
--- /dev/null
+++ b/syncbase/nosql/.api
@@ -0,0 +1,263 @@
+pkg nosql, const DeleteChange ChangeType
+pkg nosql, const PutChange ChangeType
+pkg nosql, func NewDatabase(string, string, *Schema) *database
+pkg nosql, func NewValue(*context.T, interface{}) (*Value, error)
+pkg nosql, func Prefix(string) PrefixRange
+pkg nosql, func Range(string, string) RowRange
+pkg nosql, func RunInBatch(*context.T, Database, wire.BatchOptions, func(BatchDatabase) error) error
+pkg nosql, func SingleRow(string) RowRange
+pkg nosql, func ToWatchChange(watch.Change) WatchChange
+pkg nosql, func UUID() string
+pkg nosql, method (*Conflict) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*Conflict) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ConflictRow) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ConflictRow) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ConflictRowSet) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ConflictRowSet) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ConflictRowSetTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ConflictRowSetTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ConflictRowSetTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictRowSetTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ConflictRowSetTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ConflictRowTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ConflictRowTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ConflictRowTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ConflictRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ConflictScanSet) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ConflictScanSet) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ConflictScanSetTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ConflictScanSetTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ConflictScanSetTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictScanSetTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ConflictScanSetTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ConflictTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ConflictTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ConflictTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ConflictTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ConflictTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*InvalidScanStream) Advance() bool
+pkg nosql, method (*InvalidScanStream) Cancel()
+pkg nosql, method (*InvalidScanStream) Err() error
+pkg nosql, method (*InvalidScanStream) Key() string
+pkg nosql, method (*InvalidScanStream) Value(interface{}) error
+pkg nosql, method (*Resolution) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*Resolution) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ResolutionTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ResolutionTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ResolutionTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ResolutionTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ResolutionTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*ResolvedRow) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*ResolvedRow) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ResolvedRowTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ResolvedRowTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ResolvedRowTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ResolvedRowTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ResolvedRowTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*Value) FillVDLTarget(vdl.Target, *vdl.Type) error
+pkg nosql, method (*Value) Get(interface{}) error
+pkg nosql, method (*Value) MakeVDLTarget() vdl.Target
+pkg nosql, method (*ValueTarget) FinishField(vdl.Target, vdl.Target) error
+pkg nosql, method (*ValueTarget) FinishFields(vdl.FieldsTarget) error
+pkg nosql, method (*ValueTarget) FromZero(*vdl.Type) error
+pkg nosql, method (*ValueTarget) StartField(string) (vdl.Target, vdl.Target, error)
+pkg nosql, method (*ValueTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
+pkg nosql, method (*WatchChange) Value(interface{}) error
+pkg nosql, type BatchDatabase interface { Abort, Close, Commit, Exec, FullName, GetResumeMarker, ListTables, Name, Table }
+pkg nosql, type BatchDatabase interface, Abort(*context.T) error
+pkg nosql, type BatchDatabase interface, Close()
+pkg nosql, type BatchDatabase interface, Commit(*context.T) error
+pkg nosql, type BatchDatabase interface, Exec(*context.T, string, ...interface{}) ([]string, ResultStream, error)
+pkg nosql, type BatchDatabase interface, FullName() string
+pkg nosql, type BatchDatabase interface, GetResumeMarker(*context.T) (watch.ResumeMarker, error)
+pkg nosql, type BatchDatabase interface, ListTables(*context.T) ([]string, error)
+pkg nosql, type BatchDatabase interface, Name() string
+pkg nosql, type BatchDatabase interface, Table(string) Table
+pkg nosql, type Blob interface { Commit, Delete, Fetch, Get, Keep, Pin, Put, Ref, Size, Unpin }
+pkg nosql, type Blob interface, Commit(*context.T) error
+pkg nosql, type Blob interface, Delete(*context.T) error
+pkg nosql, type Blob interface, Fetch(*context.T, uint64) (BlobStatus, error)
+pkg nosql, type Blob interface, Get(*context.T, int64) (BlobReader, error)
+pkg nosql, type Blob interface, Keep(*context.T, uint64) error
+pkg nosql, type Blob interface, Pin(*context.T) error
+pkg nosql, type Blob interface, Put(*context.T) (BlobWriter, error)
+pkg nosql, type Blob interface, Ref() wire.BlobRef
+pkg nosql, type Blob interface, Size(*context.T) (int64, error)
+pkg nosql, type Blob interface, Unpin(*context.T) error
+pkg nosql, type BlobReader interface { Advance, Cancel, Err, Value }
+pkg nosql, type BlobReader interface, Advance() bool
+pkg nosql, type BlobReader interface, Cancel()
+pkg nosql, type BlobReader interface, Err() error
+pkg nosql, type BlobReader interface, Value() []byte
+pkg nosql, type BlobStatus interface { Advance, Cancel, Err, Value }
+pkg nosql, type BlobStatus interface, Advance() bool
+pkg nosql, type BlobStatus interface, Cancel()
+pkg nosql, type BlobStatus interface, Err() error
+pkg nosql, type BlobStatus interface, Value() wire.BlobFetchStatus
+pkg nosql, type BlobWriter interface { Close, Send }
+pkg nosql, type BlobWriter interface, Close() error
+pkg nosql, type BlobWriter interface, Send([]byte) error
+pkg nosql, type ChangeType uint32
+pkg nosql, type Conflict struct
+pkg nosql, type Conflict struct, Batches map[uint64]nosql.BatchInfo
+pkg nosql, type Conflict struct, ReadSet *ConflictRowSet
+pkg nosql, type Conflict struct, ScanSet *ConflictScanSet
+pkg nosql, type Conflict struct, WriteSet *ConflictRowSet
+pkg nosql, type ConflictResolver interface { OnConflict }
+pkg nosql, type ConflictResolver interface, OnConflict(*context.T, *Conflict) Resolution
+pkg nosql, type ConflictRow struct
+pkg nosql, type ConflictRow struct, AncestorValue Value
+pkg nosql, type ConflictRow struct, BatchIds []uint64
+pkg nosql, type ConflictRow struct, Key string
+pkg nosql, type ConflictRow struct, LocalValue Value
+pkg nosql, type ConflictRow struct, RemoteValue Value
+pkg nosql, type ConflictRowSet struct
+pkg nosql, type ConflictRowSet struct, ByBatch map[uint64][]ConflictRow
+pkg nosql, type ConflictRowSet struct, ByKey map[string]ConflictRow
+pkg nosql, type ConflictRowSetTarget struct
+pkg nosql, type ConflictRowSetTarget struct, Value *ConflictRowSet
+pkg nosql, type ConflictRowSetTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ConflictRowSetTarget struct, embedded vdl.TargetBase
+pkg nosql, type ConflictRowTarget struct
+pkg nosql, type ConflictRowTarget struct, Value *ConflictRow
+pkg nosql, type ConflictRowTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ConflictRowTarget struct, embedded vdl.TargetBase
+pkg nosql, type ConflictScanSet struct
+pkg nosql, type ConflictScanSet struct, ByBatch map[uint64][]nosql.ScanOp
+pkg nosql, type ConflictScanSetTarget struct
+pkg nosql, type ConflictScanSetTarget struct, Value *ConflictScanSet
+pkg nosql, type ConflictScanSetTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ConflictScanSetTarget struct, embedded vdl.TargetBase
+pkg nosql, type ConflictTarget struct
+pkg nosql, type ConflictTarget struct, Value *Conflict
+pkg nosql, type ConflictTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ConflictTarget struct, embedded vdl.TargetBase
+pkg nosql, 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 nosql, type Database interface, BeginBatch(*context.T, wire.BatchOptions) (BatchDatabase, error)
+pkg nosql, type Database interface, Blob(wire.BlobRef) Blob
+pkg nosql, type Database interface, Close()
+pkg nosql, type Database interface, Create(*context.T, access.Permissions) error
+pkg nosql, type Database interface, CreateBlob(*context.T) (Blob, error)
+pkg nosql, type Database interface, Destroy(*context.T) error
+pkg nosql, type Database interface, EnforceSchema(*context.T) error
+pkg nosql, type Database interface, Exec(*context.T, string, ...interface{}) ([]string, ResultStream, error)
+pkg nosql, type Database interface, Exists(*context.T) (bool, error)
+pkg nosql, type Database interface, FullName() string
+pkg nosql, type Database interface, GetPermissions(*context.T) (access.Permissions, string, error)
+pkg nosql, type Database interface, GetResumeMarker(*context.T) (watch.ResumeMarker, error)
+pkg nosql, type Database interface, GetSyncgroupNames(*context.T) ([]string, error)
+pkg nosql, type Database interface, ListTables(*context.T) ([]string, error)
+pkg nosql, type Database interface, Name() string
+pkg nosql, type Database interface, PauseSync(*context.T) error
+pkg nosql, type Database interface, ResumeSync(*context.T) error
+pkg nosql, type Database interface, SetPermissions(*context.T, access.Permissions, string) error
+pkg nosql, type Database interface, Syncgroup(string) Syncgroup
+pkg nosql, type Database interface, Table(string) Table
+pkg nosql, type Database interface, Watch(*context.T, string, string, watch.ResumeMarker) (WatchStream, error)
+pkg nosql, type DatabaseHandle interface { Close, Exec, FullName, GetResumeMarker, ListTables, Name, Table }
+pkg nosql, type DatabaseHandle interface, Close()
+pkg nosql, type DatabaseHandle interface, Exec(*context.T, string, ...interface{}) ([]string, ResultStream, error)
+pkg nosql, type DatabaseHandle interface, FullName() string
+pkg nosql, type DatabaseHandle interface, GetResumeMarker(*context.T) (watch.ResumeMarker, error)
+pkg nosql, type DatabaseHandle interface, ListTables(*context.T) ([]string, error)
+pkg nosql, type DatabaseHandle interface, Name() string
+pkg nosql, type DatabaseHandle interface, Table(string) Table
+pkg nosql, type InvalidScanStream struct
+pkg nosql, type InvalidScanStream struct, Error error
+pkg nosql, type PrefixPermissions struct
+pkg nosql, type PrefixPermissions struct, Perms access.Permissions
+pkg nosql, type PrefixPermissions struct, Prefix PrefixRange
+pkg nosql, type PrefixRange interface { Limit, Prefix, Start }
+pkg nosql, type PrefixRange interface, Limit() string
+pkg nosql, type PrefixRange interface, Prefix() string
+pkg nosql, type PrefixRange interface, Start() string
+pkg nosql, type Resolution struct
+pkg nosql, type Resolution struct, ResultSet map[string]ResolvedRow
+pkg nosql, type ResolutionTarget struct
+pkg nosql, type ResolutionTarget struct, Value *Resolution
+pkg nosql, type ResolutionTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ResolutionTarget struct, embedded vdl.TargetBase
+pkg nosql, type ResolvedRow struct
+pkg nosql, type ResolvedRow struct, Key string
+pkg nosql, type ResolvedRow struct, Result *Value
+pkg nosql, type ResolvedRowTarget struct
+pkg nosql, type ResolvedRowTarget struct, Value *ResolvedRow
+pkg nosql, type ResolvedRowTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ResolvedRowTarget struct, embedded vdl.TargetBase
+pkg nosql, type ResultStream interface { Advance, Cancel, Err, Result }
+pkg nosql, type ResultStream interface, Advance() bool
+pkg nosql, type ResultStream interface, Cancel()
+pkg nosql, type ResultStream interface, Err() error
+pkg nosql, type ResultStream interface, Result() []*vom.RawBytes
+pkg nosql, type Row interface { Delete, Exists, FullName, Get, Key, Put }
+pkg nosql, type Row interface, Delete(*context.T) error
+pkg nosql, type Row interface, Exists(*context.T) (bool, error)
+pkg nosql, type Row interface, FullName() string
+pkg nosql, type Row interface, Get(*context.T, interface{}) error
+pkg nosql, type Row interface, Key() string
+pkg nosql, type Row interface, Put(*context.T, interface{}) error
+pkg nosql, type RowRange interface { Limit, Start }
+pkg nosql, type RowRange interface, Limit() string
+pkg nosql, type RowRange interface, Start() string
+pkg nosql, type ScanStream interface { Advance, Cancel, Err, Key, Value }
+pkg nosql, type ScanStream interface, Advance() bool
+pkg nosql, type ScanStream interface, Cancel()
+pkg nosql, type ScanStream interface, Err() error
+pkg nosql, type ScanStream interface, Key() string
+pkg nosql, type ScanStream interface, Value(interface{}) error
+pkg nosql, type Schema struct
+pkg nosql, type Schema struct, Metadata wire.SchemaMetadata
+pkg nosql, type Schema struct, Resolver ConflictResolver
+pkg nosql, type Stream interface { Advance, Cancel, Err }
+pkg nosql, type Stream interface, Advance() bool
+pkg nosql, type Stream interface, Cancel()
+pkg nosql, type Stream interface, Err() error
+pkg nosql, type Syncgroup interface { Create, Destroy, Eject, GetMembers, GetSpec, Join, Leave, SetSpec }
+pkg nosql, type Syncgroup interface, Create(*context.T, wire.SyncgroupSpec, wire.SyncgroupMemberInfo) error
+pkg nosql, type Syncgroup interface, Destroy(*context.T) error
+pkg nosql, type Syncgroup interface, Eject(*context.T, string) error
+pkg nosql, type Syncgroup interface, GetMembers(*context.T) (map[string]wire.SyncgroupMemberInfo, error)
+pkg nosql, type Syncgroup interface, GetSpec(*context.T) (wire.SyncgroupSpec, string, error)
+pkg nosql, type Syncgroup interface, Join(*context.T, wire.SyncgroupMemberInfo) (wire.SyncgroupSpec, error)
+pkg nosql, type Syncgroup interface, Leave(*context.T) error
+pkg nosql, type Syncgroup interface, SetSpec(*context.T, wire.SyncgroupSpec, string) error
+pkg nosql, type Table interface { Create, Delete, DeletePrefixPermissions, DeleteRange, Destroy, Exists, FullName, Get, GetPermissions, GetPrefixPermissions, Name, Put, Row, Scan, SetPermissions, SetPrefixPermissions }
+pkg nosql, type Table interface, Create(*context.T, access.Permissions) error
+pkg nosql, type Table interface, Delete(*context.T, string) error
+pkg nosql, type Table interface, DeletePrefixPermissions(*context.T, PrefixRange) error
+pkg nosql, type Table interface, DeleteRange(*context.T, RowRange) error
+pkg nosql, type Table interface, Destroy(*context.T) error
+pkg nosql, type Table interface, Exists(*context.T) (bool, error)
+pkg nosql, type Table interface, FullName() string
+pkg nosql, type Table interface, Get(*context.T, string, interface{}) error
+pkg nosql, type Table interface, GetPermissions(*context.T) (access.Permissions, error)
+pkg nosql, type Table interface, GetPrefixPermissions(*context.T, string) ([]PrefixPermissions, error)
+pkg nosql, type Table interface, Name() string
+pkg nosql, type Table interface, Put(*context.T, string, interface{}) error
+pkg nosql, type Table interface, Row(string) Row
+pkg nosql, type Table interface, Scan(*context.T, RowRange) ScanStream
+pkg nosql, type Table interface, SetPermissions(*context.T, access.Permissions) error
+pkg nosql, type Table interface, SetPrefixPermissions(*context.T, PrefixRange, access.Permissions) error
+pkg nosql, type Value struct
+pkg nosql, type Value struct, Selection nosql.ValueSelection
+pkg nosql, type Value struct, State nosql.ValueState
+pkg nosql, type Value struct, Val []byte
+pkg nosql, type Value struct, WriteTs time.Time
+pkg nosql, type ValueTarget struct
+pkg nosql, type ValueTarget struct, Value *Value
+pkg nosql, type ValueTarget struct, embedded vdl.FieldsTargetBase
+pkg nosql, type ValueTarget struct, embedded vdl.TargetBase
+pkg nosql, type WatchChange struct
+pkg nosql, type WatchChange struct, ChangeType ChangeType
+pkg nosql, type WatchChange struct, Continued bool
+pkg nosql, type WatchChange struct, FromSync bool
+pkg nosql, type WatchChange struct, ResumeMarker watch.ResumeMarker
+pkg nosql, type WatchChange struct, Row string
+pkg nosql, type WatchChange struct, Table string
+pkg nosql, type WatchChange struct, ValueBytes []byte
+pkg nosql, type WatchStream interface { Advance, Cancel, Change, Err }
+pkg nosql, type WatchStream interface, Advance() bool
+pkg nosql, type WatchStream interface, Cancel()
+pkg nosql, type WatchStream interface, Change() WatchChange
+pkg nosql, type WatchStream interface, Err() error
diff --git a/syncbase/syncbase.vdl.go b/syncbase/syncbase.vdl.go
index 7a994f9..8b5899b 100644
--- a/syncbase/syncbase.vdl.go
+++ b/syncbase/syncbase.vdl.go
@@ -46,64 +46,98 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.State == syncbase.ValueStateExists)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.State.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Val")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Val")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.Val), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Val) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Val), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	var wireValue6 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue6, m.WriteTs); err != nil {
+	var wireValue8 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue8, m.WriteTs); err != nil {
 		return err
 	}
 
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("WriteTs")
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("WriteTs")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue6.FillVDLTarget(fieldTarget8, tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
-			return err
-		}
-	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Selection")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		var11 := (wireValue8 == time_2.Time{})
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
 
-		if err := m.Selection.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+			if err := wireValue8.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
 			return err
 		}
 	}
+	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Selection")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var14 := (m.Selection == syncbase.ValueSelectionLocal)
+		if var14 {
+			if err := fieldTarget13.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Selection.FillVDLTarget(fieldTarget13, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -160,6 +194,10 @@
 
 	return nil
 }
+func (t *ValueTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Value{}
+	return nil
+}
 
 // ConflictRow represents a row under conflict.
 // Key is the key for the row.
@@ -187,84 +225,174 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("LocalValue")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("LocalValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.LocalValue.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := true
+		var8 := (m.LocalValue.State == syncbase.ValueStateExists)
+		var7 = var7 && var8
+		var var9 bool
+		if len(m.LocalValue.Val) == 0 {
+			var9 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		var7 = var7 && var9
+		var wireValue10 time_2.Time
+		if err := time_2.TimeFromNative(&wireValue10, m.LocalValue.WriteTs); err != nil {
+			return fmt.Errorf("error converting m.LocalValue.WriteTs to wiretype")
+		}
+
+		var11 := (wireValue10 == time_2.Time{})
+		var7 = var7 && var11
+		var12 := (m.LocalValue.Selection == syncbase.ValueSelectionLocal)
+		var7 = var7 && var12
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.LocalValue.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("RemoteValue")
+	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("RemoteValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.RemoteValue.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var15 := true
+		var16 := (m.RemoteValue.State == syncbase.ValueStateExists)
+		var15 = var15 && var16
+		var var17 bool
+		if len(m.RemoteValue.Val) == 0 {
+			var17 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		var15 = var15 && var17
+		var wireValue18 time_2.Time
+		if err := time_2.TimeFromNative(&wireValue18, m.RemoteValue.WriteTs); err != nil {
+			return fmt.Errorf("error converting m.RemoteValue.WriteTs to wiretype")
+		}
+
+		var19 := (wireValue18 == time_2.Time{})
+		var15 = var15 && var19
+		var20 := (m.RemoteValue.Selection == syncbase.ValueSelectionLocal)
+		var15 = var15 && var20
+		if var15 {
+			if err := fieldTarget14.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.RemoteValue.FillVDLTarget(fieldTarget14, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
 			return err
 		}
 	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("AncestorValue")
+	keyTarget21, fieldTarget22, err := fieldsTarget1.StartField("AncestorValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.AncestorValue.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var23 := true
+		var24 := (m.AncestorValue.State == syncbase.ValueStateExists)
+		var23 = var23 && var24
+		var var25 bool
+		if len(m.AncestorValue.Val) == 0 {
+			var25 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+		var23 = var23 && var25
+		var wireValue26 time_2.Time
+		if err := time_2.TimeFromNative(&wireValue26, m.AncestorValue.WriteTs); err != nil {
+			return fmt.Errorf("error converting m.AncestorValue.WriteTs to wiretype")
+		}
+
+		var27 := (wireValue26 == time_2.Time{})
+		var23 = var23 && var27
+		var28 := (m.AncestorValue.Selection == syncbase.ValueSelectionLocal)
+		var23 = var23 && var28
+		if var23 {
+			if err := fieldTarget22.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.AncestorValue.FillVDLTarget(fieldTarget22, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget21, fieldTarget22); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("BatchIds")
+	keyTarget29, fieldTarget30, err := fieldsTarget1.StartField("BatchIds")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget12, err := fieldTarget11.StartList(tt.NonOptional().Field(4).Type, len(m.BatchIds))
-		if err != nil {
-			return err
+		var var31 bool
+		if len(m.BatchIds) == 0 {
+			var31 = true
 		}
-		for i, elem14 := range m.BatchIds {
-			elemTarget13, err := listTarget12.StartElem(i)
+		if var31 {
+			if err := fieldTarget30.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget32, err := fieldTarget30.StartList(tt.NonOptional().Field(4).Type, len(m.BatchIds))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget13.FromUint(uint64(elem14), tt.NonOptional().Field(4).Type.Elem()); err != nil {
-				return err
+			for i, elem34 := range m.BatchIds {
+				elemTarget33, err := listTarget32.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget33.FromUint(uint64(elem34), tt.NonOptional().Field(4).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget32.FinishElem(elemTarget33); err != nil {
+					return err
+				}
 			}
-			if err := listTarget12.FinishElem(elemTarget13); err != nil {
+			if err := fieldTarget30.FinishList(listTarget32); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget11.FinishList(listTarget12); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget29, fieldTarget30); err != nil {
 			return err
 		}
 	}
@@ -329,6 +457,10 @@
 
 	return nil
 }
+func (t *ConflictRowTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictRow{}
+	return nil
+}
 
 // []uint64
 type __VDLTarget1_list struct {
@@ -362,6 +494,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []uint64(nil)
+	return nil
+}
 
 // ConflictRowSet contains a set of rows under conflict. It provides two different
 // ways to access the same set.
@@ -383,95 +519,116 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("ByKey")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.ByKey))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.ByKey) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.ByKey {
-			keyTarget5, err := mapTarget4.StartKey()
-			if err != nil {
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
-			if err := keyTarget5.FromString(string(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			if err := value8.FillVDLTarget(valueTarget7, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.ByKey))
+			if err != nil {
 				return err
 			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
+			for key7, value9 := range m.ByKey {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromString(string(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
+				if err != nil {
+					return err
+				}
+
+				if err := value9.FillVDLTarget(valueTarget8, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
-		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("ByBatch")
+	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("ByBatch")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget11, err := fieldTarget10.StartMap(tt.NonOptional().Field(1).Type, len(m.ByBatch))
-		if err != nil {
-			return err
+		var var12 bool
+		if len(m.ByBatch) == 0 {
+			var12 = true
 		}
-		for key13, value15 := range m.ByBatch {
-			keyTarget12, err := mapTarget11.StartKey()
-			if err != nil {
+		if var12 {
+			if err := fieldTarget11.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
-			if err := keyTarget12.FromUint(uint64(key13), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget14, err := mapTarget11.FinishKeyStartField(keyTarget12)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			listTarget16, err := valueTarget14.StartList(tt.NonOptional().Field(1).Type.Elem(), len(value15))
+			mapTarget13, err := fieldTarget11.StartMap(tt.NonOptional().Field(1).Type, len(m.ByBatch))
 			if err != nil {
 				return err
 			}
-			for i, elem18 := range value15 {
-				elemTarget17, err := listTarget16.StartElem(i)
+			for key15, value17 := range m.ByBatch {
+				keyTarget14, err := mapTarget13.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget14.FromUint(uint64(key15), tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget16, err := mapTarget13.FinishKeyStartField(keyTarget14)
 				if err != nil {
 					return err
 				}
 
-				if err := elem18.FillVDLTarget(elemTarget17, tt.NonOptional().Field(1).Type.Elem().Elem()); err != nil {
+				listTarget18, err := valueTarget16.StartList(tt.NonOptional().Field(1).Type.Elem(), len(value17))
+				if err != nil {
 					return err
 				}
-				if err := listTarget16.FinishElem(elemTarget17); err != nil {
+				for i, elem20 := range value17 {
+					elemTarget19, err := listTarget18.StartElem(i)
+					if err != nil {
+						return err
+					}
+
+					if err := elem20.FillVDLTarget(elemTarget19, tt.NonOptional().Field(1).Type.Elem().Elem()); err != nil {
+						return err
+					}
+					if err := listTarget18.FinishElem(elemTarget19); err != nil {
+						return err
+					}
+				}
+				if err := valueTarget16.FinishList(listTarget18); err != nil {
+					return err
+				}
+				if err := mapTarget13.FinishField(keyTarget14, valueTarget16); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget14.FinishList(listTarget16); err != nil {
-				return err
-			}
-			if err := mapTarget11.FinishField(keyTarget12, valueTarget14); err != nil {
+			if err := fieldTarget11.FinishMap(mapTarget13); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget10.FinishMap(mapTarget11); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
 			return err
 		}
 	}
@@ -521,6 +678,10 @@
 
 	return nil
 }
+func (t *ConflictRowSetTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictRowSet{}
+	return nil
+}
 
 // map[string]ConflictRow
 type __VDLTarget2_map struct {
@@ -564,6 +725,10 @@
 
 	return nil
 }
+func (t *__VDLTarget2_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]ConflictRow(nil)
+	return nil
+}
 
 // map[uint64][]ConflictRow
 type __VDLTarget3_map struct {
@@ -607,6 +772,10 @@
 
 	return nil
 }
+func (t *__VDLTarget3_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint64][]ConflictRow(nil)
+	return nil
+}
 
 // []ConflictRow
 type __VDLTarget4_list struct {
@@ -640,6 +809,10 @@
 
 	return nil
 }
+func (t *__VDLTarget4_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []ConflictRow(nil)
+	return nil
+}
 
 // ConflictScanSet contains a set of scans under conflict.
 // ByBatch is a map of array of ScanOps keyed by batch id.
@@ -657,56 +830,66 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("ByBatch")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.ByBatch))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.ByBatch) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.ByBatch {
-			keyTarget5, err := mapTarget4.StartKey()
-			if err != nil {
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
-			if err := keyTarget5.FromUint(uint64(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			listTarget9, err := valueTarget7.StartList(tt.NonOptional().Field(0).Type.Elem(), len(value8))
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.ByBatch))
 			if err != nil {
 				return err
 			}
-			for i, elem11 := range value8 {
-				elemTarget10, err := listTarget9.StartElem(i)
+			for key7, value9 := range m.ByBatch {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromUint(uint64(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
 				if err != nil {
 					return err
 				}
 
-				if err := elem11.FillVDLTarget(elemTarget10, tt.NonOptional().Field(0).Type.Elem().Elem()); err != nil {
+				listTarget10, err := valueTarget8.StartList(tt.NonOptional().Field(0).Type.Elem(), len(value9))
+				if err != nil {
 					return err
 				}
-				if err := listTarget9.FinishElem(elemTarget10); err != nil {
+				for i, elem12 := range value9 {
+					elemTarget11, err := listTarget10.StartElem(i)
+					if err != nil {
+						return err
+					}
+
+					if err := elem12.FillVDLTarget(elemTarget11, tt.NonOptional().Field(0).Type.Elem().Elem()); err != nil {
+						return err
+					}
+					if err := listTarget10.FinishElem(elemTarget11); err != nil {
+						return err
+					}
+				}
+				if err := valueTarget8.FinishList(listTarget10); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget7.FinishList(listTarget9); err != nil {
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -753,6 +936,10 @@
 
 	return nil
 }
+func (t *ConflictScanSetTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConflictScanSet{}
+	return nil
+}
 
 // map[uint64][]syncbase.ScanOp
 type __VDLTarget5_map struct {
@@ -796,6 +983,10 @@
 
 	return nil
 }
+func (t *__VDLTarget5_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint64][]syncbase.ScanOp(nil)
+	return nil
+}
 
 // []syncbase.ScanOp
 type __VDLTarget6_list struct {
@@ -829,6 +1020,10 @@
 
 	return nil
 }
+func (t *__VDLTarget6_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []syncbase.ScanOp(nil)
+	return nil
+}
 
 // Conflict contains information to fully specify a conflict. Since syncbase
 // supports batches there can be one or more rows within the batch that has a
@@ -861,18 +1056,19 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("ReadSet")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.ReadSet == nil {
-			if err := fieldTarget3.FromNil(tt.NonOptional().Field(0).Type); err != nil {
+		var4 := (m.ReadSet == (*ConflictRowSet)(nil))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
 		} else {
+
 			if err := m.ReadSet.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
@@ -881,81 +1077,96 @@
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("WriteSet")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("WriteSet")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.WriteSet == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.WriteSet == (*ConflictRowSet)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.WriteSet.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
+
+			if err := m.WriteSet.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("ScanSet")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ScanSet")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.ScanSet == nil {
-			if err := fieldTarget7.FromNil(tt.NonOptional().Field(2).Type); err != nil {
+		var10 := (m.ScanSet == (*ConflictScanSet)(nil))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.ScanSet.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-				return err
-			}
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Batches")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
 
-		mapTarget10, err := fieldTarget9.StartMap(tt.NonOptional().Field(3).Type, len(m.Batches))
-		if err != nil {
-			return err
-		}
-		for key12, value14 := range m.Batches {
-			keyTarget11, err := mapTarget10.StartKey()
-			if err != nil {
+			if err := m.ScanSet.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
-			if err := keyTarget11.FromUint(uint64(key12), tt.NonOptional().Field(3).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget13, err := mapTarget10.FinishKeyStartField(keyTarget11)
-			if err != nil {
-				return err
-			}
-
-			if err := value14.FillVDLTarget(valueTarget13, tt.NonOptional().Field(3).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget10.FinishField(keyTarget11, valueTarget13); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget9.FinishMap(mapTarget10); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Batches")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var13 bool
+		if len(m.Batches) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget14, err := fieldTarget12.StartMap(tt.NonOptional().Field(3).Type, len(m.Batches))
+			if err != nil {
+				return err
+			}
+			for key16, value18 := range m.Batches {
+				keyTarget15, err := mapTarget14.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget15.FromUint(uint64(key16), tt.NonOptional().Field(3).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget17, err := mapTarget14.FinishKeyStartField(keyTarget15)
+				if err != nil {
+					return err
+				}
+
+				if err := value18.FillVDLTarget(valueTarget17, tt.NonOptional().Field(3).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget14.FinishField(keyTarget15, valueTarget17); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget12.FinishMap(mapTarget14); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -1012,6 +1223,10 @@
 
 	return nil
 }
+func (t *ConflictTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Conflict{}
+	return nil
+}
 
 // Optional ConflictRowSet
 type __VDLTarget7_optional struct {
@@ -1037,10 +1252,8 @@
 
 	return nil
 }
-func (t *__VDLTarget7_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget7_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*ConflictRowSet)(nil)
 	return nil
 }
 
@@ -1068,10 +1281,8 @@
 
 	return nil
 }
-func (t *__VDLTarget8_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget8_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*ConflictScanSet)(nil)
 	return nil
 }
 
@@ -1117,6 +1328,10 @@
 
 	return nil
 }
+func (t *__VDLTarget9_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[uint64]syncbase.BatchInfo(nil)
+	return nil
+}
 
 // ResolvedRow represents a result of resolution of a row under conflict.
 // Key is the key for the row.
@@ -1137,35 +1352,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Result")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Result")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Result == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.Result == (*Value)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.Result.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
+
+			if err := m.Result.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1215,6 +1439,10 @@
 
 	return nil
 }
+func (t *ResolvedRowTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ResolvedRow{}
+	return nil
+}
 
 // Optional Value
 type __VDLTarget10_optional struct {
@@ -1240,10 +1468,8 @@
 
 	return nil
 }
-func (t *__VDLTarget10_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget10_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*Value)(nil)
 	return nil
 }
 
@@ -1265,40 +1491,50 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("ResultSet")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.ResultSet))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.ResultSet) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.ResultSet {
-			keyTarget5, err := mapTarget4.StartKey()
-			if err != nil {
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
-			if err := keyTarget5.FromString(string(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			if err := value8.FillVDLTarget(valueTarget7, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.ResultSet))
+			if err != nil {
 				return err
 			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
+			for key7, value9 := range m.ResultSet {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromString(string(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
+				if err != nil {
+					return err
+				}
+
+				if err := value9.FillVDLTarget(valueTarget8, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
-		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
@@ -1344,6 +1580,10 @@
 
 	return nil
 }
+func (t *ResolutionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Resolution{}
+	return nil
+}
 
 // map[string]ResolvedRow
 type __VDLTarget11_map struct {
@@ -1387,17 +1627,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroValue           = Value{}
-	__VDLZeroConflictRow     = ConflictRow{}
-	__VDLZeroConflictRowSet  = ConflictRowSet{}
-	__VDLZeroConflictScanSet = ConflictScanSet{}
-	__VDLZeroConflict        = Conflict{}
-	__VDLZeroResolvedRow     = ResolvedRow{}
-	__VDLZeroResolution      = Resolution{}
-)
+func (t *__VDLTarget11_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]ResolvedRow(nil)
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -1418,6 +1651,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Value)(nil))
diff --git a/syncbase/testdata/testdata.vdl.go b/syncbase/testdata/testdata.vdl.go
index 23e532c..ce28c19 100644
--- a/syncbase/testdata/testdata.vdl.go
+++ b/syncbase/testdata/testdata.vdl.go
@@ -36,55 +36,86 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Street")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Street), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Street == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Street), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("City")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("City")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.City), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.City == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.City), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("State")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.State), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Zip")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromString(string(m.Zip), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.State == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.State), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Zip")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Zip == "")
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromString(string(m.Zip), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -141,6 +172,10 @@
 
 	return nil
 }
+func (t *AddressInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AddressInfo{}
+	return nil
+}
 
 type CreditAgency int
 
@@ -224,11 +259,15 @@
 	case "TransUnion":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/syncbase/testdata.CreditAgency", src)
+		return fmt.Errorf("label %s not in enum CreditAgency", src)
 	}
 
 	return nil
 }
+func (t *CreditAgencyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CreditAgencyEquifax
+	return nil
+}
 
 type ExperianRating int
 
@@ -304,11 +343,15 @@
 	case "Bad":
 		*t.Value = 1
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/syncbase/testdata.ExperianRating", src)
+		return fmt.Errorf("label %s not in enum ExperianRating", src)
 	}
 
 	return nil
 }
+func (t *ExperianRatingTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ExperianRatingGood
+	return nil
+}
 
 type EquifaxCreditReport struct {
 	Rating byte
@@ -324,14 +367,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Rating == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -378,6 +428,10 @@
 
 	return nil
 }
+func (t *EquifaxCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = EquifaxCreditReport{}
+	return nil
+}
 
 type ExperianCreditReport struct {
 	Rating ExperianRating
@@ -393,15 +447,22 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Rating.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Rating == ExperianRatingGood)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Rating.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -448,6 +509,10 @@
 
 	return nil
 }
+func (t *ExperianCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ExperianCreditReport{}
+	return nil
+}
 
 type TransUnionCreditReport struct {
 	Rating int16
@@ -463,14 +528,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Rating == int16(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -517,6 +589,10 @@
 
 	return nil
 }
+func (t *TransUnionCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TransUnionCreditReport{}
+	return nil
+}
 
 type (
 	// AgencyReport represents any single field of the AgencyReport union type.
@@ -692,6 +768,10 @@
 
 	return nil
 }
+func (t *AgencyReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AgencyReport(AgencyReportEquifaxReport{})
+	return nil
+}
 
 type agencyReportTargetFactory struct{}
 
@@ -717,34 +797,54 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Agency")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Agency.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Agency == CreditAgencyEquifax)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Agency.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Report")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Report")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue6 := m.Report
-		if unionValue6 == nil {
-			unionValue6 = AgencyReportEquifaxReport{}
+		var var7 bool
+		if field, ok := m.Report.(AgencyReportEquifaxReport); ok {
+
+			var8 := (field.Value == EquifaxCreditReport{})
+			var7 = var8
 		}
-		if err := unionValue6.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue9 := m.Report
+			if unionValue9 == nil {
+				unionValue9 = AgencyReportEquifaxReport{}
+			}
+			if err := unionValue9.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -794,6 +894,12 @@
 
 	return nil
 }
+func (t *CreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CreditReport{
+		Report: AgencyReportEquifaxReport{},
+	}
+	return nil
+}
 
 type Customer struct {
 	Name    string
@@ -813,66 +919,107 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Id")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Id), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Active")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromBool(bool(m.Active), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Address")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Address.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
+		var7 := (m.Id == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Id), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Active")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Active == false)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromBool(bool(m.Active), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("Credit")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Address")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Credit.FillVDLTarget(fieldTarget11, tt.NonOptional().Field(4).Type); err != nil {
+		var13 := (m.Address == AddressInfo{})
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Address.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Credit")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var16 := (m.Credit == CreditReport{
+			Report: AgencyReportEquifaxReport{},
+		})
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Credit.FillVDLTarget(fieldTarget15, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
@@ -937,6 +1084,14 @@
 
 	return nil
 }
+func (t *CustomerTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Customer{
+		Credit: CreditReport{
+			Report: AgencyReportEquifaxReport{},
+		},
+	}
+	return nil
+}
 
 type Invoice struct {
 	CustId      int64
@@ -956,71 +1111,110 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("CustId")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.CustId), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.CustId == int64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.CustId), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("InvoiceNum")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.InvoiceNum), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	var wireValue6 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue6, m.InvoiceDate); err != nil {
-		return err
-	}
-
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("InvoiceDate")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("InvoiceNum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue6.FillVDLTarget(fieldTarget8, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var7 := (m.InvoiceNum == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.InvoiceNum), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Amount")
+	var wireValue8 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue8, m.InvoiceDate); err != nil {
+		return err
+	}
+
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("InvoiceDate")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget10.FromInt(int64(m.Amount), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var11 := (wireValue8 == time_2.Time{})
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue8.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("ShipTo")
+	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Amount")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.ShipTo.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(4).Type); err != nil {
+		var14 := (m.Amount == int64(0))
+		if var14 {
+			if err := fieldTarget13.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget13.FromInt(int64(m.Amount), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+	}
+	keyTarget15, fieldTarget16, err := fieldsTarget1.StartField("ShipTo")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var17 := (m.ShipTo == AddressInfo{})
+		if var17 {
+			if err := fieldTarget16.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.ShipTo.FillVDLTarget(fieldTarget16, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget15, fieldTarget16); err != nil {
 			return err
 		}
 	}
@@ -1085,6 +1279,10 @@
 
 	return nil
 }
+func (t *InvoiceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Invoice{}
+	return nil
+}
 
 type Numbers struct {
 	B    byte
@@ -1108,112 +1306,183 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.B), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.B == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.B), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Ui16")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Ui16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromUint(uint64(m.Ui16), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Ui16 == uint16(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromUint(uint64(m.Ui16), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Ui32")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Ui32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromUint(uint64(m.Ui32), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Ui64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromUint(uint64(m.Ui64), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.Ui32 == uint32(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromUint(uint64(m.Ui32), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("I16")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Ui64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget11.FromInt(int64(m.I16), tt.NonOptional().Field(4).Type); err != nil {
-			return err
+
+		var13 := (m.Ui64 == uint64(0))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromUint(uint64(m.Ui64), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("I32")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("I16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget13.FromInt(int64(m.I32), tt.NonOptional().Field(5).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
-			return err
-		}
-	}
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("I64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget15.FromInt(int64(m.I64), tt.NonOptional().Field(6).Type); err != nil {
-			return err
+
+		var16 := (m.I16 == int16(0))
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromInt(int64(m.I16), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("F32")
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("I32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget17.FromFloat(float64(m.F32), tt.NonOptional().Field(7).Type); err != nil {
-			return err
+
+		var19 := (m.I32 == int32(0))
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget18.FromInt(int64(m.I32), tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
 	}
-	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("F64")
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("I64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget19.FromFloat(float64(m.F64), tt.NonOptional().Field(8).Type); err != nil {
+
+		var22 := (m.I64 == int64(0))
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget21.FromInt(int64(m.I64), tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
+	}
+	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("F32")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var25 := (m.F32 == float32(0))
+		if var25 {
+			if err := fieldTarget24.FromZero(tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget24.FromFloat(float64(m.F32), tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
+			return err
+		}
+	}
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("F64")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var28 := (m.F64 == float64(0))
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget27.FromFloat(float64(m.F64), tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
@@ -1298,6 +1567,10 @@
 
 	return nil
 }
+func (t *NumbersTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Numbers{}
+	return nil
+}
 
 type (
 	// TitleOrValueType represents any single field of the TitleOrValueType union type.
@@ -1431,6 +1704,10 @@
 
 	return nil
 }
+func (t *TitleOrValueTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TitleOrValueType(TitleOrValueTypeTitle{})
+	return nil
+}
 
 type titleOrValueTypeTargetFactory struct{}
 
@@ -1456,33 +1733,53 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("TitleOrValue")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("TitleOrValue")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue6 := m.TitleOrValue
-		if unionValue6 == nil {
-			unionValue6 = TitleOrValueTypeTitle{}
+		var var7 bool
+		if field, ok := m.TitleOrValue.(TitleOrValueTypeTitle); ok {
+
+			var8 := (field.Value == "")
+			var7 = var8
 		}
-		if err := unionValue6.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue9 := m.TitleOrValue
+			if unionValue9 == nil {
+				unionValue9 = TitleOrValueTypeTitle{}
+			}
+			if err := unionValue9.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1532,6 +1829,12 @@
 
 	return nil
 }
+func (t *BazTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BazType{
+		TitleOrValue: TitleOrValueTypeTitle{},
+	}
+	return nil
+}
 
 type BarType struct {
 	Baz BazType
@@ -1547,15 +1850,24 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Baz")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Baz.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Baz == BazType{
+			TitleOrValue: TitleOrValueTypeTitle{},
+		})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Baz.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -1602,6 +1914,14 @@
 
 	return nil
 }
+func (t *BarTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BarType{
+		Baz: BazType{
+			TitleOrValue: TitleOrValueTypeTitle{},
+		},
+	}
+	return nil
+}
 
 type FooType struct {
 	Bar BarType
@@ -1617,15 +1937,26 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Bar")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Bar.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Bar == BarType{
+			Baz: BazType{
+				TitleOrValue: TitleOrValueTypeTitle{},
+			},
+		})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Bar.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -1672,6 +2003,16 @@
 
 	return nil
 }
+func (t *FooTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = FooType{
+		Bar: BarType{
+			Baz: BazType{
+				TitleOrValue: TitleOrValueTypeTitle{},
+			},
+		},
+	}
+	return nil
+}
 
 type ArrayOfFour [4]string
 
@@ -1734,6 +2075,10 @@
 
 	return nil
 }
+func (t *ArrayOfFourTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ArrayOfFour{}
+	return nil
+}
 
 type KeyIndexData struct {
 	A ArrayOfFour
@@ -1752,111 +2097,151 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.A.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.A == ArrayOfFour{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.A.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("L")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("L")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.L))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.L) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.L {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.L))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget7.FromString(string(elem8), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+			for i, elem10 := range m.L {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget9.FromString(string(elem10), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("M")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("M")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget11, err := fieldTarget10.StartMap(tt.NonOptional().Field(2).Type, len(m.M))
-		if err != nil {
-			return err
+		var var13 bool
+		if len(m.M) == 0 {
+			var13 = true
 		}
-		for key13, value15 := range m.M {
-			keyTarget12, err := mapTarget11.StartKey()
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget14, err := fieldTarget12.StartMap(tt.NonOptional().Field(2).Type, len(m.M))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget12.FromInt(int64(key13), tt.NonOptional().Field(2).Type.Key()); err != nil {
-				return err
+			for key16, value18 := range m.M {
+				keyTarget15, err := mapTarget14.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget15.FromInt(int64(key16), tt.NonOptional().Field(2).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget17, err := mapTarget14.FinishKeyStartField(keyTarget15)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget17.FromString(string(value18), tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget14.FinishField(keyTarget15, valueTarget17); err != nil {
+					return err
+				}
 			}
-			valueTarget14, err := mapTarget11.FinishKeyStartField(keyTarget12)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget14.FromString(string(value15), tt.NonOptional().Field(2).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget11.FinishField(keyTarget12, valueTarget14); err != nil {
+			if err := fieldTarget12.FinishMap(mapTarget14); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget10.FinishMap(mapTarget11); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("S")
+	keyTarget19, fieldTarget20, err := fieldsTarget1.StartField("S")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget18, err := fieldTarget17.StartSet(tt.NonOptional().Field(3).Type, len(m.S))
-		if err != nil {
-			return err
+		var var21 bool
+		if len(m.S) == 0 {
+			var21 = true
 		}
-		for key20 := range m.S {
-			keyTarget19, err := setTarget18.StartKey()
+		if var21 {
+			if err := fieldTarget20.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget22, err := fieldTarget20.StartSet(tt.NonOptional().Field(3).Type, len(m.S))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget19.FromString(string(key20), tt.NonOptional().Field(3).Type.Key()); err != nil {
-				return err
+			for key24 := range m.S {
+				keyTarget23, err := setTarget22.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget23.FromString(string(key24), tt.NonOptional().Field(3).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget22.FinishKey(keyTarget23); err != nil {
+					return err
+				}
 			}
-			if err := setTarget18.FinishKey(keyTarget19); err != nil {
+			if err := fieldTarget20.FinishSet(setTarget22); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget17.FinishSet(setTarget18); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget19, fieldTarget20); err != nil {
 			return err
 		}
 	}
@@ -1916,6 +2301,10 @@
 
 	return nil
 }
+func (t *KeyIndexDataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = KeyIndexData{}
+	return nil
+}
 
 // map[int64]string
 type __VDLTarget1_map struct {
@@ -1959,6 +2348,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int64]string(nil)
+	return nil
+}
 
 // map[string]struct{}
 type __VDLTarget2_set struct {
@@ -1994,6 +2387,10 @@
 
 	return nil
 }
+func (t *__VDLTarget2_set) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string]struct{}(nil)
+	return nil
+}
 
 type BigData struct {
 	Key string // A dup of the key stored in the value.
@@ -2009,14 +2406,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Key), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -2063,46 +2467,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroAddressInfo            = AddressInfo{}
-	__VDLZeroCreditAgency           = CreditAgencyEquifax
-	__VDLZeroExperianRating         = ExperianRatingGood
-	__VDLZeroEquifaxCreditReport    = EquifaxCreditReport{}
-	__VDLZeroExperianCreditReport   = ExperianCreditReport{}
-	__VDLZeroTransUnionCreditReport = TransUnionCreditReport{}
-	__VDLZeroAgencyReport           = AgencyReport(AgencyReportEquifaxReport{})
-	__VDLZeroCreditReport           = CreditReport{
-		Report: AgencyReportEquifaxReport{},
-	}
-	__VDLZeroCustomer = Customer{
-		Credit: CreditReport{
-			Report: AgencyReportEquifaxReport{},
-		},
-	}
-	__VDLZeroInvoice          = Invoice{}
-	__VDLZeroNumbers          = Numbers{}
-	__VDLZeroTitleOrValueType = TitleOrValueType(TitleOrValueTypeTitle{})
-	__VDLZeroBazType          = BazType{
-		TitleOrValue: TitleOrValueTypeTitle{},
-	}
-	__VDLZeroBarType = BarType{
-		Baz: BazType{
-			TitleOrValue: TitleOrValueTypeTitle{},
-		},
-	}
-	__VDLZeroFooType = FooType{
-		Bar: BarType{
-			Baz: BazType{
-				TitleOrValue: TitleOrValueTypeTitle{},
-			},
-		},
-	}
-	__VDLZeroArrayOfFour  = ArrayOfFour{}
-	__VDLZeroKeyIndexData = KeyIndexData{}
-	__VDLZeroBigData      = BigData{}
-)
+func (t *BigDataTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BigData{}
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -2123,6 +2491,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*AddressInfo)(nil))
diff --git a/uniqueid/.api b/uniqueid/.api
index 51d8686..c6102dd 100644
--- a/uniqueid/.api
+++ b/uniqueid/.api
@@ -4,6 +4,7 @@
 pkg uniqueid, method (*Id) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg uniqueid, method (*Id) MakeVDLTarget() vdl.Target
 pkg uniqueid, method (*IdTarget) FromBytes([]byte, *vdl.Type) error
+pkg uniqueid, method (*IdTarget) FromZero(*vdl.Type) error
 pkg uniqueid, method (*RandomGenerator) NewID() (Id, error)
 pkg uniqueid, method (Id) String() string
 pkg uniqueid, type Id [16]byte
diff --git a/uniqueid/uniqueid.vdl.go b/uniqueid/uniqueid.vdl.go
index 4558bb8..7264d41 100644
--- a/uniqueid/uniqueid.vdl.go
+++ b/uniqueid/uniqueid.vdl.go
@@ -50,11 +50,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroId = Id{}
-)
+func (t *IdTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Id{}
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -75,6 +74,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Id)(nil))
diff --git a/vdl/.api b/vdl/.api
index 80b81cf..1b15b2b 100644
--- a/vdl/.api
+++ b/vdl/.api
@@ -81,10 +81,10 @@
 pkg vdl, method (*BoolTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*BoolTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*BoolTarget) FromInt(int64, *Type) error
-pkg vdl, method (*BoolTarget) FromNil(*Type) error
 pkg vdl, method (*BoolTarget) FromString(string, *Type) error
 pkg vdl, method (*BoolTarget) FromTypeObject(*Type) error
 pkg vdl, method (*BoolTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*BoolTarget) FromZero(*Type) error
 pkg vdl, method (*BoolTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*BoolTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*BoolTarget) StartMap(*Type, int) (MapTarget, error)
@@ -99,10 +99,10 @@
 pkg vdl, method (*ByteTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*ByteTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*ByteTarget) FromInt(int64, *Type) error
-pkg vdl, method (*ByteTarget) FromNil(*Type) error
 pkg vdl, method (*ByteTarget) FromString(string, *Type) error
 pkg vdl, method (*ByteTarget) FromTypeObject(*Type) error
 pkg vdl, method (*ByteTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*ByteTarget) FromZero(*Type) error
 pkg vdl, method (*ByteTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*ByteTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*ByteTarget) StartMap(*Type, int) (MapTarget, error)
@@ -117,10 +117,10 @@
 pkg vdl, method (*BytesTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*BytesTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*BytesTarget) FromInt(int64, *Type) error
-pkg vdl, method (*BytesTarget) FromNil(*Type) error
 pkg vdl, method (*BytesTarget) FromString(string, *Type) error
 pkg vdl, method (*BytesTarget) FromTypeObject(*Type) error
 pkg vdl, method (*BytesTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*BytesTarget) FromZero(*Type) error
 pkg vdl, method (*BytesTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*BytesTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*BytesTarget) StartMap(*Type, int) (MapTarget, error)
@@ -137,10 +137,10 @@
 pkg vdl, method (*Float32Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Float32Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Float32Target) FromInt(int64, *Type) error
-pkg vdl, method (*Float32Target) FromNil(*Type) error
 pkg vdl, method (*Float32Target) FromString(string, *Type) error
 pkg vdl, method (*Float32Target) FromTypeObject(*Type) error
 pkg vdl, method (*Float32Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Float32Target) FromZero(*Type) error
 pkg vdl, method (*Float32Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Float32Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Float32Target) StartMap(*Type, int) (MapTarget, error)
@@ -155,10 +155,10 @@
 pkg vdl, method (*Float64Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Float64Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Float64Target) FromInt(int64, *Type) error
-pkg vdl, method (*Float64Target) FromNil(*Type) error
 pkg vdl, method (*Float64Target) FromString(string, *Type) error
 pkg vdl, method (*Float64Target) FromTypeObject(*Type) error
 pkg vdl, method (*Float64Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Float64Target) FromZero(*Type) error
 pkg vdl, method (*Float64Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Float64Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Float64Target) StartMap(*Type, int) (MapTarget, error)
@@ -173,10 +173,10 @@
 pkg vdl, method (*Int16Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Int16Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Int16Target) FromInt(int64, *Type) error
-pkg vdl, method (*Int16Target) FromNil(*Type) error
 pkg vdl, method (*Int16Target) FromString(string, *Type) error
 pkg vdl, method (*Int16Target) FromTypeObject(*Type) error
 pkg vdl, method (*Int16Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Int16Target) FromZero(*Type) error
 pkg vdl, method (*Int16Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Int16Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Int16Target) StartMap(*Type, int) (MapTarget, error)
@@ -191,10 +191,10 @@
 pkg vdl, method (*Int32Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Int32Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Int32Target) FromInt(int64, *Type) error
-pkg vdl, method (*Int32Target) FromNil(*Type) error
 pkg vdl, method (*Int32Target) FromString(string, *Type) error
 pkg vdl, method (*Int32Target) FromTypeObject(*Type) error
 pkg vdl, method (*Int32Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Int32Target) FromZero(*Type) error
 pkg vdl, method (*Int32Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Int32Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Int32Target) StartMap(*Type, int) (MapTarget, error)
@@ -209,10 +209,10 @@
 pkg vdl, method (*Int64Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Int64Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Int64Target) FromInt(int64, *Type) error
-pkg vdl, method (*Int64Target) FromNil(*Type) error
 pkg vdl, method (*Int64Target) FromString(string, *Type) error
 pkg vdl, method (*Int64Target) FromTypeObject(*Type) error
 pkg vdl, method (*Int64Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Int64Target) FromZero(*Type) error
 pkg vdl, method (*Int64Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Int64Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Int64Target) StartMap(*Type, int) (MapTarget, error)
@@ -227,10 +227,10 @@
 pkg vdl, method (*Int8Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Int8Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Int8Target) FromInt(int64, *Type) error
-pkg vdl, method (*Int8Target) FromNil(*Type) error
 pkg vdl, method (*Int8Target) FromString(string, *Type) error
 pkg vdl, method (*Int8Target) FromTypeObject(*Type) error
 pkg vdl, method (*Int8Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Int8Target) FromZero(*Type) error
 pkg vdl, method (*Int8Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Int8Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Int8Target) StartMap(*Type, int) (MapTarget, error)
@@ -253,10 +253,10 @@
 pkg vdl, method (*StringSliceTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*StringSliceTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*StringSliceTarget) FromInt(int64, *Type) error
-pkg vdl, method (*StringSliceTarget) FromNil(*Type) error
 pkg vdl, method (*StringSliceTarget) FromString(string, *Type) error
 pkg vdl, method (*StringSliceTarget) FromTypeObject(*Type) error
 pkg vdl, method (*StringSliceTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*StringSliceTarget) FromZero(*Type) error
 pkg vdl, method (*StringSliceTarget) StartElem(int) (Target, error)
 pkg vdl, method (*StringSliceTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*StringSliceTarget) StartList(*Type, int) (ListTarget, error)
@@ -272,10 +272,10 @@
 pkg vdl, method (*StringTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*StringTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*StringTarget) FromInt(int64, *Type) error
-pkg vdl, method (*StringTarget) FromNil(*Type) error
 pkg vdl, method (*StringTarget) FromString(string, *Type) error
 pkg vdl, method (*StringTarget) FromTypeObject(*Type) error
 pkg vdl, method (*StringTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*StringTarget) FromZero(*Type) error
 pkg vdl, method (*StringTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*StringTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*StringTarget) StartMap(*Type, int) (MapTarget, error)
@@ -290,10 +290,10 @@
 pkg vdl, method (*TargetBase) FromEnumLabel(string, *Type) error
 pkg vdl, method (*TargetBase) FromFloat(float64, *Type) error
 pkg vdl, method (*TargetBase) FromInt(int64, *Type) error
-pkg vdl, method (*TargetBase) FromNil(*Type) error
 pkg vdl, method (*TargetBase) FromString(string, *Type) error
 pkg vdl, method (*TargetBase) FromTypeObject(*Type) error
 pkg vdl, method (*TargetBase) FromUint(uint64, *Type) error
+pkg vdl, method (*TargetBase) FromZero(*Type) error
 pkg vdl, method (*TargetBase) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*TargetBase) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*TargetBase) StartMap(*Type, int) (MapTarget, error)
@@ -340,10 +340,10 @@
 pkg vdl, method (*TypeObjectTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*TypeObjectTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*TypeObjectTarget) FromInt(int64, *Type) error
-pkg vdl, method (*TypeObjectTarget) FromNil(*Type) error
 pkg vdl, method (*TypeObjectTarget) FromString(string, *Type) error
 pkg vdl, method (*TypeObjectTarget) FromTypeObject(*Type) error
 pkg vdl, method (*TypeObjectTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*TypeObjectTarget) FromZero(*Type) error
 pkg vdl, method (*TypeObjectTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*TypeObjectTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*TypeObjectTarget) StartMap(*Type, int) (MapTarget, error)
@@ -358,10 +358,10 @@
 pkg vdl, method (*Uint16Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Uint16Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Uint16Target) FromInt(int64, *Type) error
-pkg vdl, method (*Uint16Target) FromNil(*Type) error
 pkg vdl, method (*Uint16Target) FromString(string, *Type) error
 pkg vdl, method (*Uint16Target) FromTypeObject(*Type) error
 pkg vdl, method (*Uint16Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Uint16Target) FromZero(*Type) error
 pkg vdl, method (*Uint16Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Uint16Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Uint16Target) StartMap(*Type, int) (MapTarget, error)
@@ -376,10 +376,10 @@
 pkg vdl, method (*Uint32Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Uint32Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Uint32Target) FromInt(int64, *Type) error
-pkg vdl, method (*Uint32Target) FromNil(*Type) error
 pkg vdl, method (*Uint32Target) FromString(string, *Type) error
 pkg vdl, method (*Uint32Target) FromTypeObject(*Type) error
 pkg vdl, method (*Uint32Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Uint32Target) FromZero(*Type) error
 pkg vdl, method (*Uint32Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Uint32Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Uint32Target) StartMap(*Type, int) (MapTarget, error)
@@ -394,10 +394,10 @@
 pkg vdl, method (*Uint64Target) FromEnumLabel(string, *Type) error
 pkg vdl, method (*Uint64Target) FromFloat(float64, *Type) error
 pkg vdl, method (*Uint64Target) FromInt(int64, *Type) error
-pkg vdl, method (*Uint64Target) FromNil(*Type) error
 pkg vdl, method (*Uint64Target) FromString(string, *Type) error
 pkg vdl, method (*Uint64Target) FromTypeObject(*Type) error
 pkg vdl, method (*Uint64Target) FromUint(uint64, *Type) error
+pkg vdl, method (*Uint64Target) FromZero(*Type) error
 pkg vdl, method (*Uint64Target) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*Uint64Target) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*Uint64Target) StartMap(*Type, int) (MapTarget, error)
@@ -455,10 +455,10 @@
 pkg vdl, method (*WireErrorTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*WireErrorTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*WireErrorTarget) FromInt(int64, *Type) error
-pkg vdl, method (*WireErrorTarget) FromNil(*Type) error
 pkg vdl, method (*WireErrorTarget) FromString(string, *Type) error
 pkg vdl, method (*WireErrorTarget) FromTypeObject(*Type) error
 pkg vdl, method (*WireErrorTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*WireErrorTarget) FromZero(*Type) error
 pkg vdl, method (*WireErrorTarget) StartField(string) (Target, Target, error)
 pkg vdl, method (*WireErrorTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*WireErrorTarget) StartList(*Type, int) (ListTarget, error)
@@ -477,10 +477,10 @@
 pkg vdl, method (*WireRetryCodeTarget) FromEnumLabel(string, *Type) error
 pkg vdl, method (*WireRetryCodeTarget) FromFloat(float64, *Type) error
 pkg vdl, method (*WireRetryCodeTarget) FromInt(int64, *Type) error
-pkg vdl, method (*WireRetryCodeTarget) FromNil(*Type) error
 pkg vdl, method (*WireRetryCodeTarget) FromString(string, *Type) error
 pkg vdl, method (*WireRetryCodeTarget) FromTypeObject(*Type) error
 pkg vdl, method (*WireRetryCodeTarget) FromUint(uint64, *Type) error
+pkg vdl, method (*WireRetryCodeTarget) FromZero(*Type) error
 pkg vdl, method (*WireRetryCodeTarget) StartFields(*Type) (FieldsTarget, error)
 pkg vdl, method (*WireRetryCodeTarget) StartList(*Type, int) (ListTarget, error)
 pkg vdl, method (*WireRetryCodeTarget) StartMap(*Type, int) (MapTarget, error)
@@ -575,7 +575,7 @@
 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, 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, FromString, FromTypeObject, FromUint, FromZero, 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
@@ -585,10 +585,10 @@
 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
-pkg vdl, type Target interface, FromNil(*Type) error
 pkg vdl, type Target interface, FromString(string, *Type) error
 pkg vdl, type Target interface, FromTypeObject(*Type) error
 pkg vdl, type Target interface, FromUint(uint64, *Type) error
+pkg vdl, type Target interface, FromZero(*Type) error
 pkg vdl, type Target interface, StartFields(*Type) (FieldsTarget, error)
 pkg vdl, type Target interface, StartList(*Type, int) (ListTarget, error)
 pkg vdl, type Target interface, StartMap(*Type, int) (MapTarget, error)
diff --git a/vdl/convert.go b/vdl/convert.go
index bf31d3c..97708c1 100644
--- a/vdl/convert.go
+++ b/vdl/convert.go
@@ -448,20 +448,99 @@
 	return nil
 }
 
-// FromNil implements the Target interface method.
-func (c convTarget) FromNil(tt *Type) error {
-	if c.tt == AnyType {
-		// Optional is not currently supported for FromNil() direct targets
+// FromZero implements the Target interface method.
+func (c convTarget) FromZero(tt *Type) error {
+	if tt.Kind() != Optional {
+		// Optional is not currently supported for FromZero() direct targets
 		// because there is no way to get a generated optional struct target
 		// for an arbitrary struct. (the struct target itself doesn't support
-		// the FromNil method).
+		// the FromZero method).
 		if target := c.makeDirectTarget(); target != nil {
-			return target.FromNil(tt)
+			return target.FromZero(tt)
 		}
 	}
 	if !Compatible(c.tt, tt) {
 		return fmt.Errorf("types %q and %q aren't compatible", c.tt, tt)
 	}
+	switch tt.Kind() {
+	case Bool:
+		return c.FromBool(false, tt)
+	case Byte, Uint16, Uint32, Uint64:
+		return c.FromUint(0, tt)
+	case Int8, Int16, Int32, Int64:
+		return c.FromInt(0, tt)
+	case Float32, Float64:
+		return c.FromFloat(0, tt)
+	case String:
+		return c.FromString("", tt)
+	case Enum:
+		return c.FromEnumLabel(tt.EnumLabel(0), tt)
+	case TypeObject:
+		return c.FromTypeObject(AnyType)
+	case List, Array:
+		listTarget, err := c.StartList(tt, 0)
+		if err != nil {
+			return err
+		}
+		return c.FinishList(listTarget)
+	case Map:
+		mapTarget, err := c.StartMap(tt, 0)
+		if err != nil {
+			return err
+		}
+		return c.FinishMap(mapTarget)
+	case Set:
+		setTarget, err := c.StartSet(tt, 0)
+		if err != nil {
+			return err
+		}
+		return c.FinishSet(setTarget)
+	case Union:
+		fieldsTarget, err := c.StartFields(tt)
+		if err != nil {
+			return err
+		}
+		defaultField := tt.Field(0)
+		keyTarget, fieldTarget, err := fieldsTarget.StartField(defaultField.Name)
+		if err != nil {
+			return err
+		}
+		if err := fieldTarget.FromZero(defaultField.Type); err != nil {
+			return err
+		}
+		if err := fieldsTarget.FinishField(keyTarget, fieldTarget); err != nil {
+			return err
+		}
+		return c.FinishFields(fieldsTarget)
+	case Struct:
+		fieldsTarget, err := c.StartFields(tt)
+		if err != nil {
+			return err
+		}
+		for i := 0; i < tt.NumField(); i++ {
+			fld := tt.Field(i)
+			keyTarget, fieldTarget, err := fieldsTarget.StartField(fld.Name)
+			if err != ErrFieldNoExist {
+				if err != nil {
+					return err
+				}
+				if err := fieldTarget.FromZero(fld.Type); err != nil {
+					return err
+				}
+				if err := fieldsTarget.FinishField(keyTarget, fieldTarget); err != nil {
+					return err
+				}
+			}
+		}
+		return c.FinishFields(fieldsTarget)
+	case Any, Optional:
+		return c.fromNil(tt)
+	default:
+		return fmt.Errorf("unhandled kind: %v", tt.Kind())
+	}
+}
+
+func (c convTarget) fromNil(tt *Type) error {
 	if !tt.CanBeNil() || !c.tt.CanBeNil() {
 		return fmt.Errorf("invalid conversion from %v(nil) to %v", tt, c.tt)
 	}
@@ -495,14 +574,15 @@
 		// Set the zero value of the pointer or interface, which will give us nil of
 		// the correct type.
 		rv.Set(reflect.Zero(rt))
+		return nil
 	} else {
 		vvNil := ZeroValue(tt)
 		if to, from := c.vv.Type(), vvNil; !to.AssignableFrom(from) {
 			return fmt.Errorf("%v not assignable from %v", to, from)
 		}
 		c.vv.Assign(vvNil)
+		return nil
 	}
-	return nil
 }
 
 // FromBool implements the Target interface method.
@@ -1167,21 +1247,22 @@
 			}
 			return reflectConv(rvField, ttField)
 		case reflect.Struct:
+			fieldName := key.rv.String()
 			if tt.Kind() == Union {
 				// Special-case: the fill target is a union concrete field struct.  This
 				// means that we should only return a field if the field name matches.
-				name := c.rv.Interface().(nameable).Name()
-				if name != key.rv.String() {
+				existingName := c.rv.Interface().(nameable).Name()
+				if existingName != fieldName {
 					return convTarget{}, ErrFieldNoExist
 				}
-				ttField, _ := tt.FieldByName(name)
+				ttField, _ := tt.FieldByName(fieldName)
 				return reflectConv(c.rv.FieldByName("Value"), ttField.Type)
 			}
 			// TODO(toddw): How should we handle anonymous (aka embedded) fields?
 			// Note that unexported embedded fields may themselves have exported
 			// fields.  See https://github.com/golang/go/issues/12367
-			rvField := c.rv.FieldByName(key.rv.String())
-			ttField, index := tt.FieldByName(key.rv.String())
+			rvField := c.rv.FieldByName(fieldName)
+			ttField, index := tt.FieldByName(fieldName)
 			if !rvField.IsValid() || index < 0 {
 				// TODO(toddw): Add a way to track extra and missing fields.
 				return convTarget{}, ErrFieldNoExist
diff --git a/vdl/primitive_target.go b/vdl/primitive_target.go
index 0c24ec6..497d6fb 100644
--- a/vdl/primitive_target.go
+++ b/vdl/primitive_target.go
@@ -22,6 +22,13 @@
 	*t.Value = src
 	return nil
 }
+func (t *BoolTarget) FromZero(tt *Type) error {
+	if !Compatible(tt, BoolType) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, BoolType)
+	}
+	*t.Value = false
+	return nil
+}
 
 type ByteTarget struct {
 	Value *byte
@@ -49,6 +56,13 @@
 	*t.Value, err = vdlconv.Float64ToUint8(src)
 	return
 }
+func (t *ByteTarget) FromZero(tt *Type) error {
+	if !Compatible(tt, ByteType) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, ByteType)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Uint16Target struct {
 	Value *uint16
@@ -76,6 +90,13 @@
 	*t.Value, err = vdlconv.Float64ToUint16(src)
 	return
 }
+func (t *Uint16Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Uint16Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Uint16Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Uint32Target struct {
 	Value *uint32
@@ -103,6 +124,13 @@
 	*t.Value, err = vdlconv.Float64ToUint32(src)
 	return
 }
+func (t *Uint32Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Uint32Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Uint32Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Uint64Target struct {
 	Value *uint64
@@ -130,6 +158,13 @@
 	*t.Value, err = vdlconv.Float64ToUint64(src)
 	return
 }
+func (t *Uint64Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Uint64Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Uint64Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Int8Target struct {
 	Value *int8
@@ -157,6 +192,13 @@
 	*t.Value, err = vdlconv.Float64ToInt8(src)
 	return
 }
+func (t *Int8Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Int8Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int8Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Int16Target struct {
 	Value *int16
@@ -184,6 +226,13 @@
 	*t.Value, err = vdlconv.Float64ToInt16(src)
 	return
 }
+func (t *Int16Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Int16Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int16Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Int32Target struct {
 	Value *int32
@@ -211,6 +260,13 @@
 	*t.Value, err = vdlconv.Float64ToInt32(src)
 	return
 }
+func (t *Int32Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Int32Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int32Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Int64Target struct {
 	Value *int64
@@ -238,6 +294,13 @@
 	*t.Value, err = vdlconv.Float64ToInt64(src)
 	return
 }
+func (t *Int64Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Int64Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Int64Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Float32Target struct {
 	Value *float32
@@ -265,6 +328,13 @@
 	*t.Value, err = vdlconv.Float64ToFloat32(src)
 	return
 }
+func (t *Float32Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Float32Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Float32Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type Float64Target struct {
 	Value *float64
@@ -292,6 +362,13 @@
 	*t.Value = src
 	return
 }
+func (t *Float64Target) FromZero(tt *Type) error {
+	if !Compatible(tt, Float64Type) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, Float64Type)
+	}
+	*t.Value = 0
+	return nil
+}
 
 type StringTarget struct {
 	Value *string
@@ -305,6 +382,13 @@
 	*t.Value = src
 	return nil
 }
+func (t *StringTarget) FromZero(tt *Type) error {
+	if !Compatible(tt, StringType) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, StringType)
+	}
+	*t.Value = ""
+	return nil
+}
 
 type BytesTarget struct {
 	Value *[]byte
@@ -325,6 +409,13 @@
 	}
 	return nil
 }
+func (t *BytesTarget) FromZero(tt *Type) error {
+	if !Compatible(tt, bytesType) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, bytesType)
+	}
+	*t.Value = nil
+	return nil
+}
 
 type TypeObjectTarget struct {
 	Value **Type
@@ -335,6 +426,13 @@
 	*t.Value = tt
 	return nil
 }
+func (t *TypeObjectTarget) FromZero(tt *Type) error {
+	if !Compatible(tt, TypeObjectType) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, TypeObjectType)
+	}
+	*t.Value = AnyType
+	return nil
+}
 
 type StringSliceTarget struct {
 	Value *[]string
@@ -364,3 +462,10 @@
 func (t *StringSliceTarget) FinishList(elem ListTarget) error {
 	return nil
 }
+func (t *StringSliceTarget) FromZero(tt *Type) error {
+	if !Compatible(tt, stringSliceType) {
+		return fmt.Errorf("Type %v incompatible with expected type %v", tt, stringSliceType)
+	}
+	*t.Value = nil
+	return nil
+}
diff --git a/vdl/target.go b/vdl/target.go
index 2694b61..b7b6e16 100644
--- a/vdl/target.go
+++ b/vdl/target.go
@@ -39,9 +39,8 @@
 	FromEnumLabel(src string, tt *Type) error
 	// FromTypeObject converts from the src type to the target.
 	FromTypeObject(src *Type) error
-	// FromNil converts from a nil (nonexistent) value of type tt, where tt must
-	// be of kind Optional or Any.
-	FromNil(tt *Type) error
+	// FromZero converts from a zero value of type tt.
+	FromZero(tt *Type) error
 
 	// StartList prepares conversion from a list or array of type tt, with the
 	// given len.  FinishList must be called to finish the list.
@@ -175,7 +174,7 @@
 func FromReflect(target Target, rv reflect.Value) error {
 	// Special-case to treat interface{}(nil) as any(nil).
 	if !rv.IsValid() {
-		return target.FromNil(AnyType)
+		return target.FromZero(AnyType)
 	}
 
 	// Flatten pointers and interfaces in rv, and handle special-cases.  We track
@@ -213,7 +212,7 @@
 				// Treat nil Union interface as the value of the type at index 0.
 				return FromValue(target, ZeroValue(tt))
 			}
-			return target.FromNil(tt)
+			return target.FromZero(tt)
 		case rt.ConvertibleTo(rtPtrToType):
 			// If rv is convertible to *Type, fill from it directly.
 			return target.FromTypeObject(rv.Convert(rtPtrToType).Interface().(*Type))
@@ -441,18 +440,15 @@
 // the appropriate methods on the target.
 func FromValue(target Target, vv *Value) error {
 	tt := vv.Type()
+	if vv.IsZero() {
+		return target.FromZero(tt)
+	}
 	if tt.Kind() == Any {
-		if vv.IsNil() {
-			return target.FromNil(tt)
-		}
 		// Non-nil any simply converts from the elem.
 		vv = vv.Elem()
 		tt = vv.Type()
 	}
 	if tt.Kind() == Optional {
-		if vv.IsNil() {
-			return target.FromNil(tt)
-		}
 		// Non-nil optional is special - we keep tt as the optional type, but use
 		// the elem value for the actual value below.
 		vv = vv.Elem()
diff --git a/vdl/target_base.go b/vdl/target_base.go
index 99840e4..74cdcd3 100644
--- a/vdl/target_base.go
+++ b/vdl/target_base.go
@@ -18,7 +18,7 @@
 	errFromString          = errors.New("method FromString invalid for this target type")
 	errFromEnumLabel       = errors.New("method FromEnumLabel invalid for this target type")
 	errFromTypeObject      = errors.New("method FromTypeObject invalid for this target type")
-	errFromNil             = errors.New("method FromNil invalid for this target type")
+	errFromZero            = errors.New("method FromZero invalid for this target type")
 	errStartList           = errors.New("method StartList invalid for this target type")
 	errFinishList          = errors.New("method FinishList invalid for this target type")
 	errStartSet            = errors.New("method StartSet invalid for this target type")
@@ -49,7 +49,7 @@
 func (*TargetBase) FromString(_ string, _ *Type) error           { return errFromString }
 func (*TargetBase) FromEnumLabel(_ string, _ *Type) error        { return errFromEnumLabel }
 func (*TargetBase) FromTypeObject(_ *Type) error                 { return errFromTypeObject }
-func (*TargetBase) FromNil(_ *Type) error                        { return errFromNil }
+func (*TargetBase) FromZero(_ *Type) error                       { return errFromZero }
 func (*TargetBase) StartList(_ *Type, _ int) (ListTarget, error) { return nil, errStartList }
 func (*TargetBase) FinishList(_ ListTarget) error                { return errFinishList }
 func (*TargetBase) StartSet(_ *Type, _ int) (SetTarget, error)   { return nil, errStartSet }
diff --git a/vdl/vdl.vdl.go b/vdl/vdl.vdl.go
index 4737f2e..38f5c64 100644
--- a/vdl/vdl.vdl.go
+++ b/vdl/vdl.vdl.go
@@ -110,11 +110,15 @@
 	case "RetryBackoff":
 		*t.Value = 3
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vdl.WireRetryCode", src)
+		return fmt.Errorf("label %s not in enum WireRetryCode", src)
 	}
 
 	return nil
 }
+func (t *WireRetryCodeTarget) FromZero(tt *Type) error {
+	*t.Value = WireRetryCodeNoRetry
+	return nil
+}
 
 // WireError is the wire representation for the built-in error type.  Errors and
 // exceptions in each programming environment are converted to this type to
@@ -137,77 +141,111 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Id), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Id == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Id), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("RetryCode")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("RetryCode")
 	if err != ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != ErrFieldNoExist {
 
-		if err := m.RetryCode.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.RetryCode == WireRetryCodeNoRetry)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.RetryCode.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Msg")
-	if err != ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.Msg), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("ParamList")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Msg")
 	if err != ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != ErrFieldNoExist {
 
-		listTarget10, err := fieldTarget9.StartList(tt.NonOptional().Field(3).Type, len(m.ParamList))
-		if err != nil {
+		var10 := (m.Msg == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Msg), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
-		for i, elem12 := range m.ParamList {
-			elemTarget11, err := listTarget10.StartElem(i)
+	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("ParamList")
+	if err != ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != ErrFieldNoExist {
+
+		var var13 bool
+		if len(m.ParamList) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget14, err := fieldTarget12.StartList(tt.NonOptional().Field(3).Type, len(m.ParamList))
 			if err != nil {
 				return err
 			}
-
-			if elem12 == nil {
-				if err := elemTarget11.FromNil(tt.NonOptional().Field(3).Type.Elem()); err != nil {
+			for i, elem16 := range m.ParamList {
+				elemTarget15, err := listTarget14.StartElem(i)
+				if err != nil {
 					return err
 				}
-			} else {
-				if err := FromValue(elemTarget11, elem12); err != nil {
+
+				if elem16 == nil {
+					if err := elemTarget15.FromZero(tt.NonOptional().Field(3).Type.Elem()); err != nil {
+						return err
+					}
+				} else {
+					if err := FromValue(elemTarget15, elem16); err != nil {
+						return err
+					}
+				}
+				if err := listTarget14.FinishElem(elemTarget15); err != nil {
 					return err
 				}
 			}
-			if err := listTarget10.FinishElem(elemTarget11); err != nil {
+			if err := fieldTarget12.FinishList(listTarget14); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget9.FinishList(listTarget10); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
@@ -267,6 +305,10 @@
 
 	return nil
 }
+func (t *WireErrorTarget) FromZero(tt *Type) error {
+	*t.Value = WireError{}
+	return nil
+}
 
 // []*Value
 type __VDLTarget1_list struct {
@@ -299,12 +341,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroWireRetryCode = WireRetryCodeNoRetry
-	__VDLZeroWireError     = WireError{}
-)
+func (t *__VDLTarget1_list) FromZero(tt *Type) error {
+	*t.Value = []*Value(nil)
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -325,6 +365,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	Register((*WireRetryCode)(nil))
diff --git a/vdlroot/init.go b/vdlroot/init.go
index 2fbfff9..aa557a4 100644
--- a/vdlroot/init.go
+++ b/vdlroot/init.go
@@ -8,6 +8,9 @@
 // This package contains import dependencies on all its sub-packages.  This is
 // meant as a convenient mechanism to pull in all standard vdl packages; import
 // vdlroot to ensure the types for all standard vdl packages are registered.
+//
+// To regenerate the .vdl.go files, specify VDLROOT when invoking the vdl tool.
+// (by default, prebuilt copies of the packages will be used).
 package vdlroot
 
 import (
diff --git a/vdlroot/math/.api b/vdlroot/math/.api
index 28f5f93..e0cb880 100644
--- a/vdlroot/math/.api
+++ b/vdlroot/math/.api
@@ -6,12 +6,14 @@
 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) FromZero(*vdl.Type) 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) FromZero(*vdl.Type) 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
diff --git a/vdlroot/math/math.vdl.go b/vdlroot/math/math.vdl.go
index 0cb3dbc..1c19c59 100644
--- a/vdlroot/math/math.vdl.go
+++ b/vdlroot/math/math.vdl.go
@@ -32,28 +32,43 @@
 	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
+
+		var4 := (m.Real == float32(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			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")
+	keyTarget5, fieldTarget6, 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
+
+		var7 := (m.Imag == float32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromFloat(float64(m.Imag), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -107,6 +122,16 @@
 	}
 	return nil
 }
+func (t *Complex64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = func() complex64 {
+		var native complex64
+		if err := vdl.Convert(&native, Complex64{}); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+	return nil
+}
 
 type Complex128 struct {
 	Real float64
@@ -123,28 +148,43 @@
 	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
+
+		var4 := (m.Real == float64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			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")
+	keyTarget5, fieldTarget6, 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
+
+		var7 := (m.Imag == float64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromFloat(float64(m.Imag), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -198,24 +238,16 @@
 	}
 	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 {
+func (t *Complex128Target) FromZero(tt *vdl.Type) error {
+	*t.Value = func() complex128 {
 		var native complex128
 		if err := vdl.Convert(&native, Complex128{}); err != nil {
 			panic(err)
 		}
 		return native
 	}()
-)
+	return nil
+}
 
 // Type-check native conversion functions.
 var (
@@ -244,6 +276,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register native type conversions first, so that vdl.TypeOf works.
 	vdl.RegisterNative(Complex128ToNative, Complex128FromNative)
diff --git a/vdlroot/signature/.api b/vdlroot/signature/.api
index 10fa35d..d16044c 100644
--- a/vdlroot/signature/.api
+++ b/vdlroot/signature/.api
@@ -11,12 +11,14 @@
 pkg signature, method (*Arg) MakeVDLTarget() vdl.Target
 pkg signature, method (*ArgTarget) FinishField(vdl.Target, vdl.Target) error
 pkg signature, method (*ArgTarget) FinishFields(vdl.FieldsTarget) error
+pkg signature, method (*ArgTarget) FromZero(*vdl.Type) error
 pkg signature, method (*ArgTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg signature, method (*ArgTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg signature, method (*Embed) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg signature, method (*Embed) MakeVDLTarget() vdl.Target
 pkg signature, method (*EmbedTarget) FinishField(vdl.Target, vdl.Target) error
 pkg signature, method (*EmbedTarget) FinishFields(vdl.FieldsTarget) error
+pkg signature, method (*EmbedTarget) FromZero(*vdl.Type) error
 pkg signature, method (*EmbedTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg signature, method (*EmbedTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg signature, method (*Interface) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -24,12 +26,14 @@
 pkg signature, method (*Interface) MakeVDLTarget() vdl.Target
 pkg signature, method (*InterfaceTarget) FinishField(vdl.Target, vdl.Target) error
 pkg signature, method (*InterfaceTarget) FinishFields(vdl.FieldsTarget) error
+pkg signature, method (*InterfaceTarget) FromZero(*vdl.Type) error
 pkg signature, method (*InterfaceTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg signature, method (*InterfaceTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg signature, method (*Method) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg signature, method (*Method) MakeVDLTarget() vdl.Target
 pkg signature, method (*MethodTarget) FinishField(vdl.Target, vdl.Target) error
 pkg signature, method (*MethodTarget) FinishFields(vdl.FieldsTarget) error
+pkg signature, method (*MethodTarget) FromZero(*vdl.Type) error
 pkg signature, method (*MethodTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg signature, method (*MethodTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg signature, method (SortableMethods) Len() int
diff --git a/vdlroot/signature/signature.vdl.go b/vdlroot/signature/signature.vdl.go
index 91fdbae..450680c 100644
--- a/vdlroot/signature/signature.vdl.go
+++ b/vdlroot/signature/signature.vdl.go
@@ -36,40 +36,63 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("PkgPath")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("PkgPath")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.PkgPath), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.PkgPath == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.PkgPath), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Doc")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Doc")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.Doc), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.Doc == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Doc), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -124,6 +147,10 @@
 
 	return nil
 }
+func (t *EmbedTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Embed{}
+	return nil
+}
 
 // Arg describes the signature of a single argument.
 type Arg struct {
@@ -142,44 +169,67 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Doc")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Doc")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Doc), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Doc == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Doc), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Type")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Type")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		typeObjectVal8 := m.Type
-		if typeObjectVal8 == nil {
-			typeObjectVal8 = vdl.AnyType
+
+		var10 := (m.Type == vdl.AnyType)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal11 := m.Type
+			if typeObjectVal11 == nil {
+				typeObjectVal11 = vdl.AnyType
+			}
+			if err := fieldTarget9.FromTypeObject(typeObjectVal11); err != nil {
+				return err
+			}
 		}
-		if err := fieldTarget7.FromTypeObject(typeObjectVal8); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -234,6 +284,12 @@
 
 	return nil
 }
+func (t *ArgTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Arg{
+		Type: vdl.AnyType,
+	}
+	return nil
+}
 
 // Method describes the signature of an interface method.
 type Method struct {
@@ -256,165 +312,217 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Doc")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Doc), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("InArgs")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Doc")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget8, err := fieldTarget7.StartList(tt.NonOptional().Field(2).Type, len(m.InArgs))
-		if err != nil {
-			return err
-		}
-		for i, elem10 := range m.InArgs {
-			elemTarget9, err := listTarget8.StartElem(i)
-			if err != nil {
-				return err
-			}
-
-			if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(2).Type.Elem()); err != nil {
-				return err
-			}
-			if err := listTarget8.FinishElem(elemTarget9); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget7.FinishList(listTarget8); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("OutArgs")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		listTarget13, err := fieldTarget12.StartList(tt.NonOptional().Field(3).Type, len(m.OutArgs))
-		if err != nil {
-			return err
-		}
-		for i, elem15 := range m.OutArgs {
-			elemTarget14, err := listTarget13.StartElem(i)
-			if err != nil {
-				return err
-			}
-
-			if err := elem15.FillVDLTarget(elemTarget14, tt.NonOptional().Field(3).Type.Elem()); err != nil {
-				return err
-			}
-			if err := listTarget13.FinishElem(elemTarget14); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget12.FinishList(listTarget13); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
-			return err
-		}
-	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("InStream")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		if m.InStream == nil {
-			if err := fieldTarget17.FromNil(tt.NonOptional().Field(4).Type); err != nil {
+		var7 := (m.Doc == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.InStream.FillVDLTarget(fieldTarget17, tt.NonOptional().Field(4).Type); err != nil {
+			if err := fieldTarget6.FromString(string(m.Doc), tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("OutStream")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("InArgs")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.OutStream == nil {
-			if err := fieldTarget19.FromNil(tt.NonOptional().Field(5).Type); err != nil {
+		var var10 bool
+		if len(m.InArgs) == 0 {
+			var10 = true
+		}
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.OutStream.FillVDLTarget(fieldTarget19, tt.NonOptional().Field(5).Type); err != nil {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(2).Type, len(m.InArgs))
+			if err != nil {
+				return err
+			}
+			for i, elem13 := range m.InArgs {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
+
+				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(2).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("Tags")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("OutArgs")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget22, err := fieldTarget21.StartList(tt.NonOptional().Field(6).Type, len(m.Tags))
-		if err != nil {
-			return err
+		var var16 bool
+		if len(m.OutArgs) == 0 {
+			var16 = true
 		}
-		for i, elem24 := range m.Tags {
-			elemTarget23, err := listTarget22.StartElem(i)
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget17, err := fieldTarget15.StartList(tt.NonOptional().Field(3).Type, len(m.OutArgs))
 			if err != nil {
 				return err
 			}
-
-			if elem24 == nil {
-				if err := elemTarget23.FromNil(tt.NonOptional().Field(6).Type.Elem()); err != nil {
+			for i, elem19 := range m.OutArgs {
+				elemTarget18, err := listTarget17.StartElem(i)
+				if err != nil {
 					return err
 				}
-			} else {
-				if err := vdl.FromValue(elemTarget23, elem24); err != nil {
+
+				if err := elem19.FillVDLTarget(elemTarget18, tt.NonOptional().Field(3).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget17.FinishElem(elemTarget18); err != nil {
 					return err
 				}
 			}
-			if err := listTarget22.FinishElem(elemTarget23); err != nil {
+			if err := fieldTarget15.FinishList(listTarget17); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget21.FinishList(listTarget22); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
+	}
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("InStream")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var22 := (m.InStream == (*Arg)(nil))
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.InStream.FillVDLTarget(fieldTarget21, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
 	}
+	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("OutStream")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var25 := (m.OutStream == (*Arg)(nil))
+		if var25 {
+			if err := fieldTarget24.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.OutStream.FillVDLTarget(fieldTarget24, tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
+			return err
+		}
+	}
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("Tags")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var28 bool
+		if len(m.Tags) == 0 {
+			var28 = true
+		}
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget29, err := fieldTarget27.StartList(tt.NonOptional().Field(6).Type, len(m.Tags))
+			if err != nil {
+				return err
+			}
+			for i, elem31 := range m.Tags {
+				elemTarget30, err := listTarget29.StartElem(i)
+				if err != nil {
+					return err
+				}
+
+				if elem31 == nil {
+					if err := elemTarget30.FromZero(tt.NonOptional().Field(6).Type.Elem()); err != nil {
+						return err
+					}
+				} else {
+					if err := vdl.FromValue(elemTarget30, elem31); err != nil {
+						return err
+					}
+				}
+				if err := listTarget29.FinishElem(elemTarget30); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget27.FinishList(listTarget29); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -486,6 +594,10 @@
 
 	return nil
 }
+func (t *MethodTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Method{}
+	return nil
+}
 
 // []Arg
 type __VDLTarget1_list struct {
@@ -519,6 +631,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Arg(nil)
+	return nil
+}
 
 // Optional Arg
 type __VDLTarget2_optional struct {
@@ -546,10 +662,8 @@
 
 	return nil
 }
-func (t *__VDLTarget2_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget2_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*Arg)(nil)
 	return nil
 }
 
@@ -584,6 +698,10 @@
 
 	return nil
 }
+func (t *__VDLTarget3_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []*vdl.Value(nil)
+	return nil
+}
 
 // Interface describes the signature of an interface.
 type Interface struct {
@@ -604,100 +722,145 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("PkgPath")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.PkgPath), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Doc")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.Doc), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Embeds")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("PkgPath")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget10, err := fieldTarget9.StartList(tt.NonOptional().Field(3).Type, len(m.Embeds))
-		if err != nil {
-			return err
-		}
-		for i, elem12 := range m.Embeds {
-			elemTarget11, err := listTarget10.StartElem(i)
-			if err != nil {
+		var7 := (m.PkgPath == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.PkgPath), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Doc")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
 
-			if err := elem12.FillVDLTarget(elemTarget11, tt.NonOptional().Field(3).Type.Elem()); err != nil {
+		var10 := (m.Doc == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
-			if err := listTarget10.FinishElem(elemTarget11); err != nil {
+		} else {
+			if err := fieldTarget9.FromString(string(m.Doc), tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget9.FinishList(listTarget10); err != nil {
-			return err
-		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("Methods")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Embeds")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget15, err := fieldTarget14.StartList(tt.NonOptional().Field(4).Type, len(m.Methods))
-		if err != nil {
-			return err
+		var var13 bool
+		if len(m.Embeds) == 0 {
+			var13 = true
 		}
-		for i, elem17 := range m.Methods {
-			elemTarget16, err := listTarget15.StartElem(i)
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget14, err := fieldTarget12.StartList(tt.NonOptional().Field(3).Type, len(m.Embeds))
 			if err != nil {
 				return err
 			}
+			for i, elem16 := range m.Embeds {
+				elemTarget15, err := listTarget14.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem17.FillVDLTarget(elemTarget16, tt.NonOptional().Field(4).Type.Elem()); err != nil {
-				return err
+				if err := elem16.FillVDLTarget(elemTarget15, tt.NonOptional().Field(3).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget14.FinishElem(elemTarget15); err != nil {
+					return err
+				}
 			}
-			if err := listTarget15.FinishElem(elemTarget16); err != nil {
+			if err := fieldTarget12.FinishList(listTarget14); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget14.FinishList(listTarget15); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
+	}
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("Methods")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var19 bool
+		if len(m.Methods) == 0 {
+			var19 = true
+		}
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget20, err := fieldTarget18.StartList(tt.NonOptional().Field(4).Type, len(m.Methods))
+			if err != nil {
+				return err
+			}
+			for i, elem22 := range m.Methods {
+				elemTarget21, err := listTarget20.StartElem(i)
+				if err != nil {
+					return err
+				}
+
+				if err := elem22.FillVDLTarget(elemTarget21, tt.NonOptional().Field(4).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget20.FinishElem(elemTarget21); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget18.FinishList(listTarget20); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
 	}
@@ -762,6 +925,10 @@
 
 	return nil
 }
+func (t *InterfaceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Interface{}
+	return nil
+}
 
 // []Embed
 type __VDLTarget4_list struct {
@@ -795,6 +962,10 @@
 
 	return nil
 }
+func (t *__VDLTarget4_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Embed(nil)
+	return nil
+}
 
 // []Method
 type __VDLTarget5_list struct {
@@ -828,16 +999,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroEmbed = Embed{}
-	__VDLZeroArg   = Arg{
-		Type: vdl.AnyType,
-	}
-	__VDLZeroMethod    = Method{}
-	__VDLZeroInterface = Interface{}
-)
+func (t *__VDLTarget5_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Method(nil)
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -858,6 +1023,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Embed)(nil))
diff --git a/vdlroot/time/.api b/vdlroot/time/.api
index 7f28419..290e852 100644
--- a/vdlroot/time/.api
+++ b/vdlroot/time/.api
@@ -9,18 +9,21 @@
 pkg time, method (*Duration) MakeVDLTarget() vdl.Target
 pkg time, method (*DurationTarget) FinishField(vdl.Target, vdl.Target) error
 pkg time, method (*DurationTarget) FinishFields(vdl.FieldsTarget) error
+pkg time, method (*DurationTarget) FromZero(*vdl.Type) error
 pkg time, method (*DurationTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg time, method (*DurationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg time, method (*Time) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg time, method (*Time) MakeVDLTarget() vdl.Target
 pkg time, method (*TimeTarget) FinishField(vdl.Target, vdl.Target) error
 pkg time, method (*TimeTarget) FinishFields(vdl.FieldsTarget) error
+pkg time, method (*TimeTarget) FromZero(*vdl.Type) error
 pkg time, method (*TimeTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg time, method (*TimeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg time, method (*WireDeadline) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg time, method (*WireDeadline) MakeVDLTarget() vdl.Target
 pkg time, method (*WireDeadlineTarget) FinishField(vdl.Target, vdl.Target) error
 pkg time, method (*WireDeadlineTarget) FinishFields(vdl.FieldsTarget) error
+pkg time, method (*WireDeadlineTarget) FromZero(*vdl.Type) error
 pkg time, method (*WireDeadlineTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg time, method (*WireDeadlineTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg time, method (Duration) Normalize() Duration
diff --git a/vdlroot/time/time.vdl.go b/vdlroot/time/time.vdl.go
index c2b310d..bb9083a 100644
--- a/vdlroot/time/time.vdl.go
+++ b/vdlroot/time/time.vdl.go
@@ -49,28 +49,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Seconds")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Seconds), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Seconds == int64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Seconds), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Nanos")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Nanos")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Nanos), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Nanos == int32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Nanos), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -124,6 +139,16 @@
 	}
 	return nil
 }
+func (t *DurationTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = func() time.Duration {
+		var native time.Duration
+		if err := vdl.Convert(&native, Duration{}); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+	return nil
+}
 
 // Time represents an absolute point in time with up to nanosecond precision.
 //
@@ -155,28 +180,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Seconds")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Seconds), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Seconds == int64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Seconds), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Nanos")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Nanos")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Nanos), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Nanos == int32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Nanos), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -230,6 +270,16 @@
 	}
 	return nil
 }
+func (t *TimeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = func() time.Time {
+		var native time.Time
+		if err := vdl.Convert(&native, Time{}); err != nil {
+			panic(err)
+		}
+		return native
+	}()
+	return nil
+}
 
 // WireDeadline represents the deadline for an operation, where the operation is
 // expected to finish before the deadline.  The intended usage is for a client
@@ -271,7 +321,6 @@
 	if err != nil {
 		return err
 	}
-
 	var wireValue2 Duration
 	if err := DurationFromNative(&wireValue2, m.FromNow); err != nil {
 		return err
@@ -283,22 +332,38 @@
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue2.FillVDLTarget(fieldTarget4, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var5 := (wireValue2 == Duration{})
+		if var5 {
+			if err := fieldTarget4.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue2.FillVDLTarget(fieldTarget4, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
 			return err
 		}
 	}
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("NoDeadline")
+	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("NoDeadline")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget6.FromBool(bool(m.NoDeadline), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var8 := (m.NoDeadline == false)
+		if var8 {
+			if err := fieldTarget7.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget7.FromBool(bool(m.NoDeadline), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
 			return err
 		}
 	}
@@ -352,31 +417,16 @@
 	}
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroDuration = func() time.Duration {
-		var native time.Duration
-		if err := vdl.Convert(&native, Duration{}); err != nil {
-			panic(err)
-		}
-		return native
-	}()
-	__VDLZeroTime = func() time.Time {
-		var native time.Time
-		if err := vdl.Convert(&native, Time{}); err != nil {
-			panic(err)
-		}
-		return native
-	}()
-	__VDLZeroWireDeadline = func() Deadline {
+func (t *WireDeadlineTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = func() Deadline {
 		var native Deadline
 		if err := vdl.Convert(&native, WireDeadline{}); err != nil {
 			panic(err)
 		}
 		return native
 	}()
-)
+	return nil
+}
 
 // Type-check native conversion functions.
 var (
@@ -407,6 +457,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register native type conversions first, so that vdl.TypeOf works.
 	vdl.RegisterNative(DurationToNative, DurationFromNative)
diff --git a/vdlroot/vdltool/.api b/vdlroot/vdltool/.api
index 9464c07..6a7bb18 100644
--- a/vdlroot/vdltool/.api
+++ b/vdlroot/vdltool/.api
@@ -6,40 +6,47 @@
 pkg vdltool, method (*Config) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*ConfigTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vdltool, method (*ConfigTarget) FinishFields(vdl.FieldsTarget) error
+pkg vdltool, method (*ConfigTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*ConfigTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vdltool, method (*ConfigTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vdltool, method (*GenLanguage) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vdltool, method (*GenLanguage) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*GenLanguage) Set(string) error
 pkg vdltool, method (*GenLanguageTarget) FromEnumLabel(string, *vdl.Type) error
+pkg vdltool, method (*GenLanguageTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*GoConfig) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vdltool, method (*GoConfig) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*GoConfigTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vdltool, method (*GoConfigTarget) FinishFields(vdl.FieldsTarget) error
+pkg vdltool, method (*GoConfigTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*GoConfigTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vdltool, method (*GoConfigTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vdltool, method (*GoImport) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vdltool, method (*GoImport) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*GoImportTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vdltool, method (*GoImportTarget) FinishFields(vdl.FieldsTarget) error
+pkg vdltool, method (*GoImportTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*GoImportTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vdltool, method (*GoImportTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vdltool, method (*GoType) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vdltool, method (*GoType) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*GoTypeTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vdltool, method (*GoTypeTarget) FinishFields(vdl.FieldsTarget) error
+pkg vdltool, method (*GoTypeTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*GoTypeTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vdltool, method (*GoTypeTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vdltool, method (*JavaConfig) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vdltool, method (*JavaConfig) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*JavaConfigTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vdltool, method (*JavaConfigTarget) FinishFields(vdl.FieldsTarget) error
+pkg vdltool, method (*JavaConfigTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*JavaConfigTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vdltool, method (*JavaConfigTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vdltool, method (*JavascriptConfig) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vdltool, method (*JavascriptConfig) MakeVDLTarget() vdl.Target
 pkg vdltool, method (*JavascriptConfigTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vdltool, method (*JavascriptConfigTarget) FinishFields(vdl.FieldsTarget) error
+pkg vdltool, method (*JavascriptConfigTarget) FromZero(*vdl.Type) error
 pkg vdltool, method (*JavascriptConfigTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vdltool, method (*JavascriptConfigTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vdltool, method (GenLanguage) String() string
diff --git a/vdlroot/vdltool/config_test.go b/vdlroot/vdltool/config_test.go
index 303117a..91fba4f 100644
--- a/vdlroot/vdltool/config_test.go
+++ b/vdlroot/vdltool/config_test.go
@@ -11,10 +11,13 @@
 	"v.io/v23/vdl"
 )
 
-// The Config's MakeVdlTarget is used to decode values in the vdl file.
-// Ensure that it decodes the values correctly. If this is not the case,
-// the vdl generator behaves incorrectly.
-func TestConfigMakeVdlTarget(t *testing.T) {
+// Ensure that a config can be loaded to a concrete value.
+// The reason this test is useful is to ensure that either the generated VdlConfig
+// target works correctly, or if it is not generated it is still possible to write
+// to the config using reflect.
+// If this is not the case (perhaps because of a broken vdltool.vdl.go),
+// unexpected behavior can result when generating files.
+func TestLoadingVdlConfig(t *testing.T) {
 	config := Config{
 		Go: GoConfig{
 			WireToNativeTypes: map[string]GoType{
@@ -56,7 +59,11 @@
 	configVdlValue := vdl.ValueOf(config)
 
 	var finalConfig Config
-	if err := vdl.FromValue(finalConfig.MakeVDLTarget(), configVdlValue); err != nil {
+	target, err := vdl.ReflectTarget(reflect.ValueOf(&finalConfig))
+	if err != nil {
+		t.Fatalf("Error creating reflect target: %v", err)
+	}
+	if err := vdl.FromValue(target, configVdlValue); err != nil {
 		t.Fatalf("error while using ConfigTarget: %v", err)
 	}
 
diff --git a/vdlroot/vdltool/vdltool.vdl.go b/vdlroot/vdltool/vdltool.vdl.go
index 34f7bc1..238c115 100644
--- a/vdlroot/vdltool/vdltool.vdl.go
+++ b/vdlroot/vdltool/vdltool.vdl.go
@@ -11,6 +11,7 @@
 
 import (
 	"fmt"
+	"reflect"
 	"v.io/v23/vdl"
 )
 
@@ -81,7 +82,7 @@
 }
 
 func (m *GenLanguage) MakeVDLTarget() vdl.Target {
-	return &GenLanguageTarget{Value: m}
+	return nil
 }
 
 type GenLanguageTarget struct {
@@ -102,11 +103,15 @@
 	case "Javascript":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum vdltool.GenLanguage", src)
+		return fmt.Errorf("label %s not in enum GenLanguage", src)
 	}
 
 	return nil
 }
+func (t *GenLanguageTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GenLanguageGo
+	return nil
+}
 
 // GoImport describes Go import information.
 type GoImport struct {
@@ -128,28 +133,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Path")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Path), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Path == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Path), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Name")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.Name), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Name == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.Name), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -160,13 +180,12 @@
 }
 
 func (m *GoImport) MakeVDLTarget() vdl.Target {
-	return &GoImportTarget{Value: m}
+	return nil
 }
 
 type GoImportTarget struct {
-	Value      *GoImport
-	pathTarget vdl.StringTarget
-	nameTarget vdl.StringTarget
+	Value *GoImport
+
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -181,12 +200,10 @@
 func (t *GoImportTarget) StartField(name string) (key, field vdl.Target, _ error) {
 	switch name {
 	case "Path":
-		t.pathTarget.Value = &t.Value.Path
-		target, err := &t.pathTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Path))
 		return nil, target, err
 	case "Name":
-		t.nameTarget.Value = &t.Value.Name
-		target, err := &t.nameTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Name))
 		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct vdltool.GoImport", name)
@@ -199,6 +216,10 @@
 
 	return nil
 }
+func (t *GoImportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GoImport{}
+	return nil
+}
 
 // GoType describes the Go type information associated with a VDL type.
 // See v.io/x/ref/lib/vdl/testdata/native for examples.
@@ -222,46 +243,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Type")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Type), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Type == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Type), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Imports")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Imports")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Imports))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Imports) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Imports {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Imports))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Imports {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -272,13 +311,12 @@
 }
 
 func (m *GoType) MakeVDLTarget() vdl.Target {
-	return &GoTypeTarget{Value: m}
+	return nil
 }
 
 type GoTypeTarget struct {
-	Value         *GoType
-	typeTarget    vdl.StringTarget
-	importsTarget __VDLTarget1_list
+	Value *GoType
+
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -293,12 +331,10 @@
 func (t *GoTypeTarget) StartField(name string) (key, field vdl.Target, _ error) {
 	switch name {
 	case "Type":
-		t.typeTarget.Value = &t.Value.Type
-		target, err := &t.typeTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Type))
 		return nil, target, err
 	case "Imports":
-		t.importsTarget.Value = &t.Value.Imports
-		target, err := &t.importsTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Imports))
 		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct vdltool.GoType", name)
@@ -311,37 +347,8 @@
 
 	return nil
 }
-
-// []GoImport
-type __VDLTarget1_list struct {
-	Value      *[]GoImport
-	elemTarget GoImportTarget
-	vdl.TargetBase
-	vdl.ListTargetBase
-}
-
-func (t *__VDLTarget1_list) StartList(tt *vdl.Type, len int) (vdl.ListTarget, error) {
-
-	if ttWant := vdl.TypeOf((*[]GoImport)(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	if cap(*t.Value) < len {
-		*t.Value = make([]GoImport, len)
-	} else {
-		*t.Value = (*t.Value)[:len]
-	}
-	return t, nil
-}
-func (t *__VDLTarget1_list) StartElem(index int) (elem vdl.Target, _ error) {
-	t.elemTarget.Value = &(*t.Value)[index]
-	target, err := &t.elemTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget1_list) FinishElem(elem vdl.Target) error {
-	return nil
-}
-func (t *__VDLTarget1_list) FinishList(elem vdl.ListTarget) error {
-
+func (t *GoTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GoType{}
 	return nil
 }
 
@@ -381,40 +388,50 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("WireToNativeTypes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.WireToNativeTypes))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.WireToNativeTypes) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.WireToNativeTypes {
-			keyTarget5, err := mapTarget4.StartKey()
-			if err != nil {
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
-			if err := keyTarget5.FromString(string(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			if err := value8.FillVDLTarget(valueTarget7, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.WireToNativeTypes))
+			if err != nil {
 				return err
 			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
+			for key7, value9 := range m.WireToNativeTypes {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromString(string(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
+				if err != nil {
+					return err
+				}
+
+				if err := value9.FillVDLTarget(valueTarget8, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
-		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
@@ -426,12 +443,12 @@
 }
 
 func (m *GoConfig) MakeVDLTarget() vdl.Target {
-	return &GoConfigTarget{Value: m}
+	return nil
 }
 
 type GoConfigTarget struct {
-	Value                   *GoConfig
-	wireToNativeTypesTarget __VDLTarget2_map
+	Value *GoConfig
+
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -446,8 +463,7 @@
 func (t *GoConfigTarget) StartField(name string) (key, field vdl.Target, _ error) {
 	switch name {
 	case "WireToNativeTypes":
-		t.wireToNativeTypesTarget.Value = &t.Value.WireToNativeTypes
-		target, err := &t.wireToNativeTypesTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.WireToNativeTypes))
 		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct vdltool.GoConfig", name)
@@ -460,47 +476,8 @@
 
 	return nil
 }
-
-// map[string]GoType
-type __VDLTarget2_map struct {
-	Value      *map[string]GoType
-	currKey    string
-	currElem   GoType
-	keyTarget  vdl.StringTarget
-	elemTarget GoTypeTarget
-	vdl.TargetBase
-	vdl.MapTargetBase
-}
-
-func (t *__VDLTarget2_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[string]GoType)(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[string]GoType)
-	return t, nil
-}
-func (t *__VDLTarget2_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = ""
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget2_map) FinishKeyStartField(key vdl.Target) (field vdl.Target, _ error) {
-	t.currElem = GoType{}
-	t.elemTarget.Value = &t.currElem
-	target, err := &t.elemTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget2_map) FinishField(key, field vdl.Target) error {
-	(*t.Value)[t.currKey] = t.currElem
-	return nil
-}
-func (t *__VDLTarget2_map) FinishMap(elem vdl.MapTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
+func (t *GoConfigTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = GoConfig{}
 	return nil
 }
 
@@ -550,76 +527,97 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("WireToNativeTypes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.WireToNativeTypes))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.WireToNativeTypes) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.WireToNativeTypes {
-			keyTarget5, err := mapTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.WireToNativeTypes))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget5.FromString(string(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
+			for key7, value9 := range m.WireToNativeTypes {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromString(string(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget8.FromString(string(value9), tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget7.FromString(string(value8), tt.NonOptional().Field(0).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("WireTypeRenames")
+	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("WireTypeRenames")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget11, err := fieldTarget10.StartMap(tt.NonOptional().Field(1).Type, len(m.WireTypeRenames))
-		if err != nil {
-			return err
+		var var12 bool
+		if len(m.WireTypeRenames) == 0 {
+			var12 = true
 		}
-		for key13, value15 := range m.WireTypeRenames {
-			keyTarget12, err := mapTarget11.StartKey()
+		if var12 {
+			if err := fieldTarget11.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget13, err := fieldTarget11.StartMap(tt.NonOptional().Field(1).Type, len(m.WireTypeRenames))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget12.FromString(string(key13), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
+			for key15, value17 := range m.WireTypeRenames {
+				keyTarget14, err := mapTarget13.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget14.FromString(string(key15), tt.NonOptional().Field(1).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget16, err := mapTarget13.FinishKeyStartField(keyTarget14)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget16.FromString(string(value17), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget13.FinishField(keyTarget14, valueTarget16); err != nil {
+					return err
+				}
 			}
-			valueTarget14, err := mapTarget11.FinishKeyStartField(keyTarget12)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget14.FromString(string(value15), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget11.FinishField(keyTarget12, valueTarget14); err != nil {
+			if err := fieldTarget11.FinishMap(mapTarget13); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget10.FinishMap(mapTarget11); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
 			return err
 		}
 	}
@@ -630,13 +628,12 @@
 }
 
 func (m *JavaConfig) MakeVDLTarget() vdl.Target {
-	return &JavaConfigTarget{Value: m}
+	return nil
 }
 
 type JavaConfigTarget struct {
-	Value                   *JavaConfig
-	wireToNativeTypesTarget __VDLTarget3_map
-	wireTypeRenamesTarget   __VDLTarget3_map
+	Value *JavaConfig
+
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -651,12 +648,10 @@
 func (t *JavaConfigTarget) StartField(name string) (key, field vdl.Target, _ error) {
 	switch name {
 	case "WireToNativeTypes":
-		t.wireToNativeTypesTarget.Value = &t.Value.WireToNativeTypes
-		target, err := &t.wireToNativeTypesTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.WireToNativeTypes))
 		return nil, target, err
 	case "WireTypeRenames":
-		t.wireTypeRenamesTarget.Value = &t.Value.WireTypeRenames
-		target, err := &t.wireTypeRenamesTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.WireTypeRenames))
 		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct vdltool.JavaConfig", name)
@@ -669,47 +664,8 @@
 
 	return nil
 }
-
-// map[string]string
-type __VDLTarget3_map struct {
-	Value      *map[string]string
-	currKey    string
-	currElem   string
-	keyTarget  vdl.StringTarget
-	elemTarget vdl.StringTarget
-	vdl.TargetBase
-	vdl.MapTargetBase
-}
-
-func (t *__VDLTarget3_map) StartMap(tt *vdl.Type, len int) (vdl.MapTarget, error) {
-
-	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[string]string)
-	return t, nil
-}
-func (t *__VDLTarget3_map) StartKey() (key vdl.Target, _ error) {
-	t.currKey = ""
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget3_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 *__VDLTarget3_map) FinishField(key, field vdl.Target) error {
-	(*t.Value)[t.currKey] = t.currElem
-	return nil
-}
-func (t *__VDLTarget3_map) FinishMap(elem vdl.MapTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
+func (t *JavaConfigTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = JavaConfig{}
 	return nil
 }
 
@@ -727,7 +683,6 @@
 	if err != nil {
 		return err
 	}
-
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -735,7 +690,7 @@
 }
 
 func (m *JavascriptConfig) MakeVDLTarget() vdl.Target {
-	return &JavascriptConfigTarget{Value: m}
+	return nil
 }
 
 type JavascriptConfigTarget struct {
@@ -764,6 +719,10 @@
 
 	return nil
 }
+func (t *JavascriptConfigTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = JavascriptConfig{}
+	return nil
+}
 
 // Config specifies the configuration for the vdl tool.  This is typically
 // represented in optional "vdl.config" files in each vdl source package.  Each
@@ -789,73 +748,122 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("GenLanguages")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		setTarget4, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.GenLanguages))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.GenLanguages) == 0 {
+			var4 = true
 		}
-		for key6 := range m.GenLanguages {
-			keyTarget5, err := setTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			setTarget5, err := fieldTarget3.StartSet(tt.NonOptional().Field(0).Type, len(m.GenLanguages))
 			if err != nil {
 				return err
 			}
+			for key7 := range m.GenLanguages {
+				keyTarget6, err := setTarget5.StartKey()
+				if err != nil {
+					return err
+				}
 
-			if err := key6.FillVDLTarget(keyTarget5, tt.NonOptional().Field(0).Type.Key()); err != nil {
+				if err := key7.FillVDLTarget(keyTarget6, tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				if err := setTarget5.FinishKey(keyTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishSet(setTarget5); err != nil {
 				return err
 			}
-			if err := setTarget4.FinishKey(keyTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishSet(setTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Go")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Go")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Go.FillVDLTarget(fieldTarget8, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var10 := true
+		var var11 bool
+		if len(m.Go.WireToNativeTypes) == 0 {
+			var11 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		var10 = var10 && var11
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Go.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Java")
+	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Java")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Java.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var14 := true
+		var var15 bool
+		if len(m.Java.WireToNativeTypes) == 0 {
+			var15 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		var14 = var14 && var15
+		var var16 bool
+		if len(m.Java.WireTypeRenames) == 0 {
+			var16 = true
+		}
+		var14 = var14 && var16
+		if var14 {
+			if err := fieldTarget13.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Java.FillVDLTarget(fieldTarget13, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
 			return err
 		}
 	}
-	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Javascript")
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("Javascript")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Javascript.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var19 := (m.Javascript == JavascriptConfig{})
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Javascript.FillVDLTarget(fieldTarget18, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
 	}
@@ -866,15 +874,12 @@
 }
 
 func (m *Config) MakeVDLTarget() vdl.Target {
-	return &ConfigTarget{Value: m}
+	return nil
 }
 
 type ConfigTarget struct {
-	Value              *Config
-	genLanguagesTarget __VDLTarget4_set
-	goTarget           GoConfigTarget
-	javaTarget         JavaConfigTarget
-	javascriptTarget   JavascriptConfigTarget
+	Value *Config
+
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -889,20 +894,16 @@
 func (t *ConfigTarget) StartField(name string) (key, field vdl.Target, _ error) {
 	switch name {
 	case "GenLanguages":
-		t.genLanguagesTarget.Value = &t.Value.GenLanguages
-		target, err := &t.genLanguagesTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.GenLanguages))
 		return nil, target, err
 	case "Go":
-		t.goTarget.Value = &t.Value.Go
-		target, err := &t.goTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Go))
 		return nil, target, err
 	case "Java":
-		t.javaTarget.Value = &t.Value.Java
-		target, err := &t.javaTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Java))
 		return nil, target, err
 	case "Javascript":
-		t.javascriptTarget.Value = &t.Value.Javascript
-		target, err := &t.javascriptTarget, error(nil)
+		target, err := vdl.ReflectTarget(reflect.ValueOf(&t.Value.Javascript))
 		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct vdltool.Config", name)
@@ -915,52 +916,10 @@
 
 	return nil
 }
-
-// map[GenLanguage]struct{}
-type __VDLTarget4_set struct {
-	Value     *map[GenLanguage]struct{}
-	currKey   GenLanguage
-	keyTarget GenLanguageTarget
-	vdl.TargetBase
-	vdl.SetTargetBase
-}
-
-func (t *__VDLTarget4_set) StartSet(tt *vdl.Type, len int) (vdl.SetTarget, error) {
-
-	if ttWant := vdl.TypeOf((*map[GenLanguage]struct{})(nil)); !vdl.Compatible(tt, ttWant) {
-		return nil, fmt.Errorf("type %v incompatible with %v", tt, ttWant)
-	}
-	*t.Value = make(map[GenLanguage]struct{})
-	return t, nil
-}
-func (t *__VDLTarget4_set) StartKey() (key vdl.Target, _ error) {
-	t.currKey = GenLanguageGo
-	t.keyTarget.Value = &t.currKey
-	target, err := &t.keyTarget, error(nil)
-	return target, err
-}
-func (t *__VDLTarget4_set) FinishKey(key vdl.Target) error {
-	(*t.Value)[t.currKey] = struct{}{}
+func (t *ConfigTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Config{}
 	return nil
 }
-func (t *__VDLTarget4_set) FinishSet(list vdl.SetTarget) error {
-	if len(*t.Value) == 0 {
-		*t.Value = nil
-	}
-
-	return nil
-}
-
-// Create zero values for each type.
-var (
-	__VDLZeroGenLanguage      = GenLanguageGo
-	__VDLZeroGoImport         = GoImport{}
-	__VDLZeroGoType           = GoType{}
-	__VDLZeroGoConfig         = GoConfig{}
-	__VDLZeroJavaConfig       = JavaConfig{}
-	__VDLZeroJavascriptConfig = JavascriptConfig{}
-	__VDLZeroConfig           = Config{}
-)
 
 var __VDLInitCalled bool
 
@@ -981,6 +940,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*GenLanguage)(nil))
diff --git a/verror/.api b/verror/.api
index a3255c0..1948860 100644
--- a/verror/.api
+++ b/verror/.api
@@ -40,7 +40,7 @@
 pkg verror, func WireToNative(vdl.WireError, *E) error
 pkg verror, func WithComponentName(*context.T, string) *context.T
 pkg verror, method (*ErrorTarget) FinishFields(vdl.FieldsTarget) error
-pkg verror, method (*ErrorTarget) FromNil(*vdl.Type) error
+pkg verror, method (*ErrorTarget) FromZero(*vdl.Type) error
 pkg verror, method (*ErrorTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg verror, method (ActionCode) RetryAction() ActionCode
 pkg verror, method (E) Error() string
diff --git a/verror/verror.go b/verror/verror.go
index 2285c8f..b4d8873 100644
--- a/verror/verror.go
+++ b/verror/verror.go
@@ -653,7 +653,7 @@
 	vdl.FieldsTargetBase
 }
 
-func (t *ErrorTarget) FromNil(tt *vdl.Type) error {
+func (t *ErrorTarget) FromZero(tt *vdl.Type) error {
 	if !vdl.Compatible(tt, vdl.ErrorType) {
 		return fmt.Errorf("Type %v incompatible with expected type %v", tt, vdl.ErrorType)
 	}
diff --git a/verror/verror.vdl.go b/verror/verror.vdl.go
index 28d8605..778b1f4 100644
--- a/verror/verror.vdl.go
+++ b/verror/verror.vdl.go
@@ -190,6 +190,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Set error format strings.
 	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrUnknown.ID), "{1:}{2:} Error{:_}")
diff --git a/vom/.api b/vom/.api
index dc12adf..d2134c9 100644
--- a/vom/.api
+++ b/vom/.api
@@ -62,18 +62,21 @@
 pkg vom, method (*ControlKind) MakeVDLTarget() vdl.Target
 pkg vom, method (*ControlKind) Set(string) error
 pkg vom, method (*ControlKindTarget) FromEnumLabel(string, *vdl.Type) error
+pkg vom, method (*ControlKindTarget) FromZero(*vdl.Type) error
 pkg vom, method (*Decoder) Decode(interface{}) error
 pkg vom, method (*Decoder) Ignore() error
 pkg vom, method (*DumpAtom) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vom, method (*DumpAtom) MakeVDLTarget() vdl.Target
 pkg vom, method (*DumpAtomTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vom, method (*DumpAtomTarget) FinishFields(vdl.FieldsTarget) error
+pkg vom, method (*DumpAtomTarget) FromZero(*vdl.Type) error
 pkg vom, method (*DumpAtomTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vom, method (*DumpAtomTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vom, method (*DumpKind) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vom, method (*DumpKind) MakeVDLTarget() vdl.Target
 pkg vom, method (*DumpKind) Set(string) error
 pkg vom, method (*DumpKindTarget) FromEnumLabel(string, *vdl.Type) error
+pkg vom, method (*DumpKindTarget) FromZero(*vdl.Type) error
 pkg vom, method (*Dumper) Close() error
 pkg vom, method (*Dumper) Flush() error
 pkg vom, method (*Dumper) Status()
@@ -81,6 +84,7 @@
 pkg vom, method (*Encoder) Encode(interface{}) error
 pkg vom, method (*PrimitiveTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vom, method (*PrimitiveTarget) FinishFields(vdl.FieldsTarget) error
+pkg vom, method (*PrimitiveTarget) FromZero(*vdl.Type) error
 pkg vom, method (*PrimitiveTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vom, method (*PrimitiveTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vom, method (*RawBytes) FillVDLTarget(vdl.Target, *vdl.Type) error
diff --git a/vom/decoder.go b/vom/decoder.go
index 44f9b03..6b229e0 100644
--- a/vom/decoder.go
+++ b/vom/decoder.go
@@ -284,7 +284,7 @@
 			return err
 		case ctrl == WireCtrlNil:
 			d.buf.Skip(1)
-			return target.FromNil(ttFrom)
+			return target.FromZero(ttFrom)
 		}
 		tt = tt.Elem()
 	}
@@ -478,7 +478,7 @@
 					case err != nil:
 						return err
 					default:
-						if err := vdl.FromValue(field, vdl.ZeroValue(ttfield.Type)); err != nil {
+						if err := field.FromZero(ttfield.Type); err != nil {
 							return err
 						}
 						if err := fieldsTarget.FinishField(key, field); err != nil {
@@ -540,7 +540,7 @@
 			return err
 		}
 		if elemType == nil {
-			return target.FromNil(tt)
+			return target.FromZero(tt)
 		}
 		if hax, ok := target.(hasRvHack); ok {
 			rv := hax.HackGetRv()
diff --git a/vom/dump.go b/vom/dump.go
index 1386eec..c270329 100644
--- a/vom/dump.go
+++ b/vom/dump.go
@@ -554,7 +554,7 @@
 		case ctrl == WireCtrlNil:
 			d.buf.Skip(1)
 			d.writeAtom(DumpKindControl, PrimitivePControl{ControlKindNil}, "%v is nil", ttFrom)
-			return target.FromNil(ttFrom)
+			return target.FromZero(ttFrom)
 		}
 		tt = tt.Elem()
 	}
@@ -835,7 +835,7 @@
 			return err
 		case ctrl == WireCtrlNil:
 			d.writeAtom(DumpKindControl, PrimitivePControl{ControlKindNil}, "any(nil)")
-			return target.FromNil(vdl.AnyType)
+			return target.FromZero(vdl.AnyType)
 		case ctrl != 0:
 			return verror.New(errUnexpectedControlByte, nil, ctrl)
 		default:
diff --git a/vom/encoder.go b/vom/encoder.go
index 982d374..3004643 100644
--- a/vom/encoder.go
+++ b/vom/encoder.go
@@ -325,6 +325,7 @@
 			return err
 		}
 	}
+
 	// Handle the type id for Any values.
 	switch {
 	case len(e.typeStack) == 0:
@@ -332,7 +333,7 @@
 		// is called, to handle positive and negative ids, and the message length.
 		e.pushType(tt)
 	case !fromNil && e.topType().Kind() == vdl.Any:
-		if e.isStructFieldValue() {
+		if e.isFieldValue() {
 			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 		}
 		if e.version == Version80 {
@@ -371,7 +372,7 @@
 	return e.typeStack[len(e.typeStack)-1].tt
 }
 
-func (e *encoder) isStructFieldValue() bool {
+func (e *encoder) isFieldValue() bool {
 	return e.topTypeFieldIndex() >= 0
 }
 
@@ -403,12 +404,11 @@
 	if err := e.prepareType(tt, boolAllowed...); err != nil {
 		return err
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if src == true || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-		} else {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if src == false && e.canIgnoreField(false) {
 			return nil
 		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
 	binaryEncodeBool(e.buf, src)
 	return nil
@@ -420,12 +420,11 @@
 	if err := e.prepareType(tt, uintAllowed...); 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 {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if src == 0 && e.canIgnoreField(false) {
 			return nil
 		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
 	if e.version == Version80 && tt.Kind() == vdl.Byte {
 		e.buf.WriteOneByte(byte(src))
@@ -444,12 +443,11 @@
 	if e.version == Version80 && tt.Kind() == vdl.Int8 {
 		return verror.New(errUnsupportedInVOMVersion, nil, "int8", e.version)
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if src != 0 || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-		} else {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if src == 0 && e.canIgnoreField(false) {
 			return nil
 		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
 	binaryEncodeInt(e.buf, src)
 	return nil
@@ -461,12 +459,11 @@
 	if err := e.prepareType(tt, floatAllowed...); 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 {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if src == 0 && e.canIgnoreField(false) {
 			return nil
 		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
 	binaryEncodeFloat(e.buf, src)
 	return nil
@@ -479,31 +476,25 @@
 	if err := e.prepareTypeHelper(tt, false); err != nil {
 		return err
 	}
-	if tt.Kind() == vdl.List {
-		if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-			if len(src) != 0 || !e.canIgnoreField(false) {
-				binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-			} else {
-				return nil
-			}
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if len(src) == 0 && e.canIgnoreField(false) {
+			return nil
 		}
-		binaryEncodeUint(e.buf, uint64(len(src)))
-	} else {
-		// We always encode array length to 0.
-		if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-			var orData byte
-			for _, b := range src {
-				orData |= b
-			}
-			if orData != 0 || !e.canIgnoreField(false) {
-				binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-			} else {
-				return nil
-			}
-		}
-		binaryEncodeUint(e.buf, uint64(0))
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
-
+	switch tt.Kind() {
+	case vdl.List:
+		binaryEncodeUint(e.buf, uint64(len(src)))
+	case vdl.Array:
+		// Special-case the array length to always encode 0.  We
+		// already have the length in the type, so technically
+		// we don't need to send any length for arrays.  But if we
+		// don't encode a length, we'll be encoding the first array
+		// elem directly, so we won't be able to encode any flags.
+		// E.g. we won't be able to encode ?[3]byte.  So we encode
+		// a dummy 0 length.
+		binaryEncodeUint(e.buf, 0)
+	}
 	e.buf.Write(src)
 	return nil
 }
@@ -514,12 +505,11 @@
 	if err := e.prepareType(tt, stringAllowed...); err != nil {
 		return err
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if len(src) != 0 || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-		} else {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if src == "" && e.canIgnoreField(false) {
 			return nil
 		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
 	binaryEncodeString(e.buf, src)
 	return nil
@@ -535,12 +525,11 @@
 	if index < 0 {
 		return verror.New(errLabelNotInType, nil, src, tt)
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if index != 0 || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-		} else {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if index == 0 && e.canIgnoreField(false) {
 			return nil
 		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
 	binaryEncodeUint(e.buf, uint64(index))
 	return nil
@@ -557,8 +546,8 @@
 	if err != nil {
 		return err
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if src.Kind() == vdl.Any && e.canIgnoreField(true) {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if src == vdl.AnyType && e.canIgnoreField(false) {
 			return nil
 		}
 		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
@@ -572,9 +561,92 @@
 	return nil
 }
 
+func (e *encoder) FromZero(tt *vdl.Type) error {
+	// TODO(bprosnitz) Some cases such as unions, struct-valued struct fields and arrays aren't encoded as
+	// 0 and the full object is outputted. Fix this.
+	switch tt.Kind() {
+	case vdl.Bool:
+		return e.FromBool(false, tt)
+	case vdl.Byte, vdl.Uint16, vdl.Uint32, vdl.Uint64:
+		return e.FromUint(0, tt)
+	case vdl.Int8, vdl.Int16, vdl.Int32, vdl.Int64:
+		return e.FromInt(0, tt)
+	case vdl.Float32, vdl.Float64:
+		return e.FromFloat(0, tt)
+	case vdl.String:
+		return e.FromString("", tt)
+	case vdl.Enum:
+		return e.FromEnumLabel(tt.EnumLabel(0), tt)
+	case vdl.TypeObject:
+		return e.FromTypeObject(vdl.AnyType)
+	case vdl.Any, vdl.Optional:
+		return e.fromNil(tt)
+	case vdl.List:
+		lt, err := e.StartList(tt, 0)
+		if err != nil {
+			return nil
+		}
+		return e.FinishList(lt)
+	case vdl.Array:
+		lt, err := e.StartList(tt, tt.Len())
+		if err != nil {
+			return nil
+		}
+		for i := 0; i < tt.Len(); i++ {
+			t, err := lt.StartElem(i)
+			if err != nil {
+				return err
+			}
+			if err := t.FromZero(tt.Elem()); err != nil {
+				return err
+			}
+			if err := lt.FinishElem(t); err != nil {
+				return err
+			}
+		}
+		return e.FinishList(lt)
+	case vdl.Map:
+		mt, err := e.StartMap(tt, 0)
+		if err != nil {
+			return nil
+		}
+		return e.FinishMap(mt)
+	case vdl.Set:
+		st, err := e.StartSet(tt, 0)
+		if err != nil {
+			return nil
+		}
+		return e.FinishSet(st)
+	case vdl.Struct:
+		ft, err := e.StartFields(tt)
+		if err != nil {
+			return err
+		}
+		return e.FinishFields(ft)
+	case vdl.Union:
+		ft, err := e.StartFields(tt)
+		if err != nil {
+			return err
+		}
+		key, field, err := ft.StartField(tt.Field(0).Name)
+		if err != nil {
+			return err
+		}
+		if err := field.FromZero(tt.Field(0).Type); err != nil {
+			return err
+		}
+		if err := ft.FinishField(key, field); err != nil {
+			return err
+		}
+		return e.FinishFields(ft)
+	default:
+		return fmt.Errorf("unknown kind: %v", tt.Kind())
+	}
+}
+
 var nilAllowed = []vdl.Kind{vdl.Any, vdl.Optional}
 
-func (e *encoder) FromNil(tt *vdl.Type) error {
+func (e *encoder) fromNil(tt *vdl.Type) error {
 	if !tt.CanBeNil() {
 		return errTypeMismatch(tt, nilAllowed...)
 	}
@@ -583,7 +655,7 @@
 	}
 	switch tt.Kind() {
 	case vdl.Optional:
-		if e.isStructFieldValue() {
+		if e.isFieldValue() {
 			if !e.canIgnoreField(true) && e.topType().Kind() != vdl.Any {
 				binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 				e.buf.WriteOneByte(WireCtrlNil)
@@ -592,7 +664,7 @@
 			e.buf.WriteOneByte(WireCtrlNil)
 		}
 	case vdl.Any:
-		if e.isStructFieldValue() {
+		if e.isFieldValue() {
 			if !e.canIgnoreField(true) && e.topType().Kind() != vdl.Any {
 				e.buf.WriteOneByte(WireCtrlNil)
 			}
@@ -609,25 +681,18 @@
 	if err := e.prepareType(tt, listAllowed...); err != nil {
 		return nil, err
 	}
-	if tt.Kind() == vdl.List {
-		if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-			if len != 0 || !e.canIgnoreField(false) {
-				binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-				binaryEncodeUint(e.buf, uint64(len))
-			}
-		} else {
-			binaryEncodeUint(e.buf, uint64(len))
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if len == 0 && e.canIgnoreField(false) {
+			e.pushType(tt)
+			return e, nil
 		}
-	} else {
-		// We always encode array length to 0.
-		if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-			if len != 0 || !e.canIgnoreField(false) {
-				binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-				binaryEncodeUint(e.buf, uint64(0))
-			}
-		} else {
-			binaryEncodeUint(e.buf, uint64(0))
-		}
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
+	}
+	switch tt.Kind() {
+	case vdl.List:
+		binaryEncodeUint(e.buf, uint64(len))
+	case vdl.Array:
+		binaryEncodeUint(e.buf, uint64(0))
 	}
 	e.pushType(tt)
 	return e, nil
@@ -639,14 +704,14 @@
 	if err := e.prepareType(tt, setAllowed...); err != nil {
 		return nil, err
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if len != 0 || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-			binaryEncodeUint(e.buf, uint64(len))
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if len == 0 && e.canIgnoreField(false) {
+			e.pushType(tt)
+			return e, nil
 		}
-	} else {
-		binaryEncodeUint(e.buf, uint64(len))
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
+	binaryEncodeUint(e.buf, uint64(len))
 	e.pushType(tt)
 	return e, nil
 }
@@ -657,14 +722,14 @@
 	if err := e.prepareType(tt, mapAllowed...); err != nil {
 		return nil, err
 	}
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
-		if len != 0 || !e.canIgnoreField(false) {
-			binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
-			binaryEncodeUint(e.buf, uint64(len))
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
+		if len == 0 && e.canIgnoreField(false) {
+			e.pushType(tt)
+			return e, nil
 		}
-	} else {
-		binaryEncodeUint(e.buf, uint64(len))
+		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
+	binaryEncodeUint(e.buf, uint64(len))
 	e.pushType(tt)
 	return e, nil
 }
@@ -672,7 +737,7 @@
 var fieldsAllowed = []vdl.Kind{vdl.Struct, vdl.Union}
 
 func (e *encoder) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
-	if e.isStructFieldValue() && e.topType().Kind() != vdl.Any {
+	if e.isFieldValue() && e.topType().Kind() != vdl.Any {
 		// TODO(bprosnitz) We shouldn't need to write the struct field index for fields that are empty structs/unions
 		binaryEncodeUint(e.buf, uint64(e.topTypeFieldIndex()))
 	}
diff --git a/vom/internal/internal.vdl.go b/vom/internal/internal.vdl.go
index 14959c3..39b0d1e 100644
--- a/vom/internal/internal.vdl.go
+++ b/vom/internal/internal.vdl.go
@@ -34,55 +34,86 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Street")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Street), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Street == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Street), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("City")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("City")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.City), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.City == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.City), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("State")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("State")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.State), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Zip")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromString(string(m.Zip), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.State == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.State), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Zip")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.Zip == "")
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromString(string(m.Zip), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -139,6 +170,10 @@
 
 	return nil
 }
+func (t *AddressInfoTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AddressInfo{}
+	return nil
+}
 
 type CreditAgency int
 
@@ -222,11 +257,15 @@
 	case "TransUnion":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom/internal.CreditAgency", src)
+		return fmt.Errorf("label %s not in enum CreditAgency", src)
 	}
 
 	return nil
 }
+func (t *CreditAgencyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CreditAgencyEquifax
+	return nil
+}
 
 type ExperianRating int
 
@@ -302,11 +341,15 @@
 	case "Bad":
 		*t.Value = 1
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom/internal.ExperianRating", src)
+		return fmt.Errorf("label %s not in enum ExperianRating", src)
 	}
 
 	return nil
 }
+func (t *ExperianRatingTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ExperianRatingGood
+	return nil
+}
 
 type EquifaxCreditReport struct {
 	Rating byte
@@ -322,14 +365,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromUint(uint64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Rating == byte(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromUint(uint64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -376,6 +426,10 @@
 
 	return nil
 }
+func (t *EquifaxCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = EquifaxCreditReport{}
+	return nil
+}
 
 type ExperianCreditReport struct {
 	Rating ExperianRating
@@ -391,15 +445,22 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Rating.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Rating == ExperianRatingGood)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Rating.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -446,6 +507,10 @@
 
 	return nil
 }
+func (t *ExperianCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ExperianCreditReport{}
+	return nil
+}
 
 type TransUnionCreditReport struct {
 	Rating int16
@@ -461,14 +526,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Rating")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Rating == int16(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Rating), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -515,6 +587,10 @@
 
 	return nil
 }
+func (t *TransUnionCreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TransUnionCreditReport{}
+	return nil
+}
 
 type (
 	// AgencyReport represents any single field of the AgencyReport union type.
@@ -690,6 +766,10 @@
 
 	return nil
 }
+func (t *AgencyReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AgencyReport(AgencyReportEquifaxReport{})
+	return nil
+}
 
 type agencyReportTargetFactory struct{}
 
@@ -715,34 +795,54 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Agency")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Agency.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Agency == CreditAgencyEquifax)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Agency.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Report")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Report")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue6 := m.Report
-		if unionValue6 == nil {
-			unionValue6 = AgencyReportEquifaxReport{}
+		var var7 bool
+		if field, ok := m.Report.(AgencyReportEquifaxReport); ok {
+
+			var8 := (field.Value == EquifaxCreditReport{})
+			var7 = var8
 		}
-		if err := unionValue6.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue9 := m.Report
+			if unionValue9 == nil {
+				unionValue9 = AgencyReportEquifaxReport{}
+			}
+			if err := unionValue9.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -792,6 +892,12 @@
 
 	return nil
 }
+func (t *CreditReportTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = CreditReport{
+		Report: AgencyReportEquifaxReport{},
+	}
+	return nil
+}
 
 type Customer struct {
 	Name    string
@@ -811,66 +917,107 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Id")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromInt(int64(m.Id), tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Active")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromBool(bool(m.Active), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Address")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Address.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
+		var7 := (m.Id == int64(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromInt(int64(m.Id), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Active")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.Active == false)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromBool(bool(m.Active), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("Credit")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Address")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Credit.FillVDLTarget(fieldTarget11, tt.NonOptional().Field(4).Type); err != nil {
+		var13 := (m.Address == AddressInfo{})
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Address.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Credit")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var16 := (m.Credit == CreditReport{
+			Report: AgencyReportEquifaxReport{},
+		})
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Credit.FillVDLTarget(fieldTarget15, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
@@ -935,25 +1082,14 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroAddressInfo            = AddressInfo{}
-	__VDLZeroCreditAgency           = CreditAgencyEquifax
-	__VDLZeroExperianRating         = ExperianRatingGood
-	__VDLZeroEquifaxCreditReport    = EquifaxCreditReport{}
-	__VDLZeroExperianCreditReport   = ExperianCreditReport{}
-	__VDLZeroTransUnionCreditReport = TransUnionCreditReport{}
-	__VDLZeroAgencyReport           = AgencyReport(AgencyReportEquifaxReport{})
-	__VDLZeroCreditReport           = CreditReport{
-		Report: AgencyReportEquifaxReport{},
-	}
-	__VDLZeroCustomer = Customer{
+func (t *CustomerTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Customer{
 		Credit: CreditReport{
 			Report: AgencyReportEquifaxReport{},
 		},
 	}
-)
+	return nil
+}
 
 var __VDLInitCalled bool
 
@@ -974,6 +1110,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*AddressInfo)(nil))
diff --git a/vom/raw_bytes.go b/vom/raw_bytes.go
index 32fe6c3..f1c448a 100644
--- a/vom/raw_bytes.go
+++ b/vom/raw_bytes.go
@@ -225,11 +225,12 @@
 	return r.finish()
 }
 
-func (r *rbTarget) FromNil(tt *vdl.Type) error {
+func (r *rbTarget) FromZero(tt *vdl.Type) error {
+	// TODO(bprosnitz) This is likely slow, look into optimizing it
 	if err := r.start(tt); err != nil {
 		return err
 	}
-	if err := r.enc.FromNil(tt); err != nil {
+	if err := vdl.FromValue(r.enc, vdl.ZeroValue(tt)); err != nil {
 		return err
 	}
 	return r.finish()
diff --git a/vom/testdata/data80/data80.vdl.go b/vom/testdata/data80/data80.vdl.go
index 1ffc653..2d22a45 100644
--- a/vom/testdata/data80/data80.vdl.go
+++ b/vom/testdata/data80/data80.vdl.go
@@ -1550,6 +1550,7 @@
 			B: true,
 			C: true,
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "805327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e15207000101010201e1",
@@ -1561,6 +1562,7 @@
 		Name: "types.MStruct{}",
 		Value: vdl.ValueOf(types.MStruct{
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "805327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e15201e1",
@@ -1573,6 +1575,7 @@
 		Value: vdl.ValueOf(types.MStruct{
 			D: &types.NStruct{},
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "805327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e1520303e1e1",
@@ -1589,6 +1592,7 @@
 				C: 123,
 			},
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "805327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e1520d030001010361626302fff6e1e1",
@@ -2054,8 +2058,10 @@
 		HexValue:   "5203020f01",
 	},
 	{
-		Name:       "types.StructAny{}",
-		Value:      vdl.ValueOf(types.StructAny{}),
+		Name: "types.StructAny{}",
+		Value: vdl.ValueOf(types.StructAny{
+			Any: vdl.ZeroValue(vdl.AnyType),
+		}),
 		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
 		Hex:        "805133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e15201e1",
 		HexVersion: "80",
@@ -2318,8 +2324,10 @@
 		HexValue:   "5201e0",
 	},
 	{
-		Name:       "?types.StructAny{}",
-		Value:      vdl.ValueOf(&types.StructAny{}),
+		Name: "?types.StructAny{}",
+		Value: vdl.ValueOf(&types.StructAny{
+			Any: vdl.ZeroValue(vdl.AnyType),
+		}),
 		TypeString: "?v.io/v23/vom/testdata/types.StructAny struct{Any any}",
 		Hex:        "805333060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1510408012ae15201e1",
 		HexVersion: "80",
@@ -2612,6 +2620,7 @@
 	},
 	{
 		Name:       "any(nil)",
+		Value:      vdl.ZeroValue(vdl.AnyType),
 		TypeString: "any",
 		Hex:        "801e01e0",
 		HexVersion: "80",
@@ -3351,6 +3360,7 @@
 				}),
 				vdl.ValueOf(types.AdeStruct{
 					A: true,
+					D: vdl.ZeroValue(vdl.AnyType),
 					E: vdl.AnyType,
 				}),
 				vdl.ValueOf(types.NStruct{
@@ -3484,6 +3494,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/vom/testdata/data81/data81.vdl.go b/vom/testdata/data81/data81.vdl.go
index cdca683..c929ad4 100644
--- a/vom/testdata/data81/data81.vdl.go
+++ b/vom/testdata/data81/data81.vdl.go
@@ -1550,6 +1550,7 @@
 			B: true,
 			C: true,
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "815327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e152000007000101010201e1",
@@ -1561,6 +1562,7 @@
 		Name: "types.MStruct{}",
 		Value: vdl.ValueOf(types.MStruct{
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "815327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e152000001e1",
@@ -1573,6 +1575,7 @@
 		Value: vdl.ValueOf(types.MStruct{
 			D: &types.NStruct{},
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "815327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e15200000303e1e1",
@@ -1589,6 +1592,7 @@
 				C: 123,
 			},
 			E: vdl.AnyType,
+			F: vdl.ZeroValue(vdl.AnyType),
 		}),
 		TypeString: "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}",
 		Hex:        "815327000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e426f6f6c0101e15527000021762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d426f6f6c0101e1593b060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4e53747275637401030001410101e10001420103e10001430109e1e1570408012de1514d060023762e696f2f7632332f766f6d2f74657374646174612f74797065732e4d53747275637401060001410101e1000142012ae1000143012be1000144012ce1000145010ee1000146010fe1e15200000d030001010361626302fff6e1e1",
@@ -2054,8 +2058,10 @@
 		HexValue:   "52020f0103020001",
 	},
 	{
-		Name:       "types.StructAny{}",
-		Value:      vdl.ValueOf(types.StructAny{}),
+		Name: "types.StructAny{}",
+		Value: vdl.ValueOf(types.StructAny{
+			Any: vdl.ZeroValue(vdl.AnyType),
+		}),
 		TypeString: "v.io/v23/vom/testdata/types.StructAny struct{Any any}",
 		Hex:        "815133060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e152000001e1",
 		HexVersion: "81",
@@ -2318,8 +2324,10 @@
 		HexValue:   "52000001e0",
 	},
 	{
-		Name:       "?types.StructAny{}",
-		Value:      vdl.ValueOf(&types.StructAny{}),
+		Name: "?types.StructAny{}",
+		Value: vdl.ValueOf(&types.StructAny{
+			Any: vdl.ZeroValue(vdl.AnyType),
+		}),
 		TypeString: "?v.io/v23/vom/testdata/types.StructAny struct{Any any}",
 		Hex:        "815333060025762e696f2f7632332f766f6d2f74657374646174612f74797065732e537472756374416e7901010003416e79010fe1e1510408012ae152000001e1",
 		HexVersion: "81",
@@ -2612,6 +2620,7 @@
 	},
 	{
 		Name:       "any(nil)",
+		Value:      vdl.ZeroValue(vdl.AnyType),
 		TypeString: "any",
 		Hex:        "811e000001e0",
 		HexVersion: "81",
@@ -3451,6 +3460,7 @@
 				}),
 				vdl.ValueOf(types.AdeStruct{
 					A: true,
+					D: vdl.ZeroValue(vdl.AnyType),
 					E: vdl.AnyType,
 				}),
 				vdl.ValueOf(types.NStruct{
@@ -3584,6 +3594,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	return struct{}{}
 }
diff --git a/vom/testdata/types/types.vdl.go b/vom/testdata/types/types.vdl.go
index 04062e9..07dfe0c 100644
--- a/vom/testdata/types/types.vdl.go
+++ b/vom/testdata/types/types.vdl.go
@@ -40,98 +40,153 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Value")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Value")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Value == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.Value == vdl.ZeroValue(vdl.AnyType))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := vdl.FromValue(fieldTarget5, m.Value); err != nil {
-				return err
+
+			if m.Value == nil {
+				if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+					return err
+				}
+			} else {
+				if err := vdl.FromValue(fieldTarget6, m.Value); err != nil {
+					return err
+				}
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("TypeString")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("TypeString")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.TypeString), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Hex")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromString(string(m.Hex), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.TypeString == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.TypeString), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("HexVersion")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Hex")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget11.FromString(string(m.HexVersion), tt.NonOptional().Field(4).Type); err != nil {
-			return err
+
+		var13 := (m.Hex == "")
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromString(string(m.Hex), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("HexType")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("HexVersion")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget13.FromString(string(m.HexType), tt.NonOptional().Field(5).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
-			return err
-		}
-	}
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("HexValue")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget15.FromString(string(m.HexValue), tt.NonOptional().Field(6).Type); err != nil {
-			return err
+
+		var16 := (m.HexVersion == "")
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromString(string(m.HexVersion), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("HexType")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var19 := (m.HexType == "")
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget18.FromString(string(m.HexType), tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
+			return err
+		}
+	}
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("HexValue")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var22 := (m.HexValue == "")
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget21.FromString(string(m.HexValue), tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -202,6 +257,12 @@
 
 	return nil
 }
+func (t *TestCaseTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TestCase{
+		Value: vdl.ZeroValue(vdl.AnyType),
+	}
+	return nil
+}
 
 // vomdata config types
 type ConvertGroup struct {
@@ -220,68 +281,94 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("PrimaryType")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		typeObjectVal6 := m.PrimaryType
-		if typeObjectVal6 == nil {
-			typeObjectVal6 = vdl.AnyType
-		}
-		if err := fieldTarget5.FromTypeObject(typeObjectVal6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Values")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("PrimaryType")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget9, err := fieldTarget8.StartList(tt.NonOptional().Field(2).Type, len(m.Values))
-		if err != nil {
+		var7 := (m.PrimaryType == vdl.AnyType)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal8 := m.PrimaryType
+			if typeObjectVal8 == nil {
+				typeObjectVal8 = vdl.AnyType
+			}
+			if err := fieldTarget6.FromTypeObject(typeObjectVal8); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
-		for i, elem11 := range m.Values {
-			elemTarget10, err := listTarget9.StartElem(i)
+	}
+	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Values")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var11 bool
+		if len(m.Values) == 0 {
+			var11 = true
+		}
+		if var11 {
+			if err := fieldTarget10.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget12, err := fieldTarget10.StartList(tt.NonOptional().Field(2).Type, len(m.Values))
 			if err != nil {
 				return err
 			}
-
-			if elem11 == nil {
-				if err := elemTarget10.FromNil(tt.NonOptional().Field(2).Type.Elem()); err != nil {
+			for i, elem14 := range m.Values {
+				elemTarget13, err := listTarget12.StartElem(i)
+				if err != nil {
 					return err
 				}
-			} else {
-				if err := vdl.FromValue(elemTarget10, elem11); err != nil {
+
+				if elem14 == nil {
+					if err := elemTarget13.FromZero(tt.NonOptional().Field(2).Type.Elem()); err != nil {
+						return err
+					}
+				} else {
+					if err := vdl.FromValue(elemTarget13, elem14); err != nil {
+						return err
+					}
+				}
+				if err := listTarget12.FinishElem(elemTarget13); err != nil {
 					return err
 				}
 			}
-			if err := listTarget9.FinishElem(elemTarget10); err != nil {
+			if err := fieldTarget10.FinishList(listTarget12); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget8.FinishList(listTarget9); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
 			return err
 		}
 	}
@@ -336,6 +423,12 @@
 
 	return nil
 }
+func (t *ConvertGroupTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ConvertGroup{
+		PrimaryType: vdl.AnyType,
+	}
+	return nil
+}
 
 // []*vdl.Value
 type __VDLTarget1_list struct {
@@ -368,6 +461,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []*vdl.Value(nil)
+	return nil
+}
 
 type VomdataStruct struct {
 	EncodeDecodeData map[byte][]*vdl.Value // map from min required VOM version to test values
@@ -385,175 +482,207 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("EncodeDecodeData")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.EncodeDecodeData))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.EncodeDecodeData) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.EncodeDecodeData {
-			keyTarget5, err := mapTarget4.StartKey()
-			if err != nil {
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
-			if err := keyTarget5.FromUint(uint64(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			listTarget9, err := valueTarget7.StartList(tt.NonOptional().Field(0).Type.Elem(), len(value8))
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.EncodeDecodeData))
 			if err != nil {
 				return err
 			}
-			for i, elem11 := range value8 {
-				elemTarget10, err := listTarget9.StartElem(i)
+			for key7, value9 := range m.EncodeDecodeData {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromUint(uint64(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
 				if err != nil {
 					return err
 				}
 
-				if elem11 == nil {
-					if err := elemTarget10.FromNil(tt.NonOptional().Field(0).Type.Elem().Elem()); err != nil {
+				listTarget10, err := valueTarget8.StartList(tt.NonOptional().Field(0).Type.Elem(), len(value9))
+				if err != nil {
+					return err
+				}
+				for i, elem12 := range value9 {
+					elemTarget11, err := listTarget10.StartElem(i)
+					if err != nil {
 						return err
 					}
-				} else {
-					if err := vdl.FromValue(elemTarget10, elem11); err != nil {
+
+					if elem12 == nil {
+						if err := elemTarget11.FromZero(tt.NonOptional().Field(0).Type.Elem().Elem()); err != nil {
+							return err
+						}
+					} else {
+						if err := vdl.FromValue(elemTarget11, elem12); err != nil {
+							return err
+						}
+					}
+					if err := listTarget10.FinishElem(elemTarget11); err != nil {
 						return err
 					}
 				}
-				if err := listTarget9.FinishElem(elemTarget10); err != nil {
+				if err := valueTarget8.FinishList(listTarget10); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget7.FinishList(listTarget9); err != nil {
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("CompatData")
+	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("CompatData")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget14, err := fieldTarget13.StartMap(tt.NonOptional().Field(1).Type, len(m.CompatData))
-		if err != nil {
-			return err
+		var var15 bool
+		if len(m.CompatData) == 0 {
+			var15 = true
 		}
-		for key16, value18 := range m.CompatData {
-			keyTarget15, err := mapTarget14.StartKey()
-			if err != nil {
+		if var15 {
+			if err := fieldTarget14.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
-			if err := keyTarget15.FromString(string(key16), tt.NonOptional().Field(1).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget17, err := mapTarget14.FinishKeyStartField(keyTarget15)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			listTarget19, err := valueTarget17.StartList(tt.NonOptional().Field(1).Type.Elem(), len(value18))
+			mapTarget16, err := fieldTarget14.StartMap(tt.NonOptional().Field(1).Type, len(m.CompatData))
 			if err != nil {
 				return err
 			}
-			for i, elem21 := range value18 {
-				elemTarget20, err := listTarget19.StartElem(i)
+			for key18, value20 := range m.CompatData {
+				keyTarget17, err := mapTarget16.StartKey()
 				if err != nil {
 					return err
 				}
-				typeObjectVal22 := elem21
-				if typeObjectVal22 == nil {
-					typeObjectVal22 = vdl.AnyType
-				}
-				if err := elemTarget20.FromTypeObject(typeObjectVal22); err != nil {
+				if err := keyTarget17.FromString(string(key18), tt.NonOptional().Field(1).Type.Key()); err != nil {
 					return err
 				}
-				if err := listTarget19.FinishElem(elemTarget20); err != nil {
+				valueTarget19, err := mapTarget16.FinishKeyStartField(keyTarget17)
+				if err != nil {
+					return err
+				}
+
+				listTarget21, err := valueTarget19.StartList(tt.NonOptional().Field(1).Type.Elem(), len(value20))
+				if err != nil {
+					return err
+				}
+				for i, elem23 := range value20 {
+					elemTarget22, err := listTarget21.StartElem(i)
+					if err != nil {
+						return err
+					}
+					typeObjectVal24 := elem23
+					if typeObjectVal24 == nil {
+						typeObjectVal24 = vdl.AnyType
+					}
+					if err := elemTarget22.FromTypeObject(typeObjectVal24); err != nil {
+						return err
+					}
+					if err := listTarget21.FinishElem(elemTarget22); err != nil {
+						return err
+					}
+				}
+				if err := valueTarget19.FinishList(listTarget21); err != nil {
+					return err
+				}
+				if err := mapTarget16.FinishField(keyTarget17, valueTarget19); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget17.FinishList(listTarget19); err != nil {
-				return err
-			}
-			if err := mapTarget14.FinishField(keyTarget15, valueTarget17); err != nil {
+			if err := fieldTarget14.FinishMap(mapTarget16); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget13.FinishMap(mapTarget14); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
 			return err
 		}
 	}
-	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("ConvertData")
+	keyTarget25, fieldTarget26, err := fieldsTarget1.StartField("ConvertData")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget25, err := fieldTarget24.StartMap(tt.NonOptional().Field(2).Type, len(m.ConvertData))
-		if err != nil {
-			return err
+		var var27 bool
+		if len(m.ConvertData) == 0 {
+			var27 = true
 		}
-		for key27, value29 := range m.ConvertData {
-			keyTarget26, err := mapTarget25.StartKey()
-			if err != nil {
+		if var27 {
+			if err := fieldTarget26.FromZero(tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
-			if err := keyTarget26.FromString(string(key27), tt.NonOptional().Field(2).Type.Key()); err != nil {
-				return err
-			}
-			valueTarget28, err := mapTarget25.FinishKeyStartField(keyTarget26)
-			if err != nil {
-				return err
-			}
+		} else {
 
-			listTarget30, err := valueTarget28.StartList(tt.NonOptional().Field(2).Type.Elem(), len(value29))
+			mapTarget28, err := fieldTarget26.StartMap(tt.NonOptional().Field(2).Type, len(m.ConvertData))
 			if err != nil {
 				return err
 			}
-			for i, elem32 := range value29 {
-				elemTarget31, err := listTarget30.StartElem(i)
+			for key30, value32 := range m.ConvertData {
+				keyTarget29, err := mapTarget28.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget29.FromString(string(key30), tt.NonOptional().Field(2).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget31, err := mapTarget28.FinishKeyStartField(keyTarget29)
 				if err != nil {
 					return err
 				}
 
-				if err := elem32.FillVDLTarget(elemTarget31, tt.NonOptional().Field(2).Type.Elem().Elem()); err != nil {
+				listTarget33, err := valueTarget31.StartList(tt.NonOptional().Field(2).Type.Elem(), len(value32))
+				if err != nil {
 					return err
 				}
-				if err := listTarget30.FinishElem(elemTarget31); err != nil {
+				for i, elem35 := range value32 {
+					elemTarget34, err := listTarget33.StartElem(i)
+					if err != nil {
+						return err
+					}
+
+					if err := elem35.FillVDLTarget(elemTarget34, tt.NonOptional().Field(2).Type.Elem().Elem()); err != nil {
+						return err
+					}
+					if err := listTarget33.FinishElem(elemTarget34); err != nil {
+						return err
+					}
+				}
+				if err := valueTarget31.FinishList(listTarget33); err != nil {
+					return err
+				}
+				if err := mapTarget28.FinishField(keyTarget29, valueTarget31); err != nil {
 					return err
 				}
 			}
-			if err := valueTarget28.FinishList(listTarget30); err != nil {
-				return err
-			}
-			if err := mapTarget25.FinishField(keyTarget26, valueTarget28); err != nil {
+			if err := fieldTarget26.FinishMap(mapTarget28); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget24.FinishMap(mapTarget25); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget25, fieldTarget26); err != nil {
 			return err
 		}
 	}
@@ -608,6 +737,10 @@
 
 	return nil
 }
+func (t *VomdataStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = VomdataStruct{}
+	return nil
+}
 
 // map[byte][]*vdl.Value
 type __VDLTarget2_map struct {
@@ -651,6 +784,10 @@
 
 	return nil
 }
+func (t *__VDLTarget2_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[byte][]*vdl.Value(nil)
+	return nil
+}
 
 // map[string][]*vdl.Type
 type __VDLTarget3_map struct {
@@ -694,6 +831,10 @@
 
 	return nil
 }
+func (t *__VDLTarget3_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string][]*vdl.Type(nil)
+	return nil
+}
 
 // []*vdl.Type
 type __VDLTarget5_list struct {
@@ -727,6 +868,10 @@
 
 	return nil
 }
+func (t *__VDLTarget5_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []*vdl.Type(nil)
+	return nil
+}
 
 // map[string][]ConvertGroup
 type __VDLTarget4_map struct {
@@ -770,6 +915,10 @@
 
 	return nil
 }
+func (t *__VDLTarget4_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[string][]ConvertGroup(nil)
+	return nil
+}
 
 // []ConvertGroup
 type __VDLTarget6_list struct {
@@ -803,6 +952,10 @@
 
 	return nil
 }
+func (t *__VDLTarget6_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []ConvertGroup(nil)
+	return nil
+}
 
 // Named Types
 type NBool bool
@@ -837,6 +990,10 @@
 
 	return nil
 }
+func (t *NBoolTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NBool(false)
+	return nil
+}
 
 type NString string
 
@@ -870,6 +1027,10 @@
 
 	return nil
 }
+func (t *NStringTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NString("")
+	return nil
+}
 
 type NByteSlice []byte
 
@@ -908,6 +1069,10 @@
 
 	return nil
 }
+func (t *NByteSliceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NByteSlice(nil)
+	return nil
+}
 
 type NByteArray [4]byte
 
@@ -941,6 +1106,10 @@
 
 	return nil
 }
+func (t *NByteArrayTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NByteArray{}
+	return nil
+}
 
 type NByte byte
 
@@ -995,6 +1164,10 @@
 
 	return nil
 }
+func (t *NByteTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NByte(0)
+	return nil
+}
 
 type NUint16 uint16
 
@@ -1049,6 +1222,10 @@
 
 	return nil
 }
+func (t *NUint16Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NUint16(0)
+	return nil
+}
 
 type NUint32 uint32
 
@@ -1103,6 +1280,10 @@
 
 	return nil
 }
+func (t *NUint32Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NUint32(0)
+	return nil
+}
 
 type NUint64 uint64
 
@@ -1153,6 +1334,10 @@
 
 	return nil
 }
+func (t *NUint64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NUint64(0)
+	return nil
+}
 
 type NInt8 int8
 
@@ -1207,6 +1392,10 @@
 
 	return nil
 }
+func (t *NInt8Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NInt8(0)
+	return nil
+}
 
 type NInt16 int16
 
@@ -1261,6 +1450,10 @@
 
 	return nil
 }
+func (t *NInt16Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NInt16(0)
+	return nil
+}
 
 type NInt32 int32
 
@@ -1315,6 +1508,10 @@
 
 	return nil
 }
+func (t *NInt32Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NInt32(0)
+	return nil
+}
 
 type NInt64 int64
 
@@ -1365,6 +1562,10 @@
 
 	return nil
 }
+func (t *NInt64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NInt64(0)
+	return nil
+}
 
 type NFloat32 float32
 
@@ -1419,6 +1620,10 @@
 
 	return nil
 }
+func (t *NFloat32Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NFloat32(0)
+	return nil
+}
 
 type NFloat64 float64
 
@@ -1469,6 +1674,10 @@
 
 	return nil
 }
+func (t *NFloat64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NFloat64(0)
+	return nil
+}
 
 type NArray2Uint64 [2]uint64
 
@@ -1531,6 +1740,10 @@
 
 	return nil
 }
+func (t *NArray2Uint64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NArray2Uint64{}
+	return nil
+}
 
 type NListUint64 []uint64
 
@@ -1598,6 +1811,10 @@
 
 	return nil
 }
+func (t *NListUint64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NListUint64(nil)
+	return nil
+}
 
 type NSetUint64 map[uint64]struct{}
 
@@ -1666,6 +1883,10 @@
 
 	return nil
 }
+func (t *NSetUint64Target) FromZero(tt *vdl.Type) error {
+	*t.Value = NSetUint64(nil)
+	return nil
+}
 
 type NMapUint64String map[uint64]string
 
@@ -1749,6 +1970,10 @@
 
 	return nil
 }
+func (t *NMapUint64StringTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NMapUint64String(nil)
+	return nil
+}
 
 type NStruct struct {
 	A bool
@@ -1766,40 +1991,63 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.A == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("B")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.B), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.B == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.B), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("C")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("C")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromInt(int64(m.C), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.C == int64(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromInt(int64(m.C), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -1854,6 +2102,10 @@
 
 	return nil
 }
+func (t *NStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NStruct{}
+	return nil
+}
 
 type NEnum int
 
@@ -1937,11 +2189,15 @@
 	case "C":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom/testdata/types.NEnum", src)
+		return fmt.Errorf("label %s not in enum NEnum", src)
 	}
 
 	return nil
 }
+func (t *NEnumTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NEnumA
+	return nil
+}
 
 type (
 	// NUnion represents any single field of the NUnion union type.
@@ -2114,6 +2370,10 @@
 
 	return nil
 }
+func (t *NUnionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = NUnion(NUnionA{})
+	return nil
+}
 
 type nUnionTargetFactory struct{}
 
@@ -2157,6 +2417,10 @@
 
 	return nil
 }
+func (t *MBoolTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MBool(false)
+	return nil
+}
 
 type MStruct struct {
 	A bool
@@ -2177,57 +2441,61 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.A == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("B")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.B.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("C")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		if err := m.C.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("D")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		if m.D == nil {
-			if err := fieldTarget9.FromNil(tt.NonOptional().Field(3).Type); err != nil {
+		var7 := (m.B == NBool(false))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.D.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
+
+			if err := m.B.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("C")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var10 := (m.C == MBool(false))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.C.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
 				return err
 			}
 		}
@@ -2235,38 +2503,75 @@
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("E")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		typeObjectVal12 := m.E
-		if typeObjectVal12 == nil {
-			typeObjectVal12 = vdl.AnyType
-		}
-		if err := fieldTarget11.FromTypeObject(typeObjectVal12); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
-			return err
-		}
-	}
-	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("F")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("D")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.F == nil {
-			if err := fieldTarget14.FromNil(tt.NonOptional().Field(5).Type); err != nil {
+		var13 := (m.D == (*NStruct)(nil))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := vdl.FromValue(fieldTarget14, m.F); err != nil {
+
+			if err := m.D.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("E")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var16 := (m.E == vdl.AnyType)
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal17 := m.E
+			if typeObjectVal17 == nil {
+				typeObjectVal17 = vdl.AnyType
+			}
+			if err := fieldTarget15.FromTypeObject(typeObjectVal17); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
+			return err
+		}
+	}
+	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("F")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var20 := (m.F == vdl.ZeroValue(vdl.AnyType))
+		if var20 {
+			if err := fieldTarget19.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if m.F == nil {
+				if err := fieldTarget19.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+					return err
+				}
+			} else {
+				if err := vdl.FromValue(fieldTarget19, m.F); err != nil {
+					return err
+				}
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
 			return err
 		}
 	}
@@ -2335,6 +2640,13 @@
 
 	return nil
 }
+func (t *MStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MStruct{
+		E: vdl.AnyType,
+		F: vdl.ZeroValue(vdl.AnyType),
+	}
+	return nil
+}
 
 // Optional NStruct
 type __VDLTarget7_optional struct {
@@ -2360,10 +2672,8 @@
 
 	return nil
 }
-func (t *__VDLTarget7_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget7_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*NStruct)(nil)
 	return nil
 }
 
@@ -2434,6 +2744,10 @@
 
 	return nil
 }
+func (t *MListTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MList(nil)
+	return nil
+}
 
 type MMap map[NFloat32]NListUint64
 
@@ -2519,6 +2833,10 @@
 
 	return nil
 }
+func (t *MMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MMap(nil)
+	return nil
+}
 
 type MByteSlice []byte
 
@@ -2557,6 +2875,10 @@
 
 	return nil
 }
+func (t *MByteSliceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MByteSlice(nil)
+	return nil
+}
 
 type MInt8Slice []int8
 
@@ -2624,6 +2946,10 @@
 
 	return nil
 }
+func (t *MInt8SliceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MInt8Slice(nil)
+	return nil
+}
 
 // Recursive Type Definitions
 type RecA []RecA
@@ -2692,6 +3018,10 @@
 
 	return nil
 }
+func (t *RecATarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RecA(nil)
+	return nil
+}
 
 type RecY []RecX
 
@@ -2759,6 +3089,10 @@
 
 	return nil
 }
+func (t *RecYTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RecY(nil)
+	return nil
+}
 
 // RecX
 type RecXTarget struct {
@@ -2791,6 +3125,10 @@
 
 	return nil
 }
+func (t *RecXTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RecX(nil)
+	return nil
+}
 
 type RecX []RecY
 
@@ -2893,6 +3231,10 @@
 
 	return nil
 }
+func (t *Rec4Target) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec4(nil)
+	return nil
+}
 
 // Rec1
 type Rec1Target struct {
@@ -2925,6 +3267,10 @@
 
 	return nil
 }
+func (t *Rec1Target) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec1(nil)
+	return nil
+}
 
 // Rec2
 type Rec2Target struct {
@@ -2957,6 +3303,10 @@
 
 	return nil
 }
+func (t *Rec2Target) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec2(nil)
+	return nil
+}
 
 // Rec3
 type Rec3Target struct {
@@ -2989,6 +3339,10 @@
 
 	return nil
 }
+func (t *Rec3Target) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec3(nil)
+	return nil
+}
 
 type Rec3 []Rec4
 
@@ -3109,18 +3463,19 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.A == nil {
-			if err := fieldTarget3.FromNil(tt.NonOptional().Field(0).Type); err != nil {
+		var4 := (m.A == (*RecStruct)(nil))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
 		} else {
+
 			if err := m.A.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
@@ -3169,6 +3524,10 @@
 
 	return nil
 }
+func (t *RecStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = RecStruct{}
+	return nil
+}
 
 // Optional RecStruct
 type __VDLTarget8_optional struct {
@@ -3193,10 +3552,8 @@
 
 	return nil
 }
-func (t *__VDLTarget8_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget8_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*RecStruct)(nil)
 	return nil
 }
 
@@ -3217,59 +3574,102 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("R1")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.R1.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var var4 bool
+		if len(m.R1) == 0 {
+			var4 = true
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.R1.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("R2")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("R2")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.R2.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.R2) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.R2.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("R3")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("R3")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.R3.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var var10 bool
+		if len(m.R3) == 0 {
+			var10 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("R4")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
 
-		if err := m.R4.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+			if err := m.R3.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("R4")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var13 bool
+		if len(m.R4) == 0 {
+			var13 = true
+		}
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.R4.FillVDLTarget(fieldTarget12, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -3326,6 +3726,10 @@
 
 	return nil
 }
+func (t *Rec1234Target) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec1234{}
+	return nil
+}
 
 type Rec1234A struct {
 	A       []Rec1234A
@@ -3342,64 +3746,85 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget4, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.A))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.A) == 0 {
+			var4 = true
 		}
-		for i, elem6 := range m.A {
-			elemTarget5, err := listTarget4.StartElem(i)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.A))
 			if err != nil {
 				return err
 			}
+			for i, elem7 := range m.A {
+				elemTarget6, err := listTarget5.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem6.FillVDLTarget(elemTarget5, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+				if err := elem7.FillVDLTarget(elemTarget6, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
 				return err
 			}
-			if err := listTarget4.FinishElem(elemTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishList(listTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Rec1234")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Rec1234")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget9, err := fieldTarget8.StartList(tt.NonOptional().Field(1).Type, len(m.Rec1234))
-		if err != nil {
-			return err
+		var var10 bool
+		if len(m.Rec1234) == 0 {
+			var10 = true
 		}
-		for i, elem11 := range m.Rec1234 {
-			elemTarget10, err := listTarget9.StartElem(i)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(1).Type, len(m.Rec1234))
 			if err != nil {
 				return err
 			}
+			for i, elem13 := range m.Rec1234 {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem11.FillVDLTarget(elemTarget10, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
 			}
-			if err := listTarget9.FinishElem(elemTarget10); err != nil {
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget8.FinishList(listTarget9); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -3448,6 +3873,10 @@
 
 	return nil
 }
+func (t *Rec1234ATarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec1234A{}
+	return nil
+}
 
 // []Rec1234A
 type __VDLTarget10_list struct {
@@ -3480,6 +3909,10 @@
 
 	return nil
 }
+func (t *__VDLTarget10_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Rec1234A(nil)
+	return nil
+}
 
 // []Rec1234
 type __VDLTarget9_list struct {
@@ -3513,6 +3946,10 @@
 
 	return nil
 }
+func (t *__VDLTarget9_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Rec1234(nil)
+	return nil
+}
 
 type Rec1234B struct {
 	B       []Rec1234B
@@ -3529,64 +3966,85 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget4, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.B))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.B) == 0 {
+			var4 = true
 		}
-		for i, elem6 := range m.B {
-			elemTarget5, err := listTarget4.StartElem(i)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget5, err := fieldTarget3.StartList(tt.NonOptional().Field(0).Type, len(m.B))
 			if err != nil {
 				return err
 			}
+			for i, elem7 := range m.B {
+				elemTarget6, err := listTarget5.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem6.FillVDLTarget(elemTarget5, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+				if err := elem7.FillVDLTarget(elemTarget6, tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget5.FinishElem(elemTarget6); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishList(listTarget5); err != nil {
 				return err
 			}
-			if err := listTarget4.FinishElem(elemTarget5); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishList(listTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("Rec1234")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Rec1234")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget9, err := fieldTarget8.StartList(tt.NonOptional().Field(1).Type, len(m.Rec1234))
-		if err != nil {
-			return err
+		var var10 bool
+		if len(m.Rec1234) == 0 {
+			var10 = true
 		}
-		for i, elem11 := range m.Rec1234 {
-			elemTarget10, err := listTarget9.StartElem(i)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget11, err := fieldTarget9.StartList(tt.NonOptional().Field(1).Type, len(m.Rec1234))
 			if err != nil {
 				return err
 			}
+			for i, elem13 := range m.Rec1234 {
+				elemTarget12, err := listTarget11.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem11.FillVDLTarget(elemTarget10, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem13.FillVDLTarget(elemTarget12, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget11.FinishElem(elemTarget12); err != nil {
+					return err
+				}
 			}
-			if err := listTarget9.FinishElem(elemTarget10); err != nil {
+			if err := fieldTarget9.FinishList(listTarget11); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget8.FinishList(listTarget9); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -3635,6 +4093,10 @@
 
 	return nil
 }
+func (t *Rec1234BTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec1234B{}
+	return nil
+}
 
 // []Rec1234B
 type __VDLTarget11_list struct {
@@ -3667,6 +4129,10 @@
 
 	return nil
 }
+func (t *__VDLTarget11_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Rec1234B(nil)
+	return nil
+}
 
 type Rec1234All struct {
 	A Rec1234A
@@ -3683,30 +4149,65 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.A.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := true
+		var var5 bool
+		if len(m.A.A) == 0 {
+			var5 = true
+		}
+		var4 = var4 && var5
+		var var6 bool
+		if len(m.A.Rec1234) == 0 {
+			var6 = true
+		}
+		var4 = var4 && var6
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.A.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("B")
+	keyTarget7, fieldTarget8, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.B.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var9 := true
+		var var10 bool
+		if len(m.B.B) == 0 {
+			var10 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		var9 = var9 && var10
+		var var11 bool
+		if len(m.B.Rec1234) == 0 {
+			var11 = true
+		}
+		var9 = var9 && var11
+		if var9 {
+			if err := fieldTarget8.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.B.FillVDLTarget(fieldTarget8, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget7, fieldTarget8); err != nil {
 			return err
 		}
 	}
@@ -3756,6 +4257,10 @@
 
 	return nil
 }
+func (t *Rec1234AllTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Rec1234All{}
+	return nil
+}
 
 // Additional types for compatibility and conversion checks
 type ListString []string
@@ -3824,6 +4329,10 @@
 
 	return nil
 }
+func (t *ListStringTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ListString(nil)
+	return nil
+}
 
 type Array3String [3]string
 
@@ -3886,6 +4395,10 @@
 
 	return nil
 }
+func (t *Array3StringTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Array3String{}
+	return nil
+}
 
 type Array4String [4]string
 
@@ -3948,6 +4461,10 @@
 
 	return nil
 }
+func (t *Array4StringTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Array4String{}
+	return nil
+}
 
 type AbcStruct struct {
 	A bool
@@ -3965,40 +4482,63 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.A == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("B")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("B")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromString(string(m.B), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.B == "")
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromString(string(m.B), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("C")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("C")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromInt(int64(m.C), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.C == int64(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromInt(int64(m.C), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -4053,6 +4593,10 @@
 
 	return nil
 }
+func (t *AbcStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AbcStruct{}
+	return nil
+}
 
 type AdeStruct struct {
 	A bool
@@ -4070,51 +4614,74 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("A")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.A == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.A), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("D")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("D")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.D == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.D == vdl.ZeroValue(vdl.AnyType))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := vdl.FromValue(fieldTarget5, m.D); err != nil {
-				return err
+
+			if m.D == nil {
+				if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+					return err
+				}
+			} else {
+				if err := vdl.FromValue(fieldTarget6, m.D); err != nil {
+					return err
+				}
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("E")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("E")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		typeObjectVal8 := m.E
-		if typeObjectVal8 == nil {
-			typeObjectVal8 = vdl.AnyType
+
+		var10 := (m.E == vdl.AnyType)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal11 := m.E
+			if typeObjectVal11 == nil {
+				typeObjectVal11 = vdl.AnyType
+			}
+			if err := fieldTarget9.FromTypeObject(typeObjectVal11); err != nil {
+				return err
+			}
 		}
-		if err := fieldTarget7.FromTypeObject(typeObjectVal8); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -4168,6 +4735,13 @@
 
 	return nil
 }
+func (t *AdeStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AdeStruct{
+		D: vdl.ZeroValue(vdl.AnyType),
+		E: vdl.AnyType,
+	}
+	return nil
+}
 
 type XyzStruct struct {
 	X bool
@@ -4185,41 +4759,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("X")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.X), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.X == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.X), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Y")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Y")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Y.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Y == MBool(false))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Y.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Z")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Z")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.Z), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.Z == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Z), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -4274,6 +4871,10 @@
 
 	return nil
 }
+func (t *XyzStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = XyzStruct{}
+	return nil
+}
 
 type YzStruct struct {
 	Y NBool
@@ -4290,30 +4891,45 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Y")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Y.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Y == NBool(false))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Y.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Z")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Z")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Z.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Z == NString(""))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Z.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -4363,6 +4979,10 @@
 
 	return nil
 }
+func (t *YzStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = YzStruct{}
+	return nil
+}
 
 type ZStruct struct {
 	Z string
@@ -4378,14 +4998,21 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Z")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Z), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Z == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Z), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -4432,6 +5059,10 @@
 
 	return nil
 }
+func (t *ZStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ZStruct{}
+	return nil
+}
 
 type MapOnlyStruct struct {
 	Key1 int64
@@ -4448,28 +5079,43 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Key1")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromInt(int64(m.Key1), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Key1 == int64(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromInt(int64(m.Key1), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Key2")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Key2")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromUint(uint64(m.Key2), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Key2 == uint32(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromUint(uint64(m.Key2), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -4519,6 +5165,10 @@
 
 	return nil
 }
+func (t *MapOnlyStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MapOnlyStruct{}
+	return nil
+}
 
 type StructOnlyMap map[string]uint64
 
@@ -4602,6 +5252,10 @@
 
 	return nil
 }
+func (t *StructOnlyMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = StructOnlyMap(nil)
+	return nil
+}
 
 type MapSetStruct struct {
 	Feat bool
@@ -4619,40 +5273,63 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Feat")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.Feat), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Feat == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.Feat), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Tire")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Tire")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromBool(bool(m.Tire), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.Tire == false)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromBool(bool(m.Tire), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Eel")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Eel")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromBool(bool(m.Eel), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.Eel == false)
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromBool(bool(m.Eel), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -4707,6 +5384,10 @@
 
 	return nil
 }
+func (t *MapSetStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MapSetStruct{}
+	return nil
+}
 
 type SetStructMap map[string]bool
 
@@ -4790,6 +5471,10 @@
 
 	return nil
 }
+func (t *SetStructMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SetStructMap(nil)
+	return nil
+}
 
 type MapStructSet map[string]struct{}
 
@@ -4858,6 +5543,10 @@
 
 	return nil
 }
+func (t *MapStructSetTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MapStructSet(nil)
+	return nil
+}
 
 type SetOnlyMap map[float64]bool
 
@@ -4941,6 +5630,10 @@
 
 	return nil
 }
+func (t *SetOnlyMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SetOnlyMap(nil)
+	return nil
+}
 
 type SometimesSetMap map[float64]*vdl.Value
 
@@ -4968,7 +5661,7 @@
 		}
 
 		if value5 == nil {
-			if err := valueTarget4.FromNil(tt.NonOptional().Elem()); err != nil {
+			if err := valueTarget4.FromZero(tt.NonOptional().Elem()); err != nil {
 				return err
 			}
 		} else {
@@ -5015,7 +5708,7 @@
 	return target, err
 }
 func (t *SometimesSetMapTarget) FinishKeyStartField(key vdl.Target) (field vdl.Target, _ error) {
-	t.currElem = (*vdl.Value)(nil)
+	t.currElem = vdl.ZeroValue(vdl.AnyType)
 	target, err := vdl.ReflectTarget(reflect.ValueOf(&t.currElem))
 	return target, err
 }
@@ -5030,6 +5723,10 @@
 
 	return nil
 }
+func (t *SometimesSetMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SometimesSetMap(nil)
+	return nil
+}
 
 type MapOnlySet map[float64]struct{}
 
@@ -5098,6 +5795,10 @@
 
 	return nil
 }
+func (t *MapOnlySetTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MapOnlySet(nil)
+	return nil
+}
 
 type SetOnlyA map[bool]struct{}
 
@@ -5166,6 +5867,10 @@
 
 	return nil
 }
+func (t *SetOnlyATarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SetOnlyA(nil)
+	return nil
+}
 
 type SetOnlyA2 map[NBool]struct{}
 
@@ -5235,6 +5940,10 @@
 
 	return nil
 }
+func (t *SetOnlyA2Target) FromZero(tt *vdl.Type) error {
+	*t.Value = SetOnlyA2(nil)
+	return nil
+}
 
 type SetOnlyB map[int16]struct{}
 
@@ -5303,6 +6012,10 @@
 
 	return nil
 }
+func (t *SetOnlyBTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SetOnlyB(nil)
+	return nil
+}
 
 type SetOnlyB2 map[NInt16]struct{}
 
@@ -5372,6 +6085,10 @@
 
 	return nil
 }
+func (t *SetOnlyB2Target) FromZero(tt *vdl.Type) error {
+	*t.Value = SetOnlyB2(nil)
+	return nil
+}
 
 type MapOnlyA map[uint32]uint32
 
@@ -5455,6 +6172,10 @@
 
 	return nil
 }
+func (t *MapOnlyATarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MapOnlyA(nil)
+	return nil
+}
 
 type MapOnlyA2 map[int64]float64
 
@@ -5538,6 +6259,10 @@
 
 	return nil
 }
+func (t *MapOnlyA2Target) FromZero(tt *vdl.Type) error {
+	*t.Value = MapOnlyA2(nil)
+	return nil
+}
 
 type MapOnlyB map[bool]string
 
@@ -5621,6 +6346,10 @@
 
 	return nil
 }
+func (t *MapOnlyBTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = MapOnlyB(nil)
+	return nil
+}
 
 type MapOnlyB2 map[NBool]NString
 
@@ -5706,6 +6435,10 @@
 
 	return nil
 }
+func (t *MapOnlyB2Target) FromZero(tt *vdl.Type) error {
+	*t.Value = MapOnlyB2(nil)
+	return nil
+}
 
 type (
 	// BdeUnion represents any single field of the BdeUnion union type.
@@ -5786,7 +6519,7 @@
 	}
 
 	if m.Value == nil {
-		if err := fieldTarget3.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		if err := fieldTarget3.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 			return err
 		}
 	} else {
@@ -5890,6 +6623,10 @@
 
 	return nil
 }
+func (t *BdeUnionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BdeUnion(BdeUnionB{})
+	return nil
+}
 
 type bdeUnionTargetFactory struct{}
 
@@ -5982,11 +6719,15 @@
 	case "Three":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom/testdata/types.BrieEnum", src)
+		return fmt.Errorf("label %s not in enum BrieEnum", src)
 	}
 
 	return nil
 }
+func (t *BrieEnumTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BrieEnumGlee
+	return nil
+}
 
 type BeanEnum int
 
@@ -6054,11 +6795,15 @@
 	case "Bean":
 		*t.Value = 0
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom/testdata/types.BeanEnum", src)
+		return fmt.Errorf("label %s not in enum BeanEnum", src)
 	}
 
 	return nil
 }
+func (t *BeanEnumTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = BeanEnumBean
+	return nil
+}
 
 type FoodEnum int
 
@@ -6142,11 +6887,15 @@
 	case "Cherry":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom/testdata/types.FoodEnum", src)
+		return fmt.Errorf("label %s not in enum FoodEnum", src)
 	}
 
 	return nil
 }
+func (t *FoodEnumTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = FoodEnumBean
+	return nil
+}
 
 type StructAny struct {
 	Any *vdl.Value
@@ -6162,20 +6911,27 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Any")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Any == nil {
-			if err := fieldTarget3.FromNil(tt.NonOptional().Field(0).Type); err != nil {
+		var4 := (m.Any == vdl.ZeroValue(vdl.AnyType))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := vdl.FromValue(fieldTarget3, m.Any); err != nil {
-				return err
+
+			if m.Any == nil {
+				if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+					return err
+				}
+			} else {
+				if err := vdl.FromValue(fieldTarget3, m.Any); err != nil {
+					return err
+				}
 			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
@@ -6222,6 +6978,12 @@
 
 	return nil
 }
+func (t *StructAnyTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = StructAny{
+		Any: vdl.ZeroValue(vdl.AnyType),
+	}
+	return nil
+}
 
 type StructMap struct {
 	Map map[int64]int64
@@ -6237,38 +6999,48 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Map")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		mapTarget4, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.Map))
-		if err != nil {
-			return err
+		var var4 bool
+		if len(m.Map) == 0 {
+			var4 = true
 		}
-		for key6, value8 := range m.Map {
-			keyTarget5, err := mapTarget4.StartKey()
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			mapTarget5, err := fieldTarget3.StartMap(tt.NonOptional().Field(0).Type, len(m.Map))
 			if err != nil {
 				return err
 			}
-			if err := keyTarget5.FromInt(int64(key6), tt.NonOptional().Field(0).Type.Key()); err != nil {
+			for key7, value9 := range m.Map {
+				keyTarget6, err := mapTarget5.StartKey()
+				if err != nil {
+					return err
+				}
+				if err := keyTarget6.FromInt(int64(key7), tt.NonOptional().Field(0).Type.Key()); err != nil {
+					return err
+				}
+				valueTarget8, err := mapTarget5.FinishKeyStartField(keyTarget6)
+				if err != nil {
+					return err
+				}
+				if err := valueTarget8.FromInt(int64(value9), tt.NonOptional().Field(0).Type.Elem()); err != nil {
+					return err
+				}
+				if err := mapTarget5.FinishField(keyTarget6, valueTarget8); err != nil {
+					return err
+				}
+			}
+			if err := fieldTarget3.FinishMap(mapTarget5); err != nil {
 				return err
 			}
-			valueTarget7, err := mapTarget4.FinishKeyStartField(keyTarget5)
-			if err != nil {
-				return err
-			}
-			if err := valueTarget7.FromInt(int64(value8), tt.NonOptional().Field(0).Type.Elem()); err != nil {
-				return err
-			}
-			if err := mapTarget4.FinishField(keyTarget5, valueTarget7); err != nil {
-				return err
-			}
-		}
-		if err := fieldTarget3.FinishMap(mapTarget4); err != nil {
-			return err
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
@@ -6315,6 +7087,10 @@
 
 	return nil
 }
+func (t *StructMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = StructMap{}
+	return nil
+}
 
 // map[int64]int64
 type __VDLTarget12_map struct {
@@ -6358,6 +7134,10 @@
 
 	return nil
 }
+func (t *__VDLTarget12_map) FromZero(tt *vdl.Type) error {
+	*t.Value = map[int64]int64(nil)
+	return nil
+}
 
 // Since the encoding changes if struct fields are zero values,
 // test each of the kinds in a struct both as zero and non-zero values.
@@ -6396,286 +7176,478 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Bool")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromBool(bool(m.Bool), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Bool == false)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromBool(bool(m.Bool), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("AByte")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("AByte")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget5.FromUint(uint64(m.AByte), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var7 := (m.AByte == byte(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget6.FromUint(uint64(m.AByte), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Int16")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Int16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromInt(int64(m.Int16), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Int32")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromInt(int64(m.Int32), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var10 := (m.Int16 == int16(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromInt(int64(m.Int16), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget10, fieldTarget11, err := fieldsTarget1.StartField("Int64")
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("Int32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget11.FromInt(int64(m.Int64), tt.NonOptional().Field(4).Type); err != nil {
-			return err
+
+		var13 := (m.Int32 == int32(0))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromInt(int64(m.Int32), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget10, fieldTarget11); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
 			return err
 		}
 	}
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Uint16")
+	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Int64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget13.FromUint(uint64(m.Uint16), tt.NonOptional().Field(5).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
-			return err
-		}
-	}
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Uint32")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget15.FromUint(uint64(m.Uint32), tt.NonOptional().Field(6).Type); err != nil {
-			return err
+
+		var16 := (m.Int64 == int64(0))
+		if var16 {
+			if err := fieldTarget15.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget15.FromInt(int64(m.Int64), tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
 			return err
 		}
 	}
-	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("Uint64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget17.FromUint(uint64(m.Uint64), tt.NonOptional().Field(7).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
-			return err
-		}
-	}
-	keyTarget18, fieldTarget19, err := fieldsTarget1.StartField("String")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget19.FromString(string(m.String), tt.NonOptional().Field(8).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget18, fieldTarget19); err != nil {
-			return err
-		}
-	}
-	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("Bytes")
+	keyTarget17, fieldTarget18, err := fieldsTarget1.StartField("Uint16")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget21.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(9).Type); err != nil {
+		var19 := (m.Uint16 == uint16(0))
+		if var19 {
+			if err := fieldTarget18.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget18.FromUint(uint64(m.Uint16), tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget17, fieldTarget18); err != nil {
 			return err
 		}
+	}
+	keyTarget20, fieldTarget21, err := fieldsTarget1.StartField("Uint32")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var22 := (m.Uint32 == uint32(0))
+		if var22 {
+			if err := fieldTarget21.FromZero(tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget21.FromUint(uint64(m.Uint32), tt.NonOptional().Field(6).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget20, fieldTarget21); err != nil {
 			return err
 		}
 	}
-	keyTarget22, fieldTarget23, err := fieldsTarget1.StartField("Float32")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget23.FromFloat(float64(m.Float32), tt.NonOptional().Field(10).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget22, fieldTarget23); err != nil {
-			return err
-		}
-	}
-	keyTarget24, fieldTarget25, err := fieldsTarget1.StartField("Float64")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget25.FromFloat(float64(m.Float64), tt.NonOptional().Field(11).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget24, fieldTarget25); err != nil {
-			return err
-		}
-	}
-	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("FoodEnum")
+	keyTarget23, fieldTarget24, err := fieldsTarget1.StartField("Uint64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.FoodEnum.FillVDLTarget(fieldTarget27, tt.NonOptional().Field(12).Type); err != nil {
+		var25 := (m.Uint64 == uint64(0))
+		if var25 {
+			if err := fieldTarget24.FromZero(tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget24.FromUint(uint64(m.Uint64), tt.NonOptional().Field(7).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget23, fieldTarget24); err != nil {
 			return err
 		}
+	}
+	keyTarget26, fieldTarget27, err := fieldsTarget1.StartField("String")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var28 := (m.String == "")
+		if var28 {
+			if err := fieldTarget27.FromZero(tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget27.FromString(string(m.String), tt.NonOptional().Field(8).Type); err != nil {
+				return err
+			}
+		}
 		if err := fieldsTarget1.FinishField(keyTarget26, fieldTarget27); err != nil {
 			return err
 		}
 	}
-	keyTarget28, fieldTarget29, err := fieldsTarget1.StartField("NEnum")
+	keyTarget29, fieldTarget30, err := fieldsTarget1.StartField("Bytes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NEnum.FillVDLTarget(fieldTarget29, tt.NonOptional().Field(13).Type); err != nil {
-			return err
+		var var31 bool
+		if len(m.Bytes) == 0 {
+			var31 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget28, fieldTarget29); err != nil {
+		if var31 {
+			if err := fieldTarget30.FromZero(tt.NonOptional().Field(9).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget30.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(9).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget29, fieldTarget30); err != nil {
 			return err
 		}
 	}
-	keyTarget30, fieldTarget31, err := fieldsTarget1.StartField("NListUint64")
+	keyTarget32, fieldTarget33, err := fieldsTarget1.StartField("Float32")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		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("NByteArray")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-
-		if err := m.NByteArray.FillVDLTarget(fieldTarget33, tt.NonOptional().Field(15).Type); err != nil {
-			return err
+		var34 := (m.Float32 == float32(0))
+		if var34 {
+			if err := fieldTarget33.FromZero(tt.NonOptional().Field(10).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget33.FromFloat(float64(m.Float32), tt.NonOptional().Field(10).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget32, fieldTarget33); err != nil {
 			return err
 		}
 	}
-	keyTarget34, fieldTarget35, err := fieldsTarget1.StartField("NArray2Uint64")
+	keyTarget35, fieldTarget36, err := fieldsTarget1.StartField("Float64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NArray2Uint64.FillVDLTarget(fieldTarget35, tt.NonOptional().Field(16).Type); err != nil {
-			return err
+		var37 := (m.Float64 == float64(0))
+		if var37 {
+			if err := fieldTarget36.FromZero(tt.NonOptional().Field(11).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget36.FromFloat(float64(m.Float64), tt.NonOptional().Field(11).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget34, fieldTarget35); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget35, fieldTarget36); err != nil {
 			return err
 		}
 	}
-	keyTarget36, fieldTarget37, err := fieldsTarget1.StartField("NSetUint64")
+	keyTarget38, fieldTarget39, err := fieldsTarget1.StartField("FoodEnum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		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("NMapUint64String")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
+		var40 := (m.FoodEnum == FoodEnumBean)
+		if var40 {
+			if err := fieldTarget39.FromZero(tt.NonOptional().Field(12).Type); err != nil {
+				return err
+			}
+		} else {
 
-		if err := m.NMapUint64String.FillVDLTarget(fieldTarget39, tt.NonOptional().Field(18).Type); err != nil {
-			return err
+			if err := m.FoodEnum.FillVDLTarget(fieldTarget39, tt.NonOptional().Field(12).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget38, fieldTarget39); err != nil {
 			return err
 		}
 	}
-	keyTarget40, fieldTarget41, err := fieldsTarget1.StartField("NStruct")
+	keyTarget41, fieldTarget42, err := fieldsTarget1.StartField("NEnum")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.NStruct.FillVDLTarget(fieldTarget41, tt.NonOptional().Field(19).Type); err != nil {
-			return err
+		var43 := (m.NEnum == NEnumA)
+		if var43 {
+			if err := fieldTarget42.FromZero(tt.NonOptional().Field(13).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NEnum.FillVDLTarget(fieldTarget42, tt.NonOptional().Field(13).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget40, fieldTarget41); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget41, fieldTarget42); err != nil {
 			return err
 		}
 	}
-	keyTarget42, fieldTarget43, err := fieldsTarget1.StartField("NUnion")
+	keyTarget44, fieldTarget45, err := fieldsTarget1.StartField("NListUint64")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue44 := m.NUnion
-		if unionValue44 == nil {
-			unionValue44 = NUnionA{}
+		var var46 bool
+		if len(m.NListUint64) == 0 {
+			var46 = true
 		}
-		if err := unionValue44.FillVDLTarget(fieldTarget43, tt.NonOptional().Field(20).Type); err != nil {
-			return err
+		if var46 {
+			if err := fieldTarget45.FromZero(tt.NonOptional().Field(14).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NListUint64.FillVDLTarget(fieldTarget45, tt.NonOptional().Field(14).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget42, fieldTarget43); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget44, fieldTarget45); err != nil {
 			return err
 		}
 	}
-	keyTarget45, fieldTarget46, err := fieldsTarget1.StartField("TypeObject")
+	keyTarget47, fieldTarget48, err := fieldsTarget1.StartField("NByteArray")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		typeObjectVal47 := m.TypeObject
-		if typeObjectVal47 == nil {
-			typeObjectVal47 = vdl.AnyType
+
+		var49 := (m.NByteArray == NByteArray{})
+		if var49 {
+			if err := fieldTarget48.FromZero(tt.NonOptional().Field(15).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NByteArray.FillVDLTarget(fieldTarget48, tt.NonOptional().Field(15).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldTarget46.FromTypeObject(typeObjectVal47); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget47, fieldTarget48); err != nil {
 			return err
 		}
-		if err := fieldsTarget1.FinishField(keyTarget45, fieldTarget46); err != nil {
+	}
+	keyTarget50, fieldTarget51, err := fieldsTarget1.StartField("NArray2Uint64")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var52 := (m.NArray2Uint64 == NArray2Uint64{})
+		if var52 {
+			if err := fieldTarget51.FromZero(tt.NonOptional().Field(16).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NArray2Uint64.FillVDLTarget(fieldTarget51, tt.NonOptional().Field(16).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget50, fieldTarget51); err != nil {
+			return err
+		}
+	}
+	keyTarget53, fieldTarget54, err := fieldsTarget1.StartField("NSetUint64")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var55 bool
+		if len(m.NSetUint64) == 0 {
+			var55 = true
+		}
+		if var55 {
+			if err := fieldTarget54.FromZero(tt.NonOptional().Field(17).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NSetUint64.FillVDLTarget(fieldTarget54, tt.NonOptional().Field(17).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget53, fieldTarget54); err != nil {
+			return err
+		}
+	}
+	keyTarget56, fieldTarget57, err := fieldsTarget1.StartField("NMapUint64String")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var58 bool
+		if len(m.NMapUint64String) == 0 {
+			var58 = true
+		}
+		if var58 {
+			if err := fieldTarget57.FromZero(tt.NonOptional().Field(18).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NMapUint64String.FillVDLTarget(fieldTarget57, tt.NonOptional().Field(18).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget56, fieldTarget57); err != nil {
+			return err
+		}
+	}
+	keyTarget59, fieldTarget60, err := fieldsTarget1.StartField("NStruct")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var61 := (m.NStruct == NStruct{})
+		if var61 {
+			if err := fieldTarget60.FromZero(tt.NonOptional().Field(19).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.NStruct.FillVDLTarget(fieldTarget60, tt.NonOptional().Field(19).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget59, fieldTarget60); err != nil {
+			return err
+		}
+	}
+	keyTarget62, fieldTarget63, err := fieldsTarget1.StartField("NUnion")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var64 bool
+		if field, ok := m.NUnion.(NUnionA); ok {
+
+			var65 := (field.Value == false)
+			var64 = var65
+		}
+		if var64 {
+			if err := fieldTarget63.FromZero(tt.NonOptional().Field(20).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue66 := m.NUnion
+			if unionValue66 == nil {
+				unionValue66 = NUnionA{}
+			}
+			if err := unionValue66.FillVDLTarget(fieldTarget63, tt.NonOptional().Field(20).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget62, fieldTarget63); err != nil {
+			return err
+		}
+	}
+	keyTarget67, fieldTarget68, err := fieldsTarget1.StartField("TypeObject")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var69 := (m.TypeObject == vdl.AnyType)
+		if var69 {
+			if err := fieldTarget68.FromZero(tt.NonOptional().Field(21).Type); err != nil {
+				return err
+			}
+		} else {
+			typeObjectVal70 := m.TypeObject
+			if typeObjectVal70 == nil {
+				typeObjectVal70 = vdl.AnyType
+			}
+			if err := fieldTarget68.FromTypeObject(typeObjectVal70); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget67, fieldTarget68); err != nil {
 			return err
 		}
 	}
@@ -6825,6 +7797,13 @@
 
 	return nil
 }
+func (t *StructManyTypesTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = StructManyTypes{
+		NUnion:     NUnionA{},
+		TypeObject: vdl.AnyType,
+	}
+	return nil
+}
 
 type AnySlice []*vdl.Value
 
@@ -6845,7 +7824,7 @@
 		}
 
 		if elem3 == nil {
-			if err := elemTarget2.FromNil(tt.NonOptional().Elem()); err != nil {
+			if err := elemTarget2.FromZero(tt.NonOptional().Elem()); err != nil {
 				return err
 			}
 		} else {
@@ -6898,6 +7877,10 @@
 
 	return nil
 }
+func (t *AnySliceTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = AnySlice(nil)
+	return nil
+}
 
 type LargeMessageType struct {
 	Payload []byte
@@ -6914,36 +7897,48 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Payload")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget3.FromBytes([]byte(m.Payload), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var var4 bool
+		if len(m.Payload) == 0 {
+			var4 = true
+		}
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget3.FromBytes([]byte(m.Payload), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Next")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Next")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Next == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.Next == (*LargeMessageType)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.Next.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
+
+			if err := m.Next.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -6992,6 +7987,10 @@
 
 	return nil
 }
+func (t *LargeMessageTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = LargeMessageType{}
+	return nil
+}
 
 // Optional LargeMessageType
 type __VDLTarget13_optional struct {
@@ -7016,10 +8015,8 @@
 
 	return nil
 }
-func (t *__VDLTarget13_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget13_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*LargeMessageType)(nil)
 	return nil
 }
 
@@ -7038,42 +8035,51 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Payload")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Payload == nil {
-			if err := fieldTarget3.FromNil(tt.NonOptional().Field(0).Type); err != nil {
+		var4 := (m.Payload == vdl.ZeroValue(vdl.AnyType))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := vdl.FromValue(fieldTarget3, m.Payload); err != nil {
-				return err
+
+			if m.Payload == nil {
+				if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+					return err
+				}
+			} else {
+				if err := vdl.FromValue(fieldTarget3, m.Payload); err != nil {
+					return err
+				}
 			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Next")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Next")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if m.Next == nil {
-			if err := fieldTarget5.FromNil(tt.NonOptional().Field(1).Type); err != nil {
+		var7 := (m.Next == (*LargeAnyMessageType)(nil))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		} else {
-			if err := m.Next.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
+
+			if err := m.Next.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
 				return err
 			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -7120,6 +8126,12 @@
 
 	return nil
 }
+func (t *LargeAnyMessageTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = LargeAnyMessageType{
+		Payload: vdl.ZeroValue(vdl.AnyType),
+	}
+	return nil
+}
 
 // Optional LargeAnyMessageType
 type __VDLTarget14_optional struct {
@@ -7132,7 +8144,9 @@
 func (t *__VDLTarget14_optional) StartFields(tt *vdl.Type) (vdl.FieldsTarget, error) {
 
 	if *t.Value == nil {
-		*t.Value = &LargeAnyMessageType{}
+		*t.Value = &LargeAnyMessageType{
+			Payload: vdl.ZeroValue(vdl.AnyType),
+		}
 	}
 	target, err := &LargeAnyMessageTypeTarget{Value: *t.Value}, error(nil)
 	if err != nil {
@@ -7144,102 +8158,11 @@
 
 	return nil
 }
-func (t *__VDLTarget14_optional) FromNil(tt *vdl.Type) error {
-
-	*t.Value = nil
-
+func (t *__VDLTarget14_optional) FromZero(tt *vdl.Type) error {
+	*t.Value = (*LargeAnyMessageType)(nil)
 	return nil
 }
 
-// Create zero values for each type.
-var (
-	__VDLZeroTestCase     = TestCase{}
-	__VDLZeroConvertGroup = ConvertGroup{
-		PrimaryType: vdl.AnyType,
-	}
-	__VDLZeroVomdataStruct    = VomdataStruct{}
-	__VDLZeroNBool            = NBool(false)
-	__VDLZeroNString          = NString("")
-	__VDLZeroNByteSlice       = NByteSlice(nil)
-	__VDLZeroNByteArray       = NByteArray{}
-	__VDLZeroNByte            = NByte(0)
-	__VDLZeroNUint16          = NUint16(0)
-	__VDLZeroNUint32          = NUint32(0)
-	__VDLZeroNUint64          = NUint64(0)
-	__VDLZeroNInt8            = NInt8(0)
-	__VDLZeroNInt16           = NInt16(0)
-	__VDLZeroNInt32           = NInt32(0)
-	__VDLZeroNInt64           = NInt64(0)
-	__VDLZeroNFloat32         = NFloat32(0)
-	__VDLZeroNFloat64         = NFloat64(0)
-	__VDLZeroNArray2Uint64    = NArray2Uint64{}
-	__VDLZeroNListUint64      = NListUint64(nil)
-	__VDLZeroNSetUint64       = NSetUint64(nil)
-	__VDLZeroNMapUint64String = NMapUint64String(nil)
-	__VDLZeroNStruct          = NStruct{}
-	__VDLZeroNEnum            = NEnumA
-	__VDLZeroNUnion           = NUnion(NUnionA{})
-	__VDLZeroMBool            = MBool(false)
-	__VDLZeroMStruct          = MStruct{
-		E: vdl.AnyType,
-	}
-	__VDLZeroMList        = MList(nil)
-	__VDLZeroMMap         = MMap(nil)
-	__VDLZeroMByteSlice   = MByteSlice(nil)
-	__VDLZeroMInt8Slice   = MInt8Slice(nil)
-	__VDLZeroRecA         = RecA(nil)
-	__VDLZeroRecY         = RecY(nil)
-	__VDLZeroRecX         = RecX(nil)
-	__VDLZeroRec4         = Rec4(nil)
-	__VDLZeroRec3         = Rec3(nil)
-	__VDLZeroRec2         = Rec2(nil)
-	__VDLZeroRec1         = Rec1(nil)
-	__VDLZeroRecStruct    = RecStruct{}
-	__VDLZeroRec1234      = Rec1234{}
-	__VDLZeroRec1234A     = Rec1234A{}
-	__VDLZeroRec1234B     = Rec1234B{}
-	__VDLZeroRec1234All   = Rec1234All{}
-	__VDLZeroListString   = ListString(nil)
-	__VDLZeroArray3String = Array3String{}
-	__VDLZeroArray4String = Array4String{}
-	__VDLZeroAbcStruct    = AbcStruct{}
-	__VDLZeroAdeStruct    = AdeStruct{
-		E: vdl.AnyType,
-	}
-	__VDLZeroXyzStruct       = XyzStruct{}
-	__VDLZeroYzStruct        = YzStruct{}
-	__VDLZeroZStruct         = ZStruct{}
-	__VDLZeroMapOnlyStruct   = MapOnlyStruct{}
-	__VDLZeroStructOnlyMap   = StructOnlyMap(nil)
-	__VDLZeroMapSetStruct    = MapSetStruct{}
-	__VDLZeroSetStructMap    = SetStructMap(nil)
-	__VDLZeroMapStructSet    = MapStructSet(nil)
-	__VDLZeroSetOnlyMap      = SetOnlyMap(nil)
-	__VDLZeroSometimesSetMap = SometimesSetMap(nil)
-	__VDLZeroMapOnlySet      = MapOnlySet(nil)
-	__VDLZeroSetOnlyA        = SetOnlyA(nil)
-	__VDLZeroSetOnlyA2       = SetOnlyA2(nil)
-	__VDLZeroSetOnlyB        = SetOnlyB(nil)
-	__VDLZeroSetOnlyB2       = SetOnlyB2(nil)
-	__VDLZeroMapOnlyA        = MapOnlyA(nil)
-	__VDLZeroMapOnlyA2       = MapOnlyA2(nil)
-	__VDLZeroMapOnlyB        = MapOnlyB(nil)
-	__VDLZeroMapOnlyB2       = MapOnlyB2(nil)
-	__VDLZeroBdeUnion        = BdeUnion(BdeUnionB{})
-	__VDLZeroBrieEnum        = BrieEnumGlee
-	__VDLZeroBeanEnum        = BeanEnumBean
-	__VDLZeroFoodEnum        = FoodEnumBean
-	__VDLZeroStructAny       = StructAny{}
-	__VDLZeroStructMap       = StructMap{}
-	__VDLZeroStructManyTypes = StructManyTypes{
-		NUnion:     NUnionA{},
-		TypeObject: vdl.AnyType,
-	}
-	__VDLZeroAnySlice            = AnySlice(nil)
-	__VDLZeroLargeMessageType    = LargeMessageType{}
-	__VDLZeroLargeAnyMessageType = LargeAnyMessageType{}
-)
-
 var __VDLInitCalled bool
 
 // __VDLInit performs vdl initialization.  It is safe to call multiple times.
@@ -7259,6 +8182,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*TestCase)(nil))
diff --git a/vom/testutil_test.go b/vom/testutil_test.go
index 6e69892..f7c95be 100644
--- a/vom/testutil_test.go
+++ b/vom/testutil_test.go
@@ -256,6 +256,9 @@
 	if value == nil {
 		return nil, nil
 	}
+	if value.Kind() == vdl.Any {
+		return nil, nil
+	}
 	rt := vdl.TypeToReflect(value.Type())
 	if rt == nil {
 		return reflect.Value{}, fmt.Errorf("TypeToReflect(%v) failed", value.Type())
diff --git a/vom/vom.vdl.go b/vom/vom.vdl.go
index d6d14ca..d07b7bc 100644
--- a/vom/vom.vdl.go
+++ b/vom/vom.vdl.go
@@ -101,11 +101,15 @@
 	case "IncompleteType":
 		*t.Value = 2
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom.ControlKind", src)
+		return fmt.Errorf("label %s not in enum ControlKind", src)
 	}
 
 	return nil
 }
+func (t *ControlKindTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = ControlKindNil
+	return nil
+}
 
 type (
 	// Primitive represents any single field of the Primitive union type.
@@ -438,6 +442,10 @@
 
 	return nil
 }
+func (t *PrimitiveTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Primitive(PrimitivePBool{})
+	return nil
+}
 
 type primitiveTargetFactory struct{}
 
@@ -627,11 +635,15 @@
 	case "WireTypeIndex":
 		*t.Value = 14
 	default:
-		return fmt.Errorf("label %s not in enum v.io/v23/vom.DumpKind", src)
+		return fmt.Errorf("label %s not in enum DumpKind", src)
 	}
 
 	return nil
 }
+func (t *DumpKindTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = DumpKindVersion
+	return nil
+}
 
 // DumpAtom describes a single indivisible piece of the vom encoding.  The vom
 // encoding is composed of a stream of these atoms.
@@ -652,59 +664,98 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Kind")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Kind.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Kind == DumpKindVersion)
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Kind.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Bytes")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Bytes")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := fieldTarget5.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var var7 bool
+		if len(m.Bytes) == 0 {
+			var7 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := fieldTarget6.FromBytes([]byte(m.Bytes), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Data")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Data")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		unionValue8 := m.Data
-		if unionValue8 == nil {
-			unionValue8 = PrimitivePBool{}
+		var var10 bool
+		if field, ok := m.Data.(PrimitivePBool); ok {
+
+			var11 := (field.Value == false)
+			var10 = var11
 		}
-		if err := unionValue8.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			unionValue12 := m.Data
+			if unionValue12 == nil {
+				unionValue12 = PrimitivePBool{}
+			}
+			if err := unionValue12.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Debug")
+	keyTarget13, fieldTarget14, err := fieldsTarget1.StartField("Debug")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget10.FromString(string(m.Debug), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+
+		var15 := (m.Debug == "")
+		if var15 {
+			if err := fieldTarget14.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget14.FromString(string(m.Debug), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget13, fieldTarget14); err != nil {
 			return err
 		}
 	}
@@ -764,6 +815,12 @@
 
 	return nil
 }
+func (t *DumpAtomTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = DumpAtom{
+		Data: PrimitivePBool{},
+	}
+	return nil
+}
 
 // typeId uniquely identifies a type definition within a vom stream.
 type typeId uint64
@@ -815,6 +872,10 @@
 
 	return nil
 }
+func (t *typeIdTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = typeId(0)
+	return nil
+}
 
 // wireNamed represents a type definition for named primitives.
 type wireNamed struct {
@@ -832,29 +893,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Base")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Base")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Base.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Base == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Base.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -904,6 +980,10 @@
 
 	return nil
 }
+func (t *wireNamedTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireNamed{}
+	return nil
+}
 
 // wireEnum represents an type definition for enum types.
 type wireEnum struct {
@@ -921,45 +1001,63 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Labels")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Labels")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Labels))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Labels) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Labels {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Labels))
 			if err != nil {
 				return err
 			}
-			if err := elemTarget7.FromString(string(elem8), tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+			for i, elem10 := range m.Labels {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
+				if err := elemTarget9.FromString(string(elem10), tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1009,6 +1107,10 @@
 
 	return nil
 }
+func (t *wireEnumTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireEnum{}
+	return nil
+}
 
 // wireArray represents an type definition for array types.
 type wireArray struct {
@@ -1027,41 +1129,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Elem")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Elem")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Elem.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Elem == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Elem.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Len")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Len")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromUint(uint64(m.Len), tt.NonOptional().Field(2).Type); err != nil {
-			return err
+
+		var10 := (m.Len == uint64(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromUint(uint64(m.Len), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -1116,6 +1241,10 @@
 
 	return nil
 }
+func (t *wireArrayTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireArray{}
+	return nil
+}
 
 // wireList represents a type definition for list types.
 type wireList struct {
@@ -1133,29 +1262,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Elem")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Elem")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Elem.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Elem == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Elem.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1205,6 +1349,10 @@
 
 	return nil
 }
+func (t *wireListTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireList{}
+	return nil
+}
 
 // wireSet represents a type definition for set types.
 type wireSet struct {
@@ -1222,29 +1370,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Key")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Key.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Key == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Key.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1294,6 +1457,10 @@
 
 	return nil
 }
+func (t *wireSetTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireSet{}
+	return nil
+}
 
 // wireMap represents a type definition for map types.
 type wireMap struct {
@@ -1312,42 +1479,65 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Key")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Key")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Key.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Key == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Key.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Elem")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Elem")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Elem.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-			return err
+		var10 := (m.Elem == typeId(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Elem.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
@@ -1402,6 +1592,10 @@
 
 	return nil
 }
+func (t *wireMapTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireMap{}
+	return nil
+}
 
 // wireField represents a field in a struct or union type.
 type wireField struct {
@@ -1419,29 +1613,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Type")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Type")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Type.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Type == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Type.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1491,6 +1700,10 @@
 
 	return nil
 }
+func (t *wireFieldTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireField{}
+	return nil
+}
 
 // wireStruct represents a type definition for struct types.
 type wireStruct struct {
@@ -1508,46 +1721,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Fields")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Fields")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Fields))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Fields) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Fields {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Fields))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Fields {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1597,6 +1828,10 @@
 
 	return nil
 }
+func (t *wireStructTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireStruct{}
+	return nil
+}
 
 // []wireField
 type __VDLTarget1_list struct {
@@ -1630,6 +1865,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []wireField(nil)
+	return nil
+}
 
 // wireUnion represents a type definition for union types.
 type wireUnion struct {
@@ -1647,46 +1886,64 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Fields")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Fields")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Fields))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Fields) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Fields {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Fields))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Fields {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1736,6 +1993,10 @@
 
 	return nil
 }
+func (t *wireUnionTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireUnion{}
+	return nil
+}
 
 // wireOptional represents an type definition for optional types.
 type wireOptional struct {
@@ -1753,29 +2014,44 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
-			return err
+
+		var4 := (m.Name == "")
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget3.FromString(string(m.Name), tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Elem")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Elem")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Elem.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.Elem == typeId(0))
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Elem.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -1825,6 +2101,10 @@
 
 	return nil
 }
+func (t *wireOptionalTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireOptional{}
+	return nil
+}
 
 type (
 	// wireType represents any single field of the wireType union type.
@@ -2248,6 +2528,10 @@
 
 	return nil
 }
+func (t *wireTypeTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = wireType(wireTypeNamedT{})
+	return nil
+}
 
 type wireTypeTargetFactory struct{}
 
@@ -2258,28 +2542,6 @@
 	return nil, fmt.Errorf("got %T, want *wireType", union)
 }
 
-// Create zero values for each type.
-var (
-	__VDLZeroControlKind = ControlKindNil
-	__VDLZeroPrimitive   = Primitive(PrimitivePBool{})
-	__VDLZeroDumpKind    = DumpKindVersion
-	__VDLZeroDumpAtom    = DumpAtom{
-		Data: PrimitivePBool{},
-	}
-	__VDLZerotypeId       = typeId(0)
-	__VDLZerowireNamed    = wireNamed{}
-	__VDLZerowireEnum     = wireEnum{}
-	__VDLZerowireArray    = wireArray{}
-	__VDLZerowireList     = wireList{}
-	__VDLZerowireSet      = wireSet{}
-	__VDLZerowireMap      = wireMap{}
-	__VDLZerowireField    = wireField{}
-	__VDLZerowireStruct   = wireStruct{}
-	__VDLZerowireUnion    = wireUnion{}
-	__VDLZerowireOptional = wireOptional{}
-	__VDLZerowireType     = wireType(wireTypeNamedT{})
-)
-
 //////////////////////////////////////////////////
 // Const definitions
 
@@ -2330,6 +2592,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*ControlKind)(nil))
diff --git a/vtrace/.api b/vtrace/.api
index e19ebae..a51deb6 100644
--- a/vtrace/.api
+++ b/vtrace/.api
@@ -16,24 +16,28 @@
 pkg vtrace, method (*Annotation) MakeVDLTarget() vdl.Target
 pkg vtrace, method (*AnnotationTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vtrace, method (*AnnotationTarget) FinishFields(vdl.FieldsTarget) error
+pkg vtrace, method (*AnnotationTarget) FromZero(*vdl.Type) error
 pkg vtrace, method (*AnnotationTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vtrace, method (*AnnotationTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vtrace, method (*Request) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vtrace, method (*Request) MakeVDLTarget() vdl.Target
 pkg vtrace, method (*RequestTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vtrace, method (*RequestTarget) FinishFields(vdl.FieldsTarget) error
+pkg vtrace, method (*RequestTarget) FromZero(*vdl.Type) error
 pkg vtrace, method (*RequestTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vtrace, method (*RequestTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vtrace, method (*Response) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vtrace, method (*Response) MakeVDLTarget() vdl.Target
 pkg vtrace, method (*ResponseTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vtrace, method (*ResponseTarget) FinishFields(vdl.FieldsTarget) error
+pkg vtrace, method (*ResponseTarget) FromZero(*vdl.Type) error
 pkg vtrace, method (*ResponseTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vtrace, method (*ResponseTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vtrace, method (*SpanRecord) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vtrace, method (*SpanRecord) MakeVDLTarget() vdl.Target
 pkg vtrace, method (*SpanRecordTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vtrace, method (*SpanRecordTarget) FinishFields(vdl.FieldsTarget) error
+pkg vtrace, method (*SpanRecordTarget) FromZero(*vdl.Type) error
 pkg vtrace, method (*SpanRecordTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vtrace, method (*SpanRecordTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vtrace, method (*TraceFlags) FillVDLTarget(vdl.Target, *vdl.Type) error
@@ -41,10 +45,12 @@
 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
+pkg vtrace, method (*TraceFlagsTarget) FromZero(*vdl.Type) error
 pkg vtrace, method (*TraceRecord) FillVDLTarget(vdl.Target, *vdl.Type) error
 pkg vtrace, method (*TraceRecord) MakeVDLTarget() vdl.Target
 pkg vtrace, method (*TraceRecordTarget) FinishField(vdl.Target, vdl.Target) error
 pkg vtrace, method (*TraceRecordTarget) FinishFields(vdl.FieldsTarget) error
+pkg vtrace, method (*TraceRecordTarget) FromZero(*vdl.Type) error
 pkg vtrace, method (*TraceRecordTarget) StartField(string) (vdl.Target, vdl.Target, error)
 pkg vtrace, method (*TraceRecordTarget) StartFields(*vdl.Type) (vdl.FieldsTarget, error)
 pkg vtrace, type Annotation struct
diff --git a/vtrace/vtrace.vdl.go b/vtrace/vtrace.vdl.go
index 6da4b89..bfcd72b 100644
--- a/vtrace/vtrace.vdl.go
+++ b/vtrace/vtrace.vdl.go
@@ -41,7 +41,6 @@
 	if err != nil {
 		return err
 	}
-
 	var wireValue2 time_2.Time
 	if err := time_2.TimeFromNative(&wireValue2, m.When); err != nil {
 		return err
@@ -53,22 +52,38 @@
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue2.FillVDLTarget(fieldTarget4, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var5 := (wireValue2 == time_2.Time{})
+		if var5 {
+			if err := fieldTarget4.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue2.FillVDLTarget(fieldTarget4, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
 			return err
 		}
 	}
-	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Message")
+	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Message")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget6.FromString(string(m.Message), tt.NonOptional().Field(1).Type); err != nil {
-			return err
+
+		var8 := (m.Message == "")
+		if var8 {
+			if err := fieldTarget7.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget7.FromString(string(m.Message), tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
 			return err
 		}
 	}
@@ -118,6 +133,10 @@
 
 	return nil
 }
+func (t *AnnotationTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Annotation{}
+	return nil
+}
 
 // A SpanRecord is the wire format for a Span.
 type SpanRecord struct {
@@ -140,108 +159,158 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Id == uniqueid.Id{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Parent")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Parent")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Parent.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
-			return err
-		}
-	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Name")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget7.FromString(string(m.Name), tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	var wireValue8 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue8, m.Start); err != nil {
-		return err
-	}
+		var7 := (m.Parent == uniqueid.Id{})
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
 
-	keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Start")
+			if err := m.Parent.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
+			return err
+		}
+	}
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Name")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue8.FillVDLTarget(fieldTarget10, tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var10 := (m.Name == "")
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget9.FromString(string(m.Name), tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
 	var wireValue11 time_2.Time
-	if err := time_2.TimeFromNative(&wireValue11, m.End); err != nil {
+	if err := time_2.TimeFromNative(&wireValue11, m.Start); err != nil {
 		return err
 	}
 
-	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("End")
+	keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Start")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := wireValue11.FillVDLTarget(fieldTarget13, tt.NonOptional().Field(4).Type); err != nil {
-			return err
+		var14 := (wireValue11 == time_2.Time{})
+		if var14 {
+			if err := fieldTarget13.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue11.FillVDLTarget(fieldTarget13, tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
 			return err
 		}
 	}
-	keyTarget14, fieldTarget15, err := fieldsTarget1.StartField("Annotations")
+	var wireValue15 time_2.Time
+	if err := time_2.TimeFromNative(&wireValue15, m.End); err != nil {
+		return err
+	}
+
+	keyTarget16, fieldTarget17, err := fieldsTarget1.StartField("End")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget16, err := fieldTarget15.StartList(tt.NonOptional().Field(5).Type, len(m.Annotations))
-		if err != nil {
+		var18 := (wireValue15 == time_2.Time{})
+		if var18 {
+			if err := fieldTarget17.FromZero(tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := wireValue15.FillVDLTarget(fieldTarget17, tt.NonOptional().Field(4).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget16, fieldTarget17); err != nil {
 			return err
 		}
-		for i, elem18 := range m.Annotations {
-			elemTarget17, err := listTarget16.StartElem(i)
+	}
+	keyTarget19, fieldTarget20, err := fieldsTarget1.StartField("Annotations")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var var21 bool
+		if len(m.Annotations) == 0 {
+			var21 = true
+		}
+		if var21 {
+			if err := fieldTarget20.FromZero(tt.NonOptional().Field(5).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget22, err := fieldTarget20.StartList(tt.NonOptional().Field(5).Type, len(m.Annotations))
 			if err != nil {
 				return err
 			}
+			for i, elem24 := range m.Annotations {
+				elemTarget23, err := listTarget22.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem18.FillVDLTarget(elemTarget17, tt.NonOptional().Field(5).Type.Elem()); err != nil {
-				return err
+				if err := elem24.FillVDLTarget(elemTarget23, tt.NonOptional().Field(5).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget22.FinishElem(elemTarget23); err != nil {
+					return err
+				}
 			}
-			if err := listTarget16.FinishElem(elemTarget17); err != nil {
+			if err := fieldTarget20.FinishList(listTarget22); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget15.FinishList(listTarget16); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget14, fieldTarget15); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget19, fieldTarget20); err != nil {
 			return err
 		}
 	}
@@ -311,6 +380,10 @@
 
 	return nil
 }
+func (t *SpanRecordTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = SpanRecord{}
+	return nil
+}
 
 // []Annotation
 type __VDLTarget1_list struct {
@@ -344,6 +417,10 @@
 
 	return nil
 }
+func (t *__VDLTarget1_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []Annotation(nil)
+	return nil
+}
 
 type TraceRecord struct {
 	Id    uniqueid.Id
@@ -360,47 +437,65 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Id")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Id == uniqueid.Id{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Id.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Spans")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Spans")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		listTarget6, err := fieldTarget5.StartList(tt.NonOptional().Field(1).Type, len(m.Spans))
-		if err != nil {
-			return err
+		var var7 bool
+		if len(m.Spans) == 0 {
+			var7 = true
 		}
-		for i, elem8 := range m.Spans {
-			elemTarget7, err := listTarget6.StartElem(i)
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			listTarget8, err := fieldTarget6.StartList(tt.NonOptional().Field(1).Type, len(m.Spans))
 			if err != nil {
 				return err
 			}
+			for i, elem10 := range m.Spans {
+				elemTarget9, err := listTarget8.StartElem(i)
+				if err != nil {
+					return err
+				}
 
-			if err := elem8.FillVDLTarget(elemTarget7, tt.NonOptional().Field(1).Type.Elem()); err != nil {
-				return err
+				if err := elem10.FillVDLTarget(elemTarget9, tt.NonOptional().Field(1).Type.Elem()); err != nil {
+					return err
+				}
+				if err := listTarget8.FinishElem(elemTarget9); err != nil {
+					return err
+				}
 			}
-			if err := listTarget6.FinishElem(elemTarget7); err != nil {
+			if err := fieldTarget6.FinishList(listTarget8); err != nil {
 				return err
 			}
 		}
-		if err := fieldTarget5.FinishList(listTarget6); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -450,6 +545,10 @@
 
 	return nil
 }
+func (t *TraceRecordTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TraceRecord{}
+	return nil
+}
 
 // []SpanRecord
 type __VDLTarget2_list struct {
@@ -483,6 +582,10 @@
 
 	return nil
 }
+func (t *__VDLTarget2_list) FromZero(tt *vdl.Type) error {
+	*t.Value = []SpanRecord(nil)
+	return nil
+}
 
 type TraceFlags int32
 
@@ -537,6 +640,10 @@
 
 	return nil
 }
+func (t *TraceFlagsTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = TraceFlags(0)
+	return nil
+}
 
 // Request is the object that carries trace informtion between processes.
 type Request struct {
@@ -556,58 +663,89 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("SpanId")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.SpanId.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.SpanId == uniqueid.Id{})
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.SpanId.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("TraceId")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("TraceId")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.TraceId.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := (m.TraceId == uniqueid.Id{})
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.TraceId.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
-	keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Flags")
+	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("Flags")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Flags.FillVDLTarget(fieldTarget7, tt.NonOptional().Field(2).Type); err != nil {
-			return err
-		}
-		if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
-			return err
-		}
-	}
-	keyTarget8, fieldTarget9, err := fieldsTarget1.StartField("LogLevel")
-	if err != vdl.ErrFieldNoExist && err != nil {
-		return err
-	}
-	if err != vdl.ErrFieldNoExist {
-		if err := fieldTarget9.FromInt(int64(m.LogLevel), tt.NonOptional().Field(3).Type); err != nil {
-			return err
+		var10 := (m.Flags == TraceFlags(0))
+		if var10 {
+			if err := fieldTarget9.FromZero(tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Flags.FillVDLTarget(fieldTarget9, tt.NonOptional().Field(2).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget8, fieldTarget9); err != nil {
 			return err
 		}
 	}
+	keyTarget11, fieldTarget12, err := fieldsTarget1.StartField("LogLevel")
+	if err != vdl.ErrFieldNoExist && err != nil {
+		return err
+	}
+	if err != vdl.ErrFieldNoExist {
+
+		var13 := (m.LogLevel == int32(0))
+		if var13 {
+			if err := fieldTarget12.FromZero(tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		} else {
+			if err := fieldTarget12.FromInt(int64(m.LogLevel), tt.NonOptional().Field(3).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget11, fieldTarget12); err != nil {
+			return err
+		}
+	}
 	if err := t.FinishFields(fieldsTarget1); err != nil {
 		return err
 	}
@@ -664,6 +802,10 @@
 
 	return nil
 }
+func (t *RequestTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Request{}
+	return nil
+}
 
 type Response struct {
 	// Flags give options for trace collection, the client should alter its
@@ -684,30 +826,52 @@
 	if err != nil {
 		return err
 	}
-
 	keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("Flags")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Flags.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
-			return err
+		var4 := (m.Flags == TraceFlags(0))
+		if var4 {
+			if err := fieldTarget3.FromZero(tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Flags.FillVDLTarget(fieldTarget3, tt.NonOptional().Field(0).Type); err != nil {
+				return err
+			}
 		}
 		if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
 			return err
 		}
 	}
-	keyTarget4, fieldTarget5, err := fieldsTarget1.StartField("Trace")
+	keyTarget5, fieldTarget6, err := fieldsTarget1.StartField("Trace")
 	if err != vdl.ErrFieldNoExist && err != nil {
 		return err
 	}
 	if err != vdl.ErrFieldNoExist {
 
-		if err := m.Trace.FillVDLTarget(fieldTarget5, tt.NonOptional().Field(1).Type); err != nil {
-			return err
+		var7 := true
+		var8 := (m.Trace.Id == uniqueid.Id{})
+		var7 = var7 && var8
+		var var9 bool
+		if len(m.Trace.Spans) == 0 {
+			var9 = true
 		}
-		if err := fieldsTarget1.FinishField(keyTarget4, fieldTarget5); err != nil {
+		var7 = var7 && var9
+		if var7 {
+			if err := fieldTarget6.FromZero(tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		} else {
+
+			if err := m.Trace.FillVDLTarget(fieldTarget6, tt.NonOptional().Field(1).Type); err != nil {
+				return err
+			}
+		}
+		if err := fieldsTarget1.FinishField(keyTarget5, fieldTarget6); err != nil {
 			return err
 		}
 	}
@@ -757,16 +921,10 @@
 
 	return nil
 }
-
-// Create zero values for each type.
-var (
-	__VDLZeroAnnotation  = Annotation{}
-	__VDLZeroSpanRecord  = SpanRecord{}
-	__VDLZeroTraceRecord = TraceRecord{}
-	__VDLZeroTraceFlags  = TraceFlags(0)
-	__VDLZeroRequest     = Request{}
-	__VDLZeroResponse    = Response{}
-)
+func (t *ResponseTarget) FromZero(tt *vdl.Type) error {
+	*t.Value = Response{}
+	return nil
+}
 
 //////////////////////////////////////////////////
 // Const definitions
@@ -793,6 +951,7 @@
 	if __VDLInitCalled {
 		return struct{}{}
 	}
+	__VDLInitCalled = true
 
 	// Register types.
 	vdl.Register((*Annotation)(nil))