jni: Allocate all target dependencies at once

MultiPart: 4/5
Change-Id: Id0e95e55c01eda5cc87f219985dd7616c6b60a21
diff --git a/test/fortune/fortune.vdl.go b/test/fortune/fortune.vdl.go
index fb19a99..47f1bef 100644
--- a/test/fortune/fortune.vdl.go
+++ b/test/fortune/fortune.vdl.go
@@ -103,7 +103,10 @@
 }
 
 type ComplexErrorParamTarget struct {
-	Value *ComplexErrorParam
+	Value      *ComplexErrorParam
+	strTarget  vdl.StringTarget
+	numTarget  vdl.Int32Target
+	listTarget unnamed_5b5d75696e743332Target
 	vdl.TargetBase
 	vdl.FieldsTargetBase
 }
@@ -117,14 +120,17 @@
 func (t *ComplexErrorParamTarget) StartField(name string) (key, field vdl.Target, _ error) {
 	switch name {
 	case "Str":
-		val, err := &vdl.StringTarget{Value: &t.Value.Str}, error(nil)
-		return nil, val, err
+		t.strTarget.Value = &t.Value.Str
+		target, err := &t.strTarget, error(nil)
+		return nil, target, err
 	case "Num":
-		val, err := &vdl.Int32Target{Value: &t.Value.Num}, error(nil)
-		return nil, val, err
+		t.numTarget.Value = &t.Value.Num
+		target, err := &t.numTarget, error(nil)
+		return nil, target, err
 	case "List":
-		val, err := &unnamed_5b5d75696e743332_Target{Value: &t.Value.List}, error(nil)
-		return nil, val, err
+		t.listTarget.Value = &t.Value.List
+		target, err := &t.listTarget, error(nil)
+		return nil, target, err
 	default:
 		return nil, nil, fmt.Errorf("field %s not in struct %v", name, __VDLType_v_io_x_jni_test_fortune_ComplexErrorParam)
 	}
@@ -137,13 +143,15 @@
 	return nil
 }
 
-type unnamed_5b5d75696e743332_Target struct {
-	Value *[]uint32
+// []uint32
+type unnamed_5b5d75696e743332Target struct {
+	Value      *[]uint32
+	elemTarget vdl.Uint32Target
 	vdl.TargetBase
 	vdl.ListTargetBase
 }
 
-func (t *unnamed_5b5d75696e743332_Target) StartList(tt *vdl.Type, len int) (vdl.ListTarget, error) {
+func (t *unnamed_5b5d75696e743332Target) StartList(tt *vdl.Type, len int) (vdl.ListTarget, error) {
 	if !vdl.Compatible(tt, __VDLType1) {
 		return nil, fmt.Errorf("type %v incompatible with %v", tt, __VDLType1)
 	}
@@ -154,13 +162,15 @@
 	}
 	return t, nil
 }
-func (t *unnamed_5b5d75696e743332_Target) StartElem(index int) (elem vdl.Target, _ error) {
-	return &vdl.Uint32Target{Value: &(*t.Value)[index]}, error(nil)
+func (t *unnamed_5b5d75696e743332Target) StartElem(index int) (elem vdl.Target, _ error) {
+	t.elemTarget.Value = &(*t.Value)[index]
+	target, err := &t.elemTarget, error(nil)
+	return target, err
 }
-func (t *unnamed_5b5d75696e743332_Target) FinishElem(elem vdl.Target) error {
+func (t *unnamed_5b5d75696e743332Target) FinishElem(elem vdl.Target) error {
 	return nil
 }
-func (t *unnamed_5b5d75696e743332_Target) FinishList(elem vdl.ListTarget) error {
+func (t *unnamed_5b5d75696e743332Target) FinishList(elem vdl.ListTarget) error {
 
 	return nil
 }