github.com/chrislusf/greenpack@v3.7.1-0.20170911073826-ad5bd10b7c47+incompatible/testdata/my_msgp_gen.go (about)

     1  package testdata
     2  
     3  // NOTE: THIS FILE WAS PRODUCED BY THE
     4  // GREENPACK CODE GENERATION TOOL (github.com/glycerine/greenpack)
     5  // DO NOT EDIT
     6  
     7  import (
     8  	"github.com/glycerine/greenpack/msgp"
     9  )
    10  
    11  // MSGPfieldsNotEmpty supports omitempty tags
    12  func (z *A) MSGPfieldsNotEmpty(isempty []bool) uint32 {
    13  	if len(isempty) == 0 {
    14  		return 6
    15  	}
    16  	var fieldsInUse uint32 = 6
    17  	isempty[0] = (len(z.Name) == 0) // string, omitempty
    18  	if isempty[0] {
    19  		fieldsInUse--
    20  	}
    21  	isempty[1] = (z.Bday.IsZero()) // time.Time, omitempty
    22  	if isempty[1] {
    23  		fieldsInUse--
    24  	}
    25  	isempty[2] = (len(z.Phone) == 0) // string, omitempty
    26  	if isempty[2] {
    27  		fieldsInUse--
    28  	}
    29  	isempty[3] = (z.Sibs == 0) // number, omitempty
    30  	if isempty[3] {
    31  		fieldsInUse--
    32  	}
    33  	isempty[4] = (z.GPA == 0) // number, omitempty
    34  	if isempty[4] {
    35  		fieldsInUse--
    36  	}
    37  	isempty[5] = (!z.Friend) // bool, omitempty
    38  	if isempty[5] {
    39  		fieldsInUse--
    40  	}
    41  
    42  	return fieldsInUse
    43  }
    44  
    45  // MSGPMarshalMsg implements msgp.Marshaler
    46  func (z *A) MSGPMarshalMsg(b []byte) (o []byte, err error) {
    47  	if p, ok := interface{}(z).(msgp.PreSave); ok {
    48  		p.PreSaveHook()
    49  	}
    50  
    51  	o = msgp.Require(b, z.MSGPMsgsize())
    52  
    53  	// honor the omitempty tags
    54  	var empty [6]bool
    55  	fieldsInUse := z.fieldsNotEmpty(empty[:])
    56  	o = msgp.AppendMapHeader(o, fieldsInUse)
    57  
    58  	if !empty[0] {
    59  		// string "name_zid00_str"
    60  		o = append(o, 0xae, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x73, 0x74, 0x72)
    61  		o = msgp.AppendString(o, z.Name)
    62  	}
    63  
    64  	if !empty[1] {
    65  		// string "Bday_zid01_tim"
    66  		o = append(o, 0xae, 0x42, 0x64, 0x61, 0x79, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x74, 0x69, 0x6d)
    67  		o = msgp.AppendTime(o, z.Bday)
    68  	}
    69  
    70  	if !empty[2] {
    71  		// string "phone_zid02_str"
    72  		o = append(o, 0xaf, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x32, 0x5f, 0x73, 0x74, 0x72)
    73  		o = msgp.AppendString(o, z.Phone)
    74  	}
    75  
    76  	if !empty[3] {
    77  		// string "Sibs_zid03_int"
    78  		o = append(o, 0xae, 0x53, 0x69, 0x62, 0x73, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x33, 0x5f, 0x69, 0x6e, 0x74)
    79  		o = msgp.AppendInt(o, z.Sibs)
    80  	}
    81  
    82  	if !empty[4] {
    83  		// string "GPA_zid04_f64"
    84  		o = append(o, 0xad, 0x47, 0x50, 0x41, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x34, 0x5f, 0x66, 0x36, 0x34)
    85  		o = msgp.AppendFloat64(o, z.GPA)
    86  	}
    87  
    88  	if !empty[5] {
    89  		// string "Friend_zid05_boo"
    90  		o = append(o, 0xb0, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x35, 0x5f, 0x62, 0x6f, 0x6f)
    91  		o = msgp.AppendBool(o, z.Friend)
    92  	}
    93  
    94  	return
    95  }
    96  
    97  // MSGPUnmarshalMsg implements msgp.Unmarshaler
    98  func (z *A) MSGPUnmarshalMsg(bts []byte) (o []byte, err error) {
    99  	return z.MSGPUnmarshalMsgWithCfg(bts, nil)
   100  }
   101  func (z *A) MSGPUnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
   102  	var nbs msgp.NilBitsStack
   103  	nbs.Init(cfg)
   104  	var sawTopNil bool
   105  	if msgp.IsNil(bts) {
   106  		sawTopNil = true
   107  		bts = nbs.PushAlwaysNil(bts[1:])
   108  	}
   109  
   110  	var field []byte
   111  	_ = field
   112  	const maxFields0zgensym_58b5c2649cecee38_1 = 6
   113  
   114  	// -- templateUnmarshalMsg starts here--
   115  	var totalEncodedFields0zgensym_58b5c2649cecee38_1 uint32
   116  	if !nbs.AlwaysNil {
   117  		totalEncodedFields0zgensym_58b5c2649cecee38_1, bts, err = nbs.ReadMapHeaderBytes(bts)
   118  		if err != nil {
   119  			return
   120  		}
   121  	}
   122  	encodedFieldsLeft0zgensym_58b5c2649cecee38_1 := totalEncodedFields0zgensym_58b5c2649cecee38_1
   123  	missingFieldsLeft0zgensym_58b5c2649cecee38_1 := maxFields0zgensym_58b5c2649cecee38_1 - totalEncodedFields0zgensym_58b5c2649cecee38_1
   124  
   125  	var nextMiss0zgensym_58b5c2649cecee38_1 int32 = -1
   126  	var found0zgensym_58b5c2649cecee38_1 [maxFields0zgensym_58b5c2649cecee38_1]bool
   127  	var curField0zgensym_58b5c2649cecee38_1 string
   128  
   129  doneWithStruct0zgensym_58b5c2649cecee38_1:
   130  	// First fill all the encoded fields, then
   131  	// treat the remaining, missing fields, as Nil.
   132  	for encodedFieldsLeft0zgensym_58b5c2649cecee38_1 > 0 || missingFieldsLeft0zgensym_58b5c2649cecee38_1 > 0 {
   133  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft0zgensym_58b5c2649cecee38_1, missingFieldsLeft0zgensym_58b5c2649cecee38_1, msgp.ShowFound(found0zgensym_58b5c2649cecee38_1[:]), unmarshalMsgFieldOrder0zgensym_58b5c2649cecee38_1)
   134  		if encodedFieldsLeft0zgensym_58b5c2649cecee38_1 > 0 {
   135  			encodedFieldsLeft0zgensym_58b5c2649cecee38_1--
   136  			field, bts, err = nbs.ReadMapKeyZC(bts)
   137  			if err != nil {
   138  				return
   139  			}
   140  			curField0zgensym_58b5c2649cecee38_1 = msgp.UnsafeString(field)
   141  		} else {
   142  			//missing fields need handling
   143  			if nextMiss0zgensym_58b5c2649cecee38_1 < 0 {
   144  				// set bts to contain just mnil (0xc0)
   145  				bts = nbs.PushAlwaysNil(bts)
   146  				nextMiss0zgensym_58b5c2649cecee38_1 = 0
   147  			}
   148  			for nextMiss0zgensym_58b5c2649cecee38_1 < maxFields0zgensym_58b5c2649cecee38_1 && (found0zgensym_58b5c2649cecee38_1[nextMiss0zgensym_58b5c2649cecee38_1] || unmarshalMsgFieldSkip0zgensym_58b5c2649cecee38_1[nextMiss0zgensym_58b5c2649cecee38_1]) {
   149  				nextMiss0zgensym_58b5c2649cecee38_1++
   150  			}
   151  			if nextMiss0zgensym_58b5c2649cecee38_1 == maxFields0zgensym_58b5c2649cecee38_1 {
   152  				// filled all the empty fields!
   153  				break doneWithStruct0zgensym_58b5c2649cecee38_1
   154  			}
   155  			missingFieldsLeft0zgensym_58b5c2649cecee38_1--
   156  			curField0zgensym_58b5c2649cecee38_1 = unmarshalMsgFieldOrder0zgensym_58b5c2649cecee38_1[nextMiss0zgensym_58b5c2649cecee38_1]
   157  		}
   158  		//fmt.Printf("switching on curField: '%v'\n", curField0zgensym_58b5c2649cecee38_1)
   159  		switch curField0zgensym_58b5c2649cecee38_1 {
   160  		// -- templateUnmarshalMsg ends here --
   161  
   162  		case "name_zid00_str":
   163  			found0zgensym_58b5c2649cecee38_1[0] = true
   164  			z.Name, bts, err = nbs.ReadStringBytes(bts)
   165  
   166  			if err != nil {
   167  				return
   168  			}
   169  		case "Bday_zid01_tim":
   170  			found0zgensym_58b5c2649cecee38_1[1] = true
   171  			z.Bday, bts, err = nbs.ReadTimeBytes(bts)
   172  
   173  			if err != nil {
   174  				return
   175  			}
   176  		case "phone_zid02_str":
   177  			found0zgensym_58b5c2649cecee38_1[2] = true
   178  			z.Phone, bts, err = nbs.ReadStringBytes(bts)
   179  
   180  			if err != nil {
   181  				return
   182  			}
   183  		case "Sibs_zid03_int":
   184  			found0zgensym_58b5c2649cecee38_1[3] = true
   185  			z.Sibs, bts, err = nbs.ReadIntBytes(bts)
   186  
   187  			if err != nil {
   188  				return
   189  			}
   190  		case "GPA_zid04_f64":
   191  			found0zgensym_58b5c2649cecee38_1[4] = true
   192  			z.GPA, bts, err = nbs.ReadFloat64Bytes(bts)
   193  
   194  			if err != nil {
   195  				return
   196  			}
   197  		case "Friend_zid05_boo":
   198  			found0zgensym_58b5c2649cecee38_1[5] = true
   199  			z.Friend, bts, err = nbs.ReadBoolBytes(bts)
   200  
   201  			if err != nil {
   202  				return
   203  			}
   204  		default:
   205  			bts, err = msgp.Skip(bts)
   206  			if err != nil {
   207  				return
   208  			}
   209  		}
   210  	}
   211  	if nextMiss0zgensym_58b5c2649cecee38_1 != -1 {
   212  		bts = nbs.PopAlwaysNil()
   213  	}
   214  
   215  	if sawTopNil {
   216  		bts = nbs.PopAlwaysNil()
   217  	}
   218  	o = bts
   219  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   220  		p.PostLoadHook()
   221  	}
   222  
   223  	return
   224  }
   225  
   226  // fields of A
   227  var unmarshalMsgFieldOrder0zgensym_58b5c2649cecee38_1 = []string{"name_zid00_str", "Bday_zid01_tim", "phone_zid02_str", "Sibs_zid03_int", "GPA_zid04_f64", "Friend_zid05_boo"}
   228  
   229  var unmarshalMsgFieldSkip0zgensym_58b5c2649cecee38_1 = []bool{false, false, false, false, false, false}
   230  
   231  // MSGPMsgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
   232  func (z *A) MSGPMsgsize() (s int) {
   233  	s = 1 + 15 + msgp.StringPrefixSize + len(z.Name) + 15 + msgp.TimeSize + 16 + msgp.StringPrefixSize + len(z.Phone) + 15 + msgp.IntSize + 14 + msgp.Float64Size + 17 + msgp.BoolSize
   234  	return
   235  }
   236  
   237  // MSGPfieldsNotEmpty supports omitempty tags
   238  func (z *Big) MSGPfieldsNotEmpty(isempty []bool) uint32 {
   239  	if len(isempty) == 0 {
   240  		return 5
   241  	}
   242  	var fieldsInUse uint32 = 5
   243  	isempty[0] = (len(z.Slice) == 0) // string, omitempty
   244  	if isempty[0] {
   245  		fieldsInUse--
   246  	}
   247  	isempty[1] = (len(z.Transform) == 0) // string, omitempty
   248  	if isempty[1] {
   249  		fieldsInUse--
   250  	}
   251  	isempty[2] = (z.Myptr == nil) // pointer, omitempty
   252  	if isempty[2] {
   253  		fieldsInUse--
   254  	}
   255  	isempty[3] = (len(z.Myarray) == 0) // string, omitempty
   256  	if isempty[3] {
   257  		fieldsInUse--
   258  	}
   259  	isempty[4] = (len(z.MySlice) == 0) // string, omitempty
   260  	if isempty[4] {
   261  		fieldsInUse--
   262  	}
   263  
   264  	return fieldsInUse
   265  }
   266  
   267  // MSGPMarshalMsg implements msgp.Marshaler
   268  func (z *Big) MSGPMarshalMsg(b []byte) (o []byte, err error) {
   269  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   270  		p.PreSaveHook()
   271  	}
   272  
   273  	o = msgp.Require(b, z.MSGPMsgsize())
   274  
   275  	// honor the omitempty tags
   276  	var empty [5]bool
   277  	fieldsInUse := z.fieldsNotEmpty(empty[:])
   278  	o = msgp.AppendMapHeader(o, fieldsInUse)
   279  
   280  	if !empty[0] {
   281  		// string "Slice_zid00_slc"
   282  		o = append(o, 0xaf, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x73, 0x6c, 0x63)
   283  		o = msgp.AppendArrayHeader(o, uint32(len(z.Slice)))
   284  		for zgensym_58b5c2649cecee38_2 := range z.Slice {
   285  			o, err = z.Slice[zgensym_58b5c2649cecee38_2].MSGPMarshalMsg(o)
   286  			if err != nil {
   287  				return
   288  			}
   289  		}
   290  	}
   291  
   292  	if !empty[1] {
   293  		// string "Transform_zid01_map"
   294  		o = append(o, 0xb3, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x6d, 0x61, 0x70)
   295  		o = msgp.AppendMapHeader(o, uint32(len(z.Transform)))
   296  		for zgensym_58b5c2649cecee38_3, zgensym_58b5c2649cecee38_4 := range z.Transform {
   297  			o = msgp.AppendInt(o, zgensym_58b5c2649cecee38_3)
   298  			if zgensym_58b5c2649cecee38_4 == nil {
   299  				o = msgp.AppendNil(o)
   300  			} else {
   301  				o, err = zgensym_58b5c2649cecee38_4.MSGPMarshalMsg(o)
   302  				if err != nil {
   303  					return
   304  				}
   305  			}
   306  		}
   307  	}
   308  
   309  	if !empty[2] {
   310  		// string "Myptr_zid02_ptr"
   311  		o = append(o, 0xaf, 0x4d, 0x79, 0x70, 0x74, 0x72, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x32, 0x5f, 0x70, 0x74, 0x72)
   312  		if z.Myptr == nil {
   313  			o = msgp.AppendNil(o)
   314  		} else {
   315  			o, err = z.Myptr.MSGPMarshalMsg(o)
   316  			if err != nil {
   317  				return
   318  			}
   319  		}
   320  	}
   321  
   322  	if !empty[3] {
   323  		// string "Myarray_zid03_ary"
   324  		o = append(o, 0xb1, 0x4d, 0x79, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x33, 0x5f, 0x61, 0x72, 0x79)
   325  		o = msgp.AppendArrayHeader(o, 3)
   326  		for zgensym_58b5c2649cecee38_5 := range z.Myarray {
   327  			o = msgp.AppendString(o, z.Myarray[zgensym_58b5c2649cecee38_5])
   328  		}
   329  	}
   330  
   331  	if !empty[4] {
   332  		// string "MySlice_zid04_slc"
   333  		o = append(o, 0xb1, 0x4d, 0x79, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x34, 0x5f, 0x73, 0x6c, 0x63)
   334  		o = msgp.AppendArrayHeader(o, uint32(len(z.MySlice)))
   335  		for zgensym_58b5c2649cecee38_6 := range z.MySlice {
   336  			o = msgp.AppendString(o, z.MySlice[zgensym_58b5c2649cecee38_6])
   337  		}
   338  	}
   339  
   340  	return
   341  }
   342  
   343  // MSGPUnmarshalMsg implements msgp.Unmarshaler
   344  func (z *Big) MSGPUnmarshalMsg(bts []byte) (o []byte, err error) {
   345  	return z.MSGPUnmarshalMsgWithCfg(bts, nil)
   346  }
   347  func (z *Big) MSGPUnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
   348  	var nbs msgp.NilBitsStack
   349  	nbs.Init(cfg)
   350  	var sawTopNil bool
   351  	if msgp.IsNil(bts) {
   352  		sawTopNil = true
   353  		bts = nbs.PushAlwaysNil(bts[1:])
   354  	}
   355  
   356  	var field []byte
   357  	_ = field
   358  	const maxFields7zgensym_58b5c2649cecee38_8 = 5
   359  
   360  	// -- templateUnmarshalMsg starts here--
   361  	var totalEncodedFields7zgensym_58b5c2649cecee38_8 uint32
   362  	if !nbs.AlwaysNil {
   363  		totalEncodedFields7zgensym_58b5c2649cecee38_8, bts, err = nbs.ReadMapHeaderBytes(bts)
   364  		if err != nil {
   365  			return
   366  		}
   367  	}
   368  	encodedFieldsLeft7zgensym_58b5c2649cecee38_8 := totalEncodedFields7zgensym_58b5c2649cecee38_8
   369  	missingFieldsLeft7zgensym_58b5c2649cecee38_8 := maxFields7zgensym_58b5c2649cecee38_8 - totalEncodedFields7zgensym_58b5c2649cecee38_8
   370  
   371  	var nextMiss7zgensym_58b5c2649cecee38_8 int32 = -1
   372  	var found7zgensym_58b5c2649cecee38_8 [maxFields7zgensym_58b5c2649cecee38_8]bool
   373  	var curField7zgensym_58b5c2649cecee38_8 string
   374  
   375  doneWithStruct7zgensym_58b5c2649cecee38_8:
   376  	// First fill all the encoded fields, then
   377  	// treat the remaining, missing fields, as Nil.
   378  	for encodedFieldsLeft7zgensym_58b5c2649cecee38_8 > 0 || missingFieldsLeft7zgensym_58b5c2649cecee38_8 > 0 {
   379  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft7zgensym_58b5c2649cecee38_8, missingFieldsLeft7zgensym_58b5c2649cecee38_8, msgp.ShowFound(found7zgensym_58b5c2649cecee38_8[:]), unmarshalMsgFieldOrder7zgensym_58b5c2649cecee38_8)
   380  		if encodedFieldsLeft7zgensym_58b5c2649cecee38_8 > 0 {
   381  			encodedFieldsLeft7zgensym_58b5c2649cecee38_8--
   382  			field, bts, err = nbs.ReadMapKeyZC(bts)
   383  			if err != nil {
   384  				return
   385  			}
   386  			curField7zgensym_58b5c2649cecee38_8 = msgp.UnsafeString(field)
   387  		} else {
   388  			//missing fields need handling
   389  			if nextMiss7zgensym_58b5c2649cecee38_8 < 0 {
   390  				// set bts to contain just mnil (0xc0)
   391  				bts = nbs.PushAlwaysNil(bts)
   392  				nextMiss7zgensym_58b5c2649cecee38_8 = 0
   393  			}
   394  			for nextMiss7zgensym_58b5c2649cecee38_8 < maxFields7zgensym_58b5c2649cecee38_8 && (found7zgensym_58b5c2649cecee38_8[nextMiss7zgensym_58b5c2649cecee38_8] || unmarshalMsgFieldSkip7zgensym_58b5c2649cecee38_8[nextMiss7zgensym_58b5c2649cecee38_8]) {
   395  				nextMiss7zgensym_58b5c2649cecee38_8++
   396  			}
   397  			if nextMiss7zgensym_58b5c2649cecee38_8 == maxFields7zgensym_58b5c2649cecee38_8 {
   398  				// filled all the empty fields!
   399  				break doneWithStruct7zgensym_58b5c2649cecee38_8
   400  			}
   401  			missingFieldsLeft7zgensym_58b5c2649cecee38_8--
   402  			curField7zgensym_58b5c2649cecee38_8 = unmarshalMsgFieldOrder7zgensym_58b5c2649cecee38_8[nextMiss7zgensym_58b5c2649cecee38_8]
   403  		}
   404  		//fmt.Printf("switching on curField: '%v'\n", curField7zgensym_58b5c2649cecee38_8)
   405  		switch curField7zgensym_58b5c2649cecee38_8 {
   406  		// -- templateUnmarshalMsg ends here --
   407  
   408  		case "Slice_zid00_slc":
   409  			found7zgensym_58b5c2649cecee38_8[0] = true
   410  			if nbs.AlwaysNil {
   411  				(z.Slice) = (z.Slice)[:0]
   412  			} else {
   413  
   414  				var zgensym_58b5c2649cecee38_9 uint32
   415  				zgensym_58b5c2649cecee38_9, bts, err = nbs.ReadArrayHeaderBytes(bts)
   416  				if err != nil {
   417  					return
   418  				}
   419  				if cap(z.Slice) >= int(zgensym_58b5c2649cecee38_9) {
   420  					z.Slice = (z.Slice)[:zgensym_58b5c2649cecee38_9]
   421  				} else {
   422  					z.Slice = make([]S2, zgensym_58b5c2649cecee38_9)
   423  				}
   424  				for zgensym_58b5c2649cecee38_2 := range z.Slice {
   425  					bts, err = z.Slice[zgensym_58b5c2649cecee38_2].MSGPUnmarshalMsg(bts)
   426  					if err != nil {
   427  						return
   428  					}
   429  					if err != nil {
   430  						return
   431  					}
   432  				}
   433  			}
   434  		case "Transform_zid01_map":
   435  			found7zgensym_58b5c2649cecee38_8[1] = true
   436  			if nbs.AlwaysNil {
   437  				if len(z.Transform) > 0 {
   438  					for key, _ := range z.Transform {
   439  						delete(z.Transform, key)
   440  					}
   441  				}
   442  
   443  			} else {
   444  
   445  				var zgensym_58b5c2649cecee38_10 uint32
   446  				zgensym_58b5c2649cecee38_10, bts, err = nbs.ReadMapHeaderBytes(bts)
   447  				if err != nil {
   448  					return
   449  				}
   450  				if z.Transform == nil && zgensym_58b5c2649cecee38_10 > 0 {
   451  					z.Transform = make(map[int]*S2, zgensym_58b5c2649cecee38_10)
   452  				} else if len(z.Transform) > 0 {
   453  					for key, _ := range z.Transform {
   454  						delete(z.Transform, key)
   455  					}
   456  				}
   457  				for zgensym_58b5c2649cecee38_10 > 0 {
   458  					var zgensym_58b5c2649cecee38_3 int
   459  					var zgensym_58b5c2649cecee38_4 *S2
   460  					zgensym_58b5c2649cecee38_10--
   461  					zgensym_58b5c2649cecee38_3, bts, err = nbs.ReadIntBytes(bts)
   462  					if err != nil {
   463  						return
   464  					}
   465  					if nbs.AlwaysNil {
   466  						if zgensym_58b5c2649cecee38_4 != nil {
   467  							zgensym_58b5c2649cecee38_4.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
   468  						}
   469  					} else {
   470  						// not nbs.AlwaysNil
   471  						if msgp.IsNil(bts) {
   472  							bts = bts[1:]
   473  							if nil != zgensym_58b5c2649cecee38_4 {
   474  								zgensym_58b5c2649cecee38_4.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
   475  							}
   476  						} else {
   477  							// not nbs.AlwaysNil and not IsNil(bts): have something to read
   478  
   479  							if zgensym_58b5c2649cecee38_4 == nil {
   480  								zgensym_58b5c2649cecee38_4 = new(S2)
   481  							}
   482  							bts, err = zgensym_58b5c2649cecee38_4.MSGPUnmarshalMsg(bts)
   483  							if err != nil {
   484  								return
   485  							}
   486  							if err != nil {
   487  								return
   488  							}
   489  						}
   490  					}
   491  					z.Transform[zgensym_58b5c2649cecee38_3] = zgensym_58b5c2649cecee38_4
   492  				}
   493  			}
   494  		case "Myptr_zid02_ptr":
   495  			found7zgensym_58b5c2649cecee38_8[2] = true
   496  			if nbs.AlwaysNil {
   497  				if z.Myptr != nil {
   498  					z.Myptr.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
   499  				}
   500  			} else {
   501  				// not nbs.AlwaysNil
   502  				if msgp.IsNil(bts) {
   503  					bts = bts[1:]
   504  					if nil != z.Myptr {
   505  						z.Myptr.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
   506  					}
   507  				} else {
   508  					// not nbs.AlwaysNil and not IsNil(bts): have something to read
   509  
   510  					if z.Myptr == nil {
   511  						z.Myptr = new(S2)
   512  					}
   513  					bts, err = z.Myptr.MSGPUnmarshalMsg(bts)
   514  					if err != nil {
   515  						return
   516  					}
   517  					if err != nil {
   518  						return
   519  					}
   520  				}
   521  			}
   522  		case "Myarray_zid03_ary":
   523  			found7zgensym_58b5c2649cecee38_8[3] = true
   524  			var zgensym_58b5c2649cecee38_11 uint32
   525  			zgensym_58b5c2649cecee38_11, bts, err = nbs.ReadArrayHeaderBytes(bts)
   526  			if err != nil {
   527  				return
   528  			}
   529  			if !nbs.IsNil(bts) && zgensym_58b5c2649cecee38_11 != 3 {
   530  				err = msgp.ArrayError{Wanted: 3, Got: zgensym_58b5c2649cecee38_11}
   531  				return
   532  			}
   533  			for zgensym_58b5c2649cecee38_5 := range z.Myarray {
   534  				z.Myarray[zgensym_58b5c2649cecee38_5], bts, err = nbs.ReadStringBytes(bts)
   535  
   536  				if err != nil {
   537  					return
   538  				}
   539  			}
   540  		case "MySlice_zid04_slc":
   541  			found7zgensym_58b5c2649cecee38_8[4] = true
   542  			if nbs.AlwaysNil {
   543  				(z.MySlice) = (z.MySlice)[:0]
   544  			} else {
   545  
   546  				var zgensym_58b5c2649cecee38_12 uint32
   547  				zgensym_58b5c2649cecee38_12, bts, err = nbs.ReadArrayHeaderBytes(bts)
   548  				if err != nil {
   549  					return
   550  				}
   551  				if cap(z.MySlice) >= int(zgensym_58b5c2649cecee38_12) {
   552  					z.MySlice = (z.MySlice)[:zgensym_58b5c2649cecee38_12]
   553  				} else {
   554  					z.MySlice = make([]string, zgensym_58b5c2649cecee38_12)
   555  				}
   556  				for zgensym_58b5c2649cecee38_6 := range z.MySlice {
   557  					z.MySlice[zgensym_58b5c2649cecee38_6], bts, err = nbs.ReadStringBytes(bts)
   558  
   559  					if err != nil {
   560  						return
   561  					}
   562  				}
   563  			}
   564  		default:
   565  			bts, err = msgp.Skip(bts)
   566  			if err != nil {
   567  				return
   568  			}
   569  		}
   570  	}
   571  	if nextMiss7zgensym_58b5c2649cecee38_8 != -1 {
   572  		bts = nbs.PopAlwaysNil()
   573  	}
   574  
   575  	if sawTopNil {
   576  		bts = nbs.PopAlwaysNil()
   577  	}
   578  	o = bts
   579  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   580  		p.PostLoadHook()
   581  	}
   582  
   583  	return
   584  }
   585  
   586  // fields of Big
   587  var unmarshalMsgFieldOrder7zgensym_58b5c2649cecee38_8 = []string{"Slice_zid00_slc", "Transform_zid01_map", "Myptr_zid02_ptr", "Myarray_zid03_ary", "MySlice_zid04_slc"}
   588  
   589  var unmarshalMsgFieldSkip7zgensym_58b5c2649cecee38_8 = []bool{false, false, false, false, false}
   590  
   591  // MSGPMsgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
   592  func (z *Big) MSGPMsgsize() (s int) {
   593  	s = 1 + 16 + msgp.ArrayHeaderSize
   594  	for zgensym_58b5c2649cecee38_2 := range z.Slice {
   595  		s += z.Slice[zgensym_58b5c2649cecee38_2].MSGPMsgsize()
   596  	}
   597  	s += 20 + msgp.MapHeaderSize
   598  	if z.Transform != nil {
   599  		for zgensym_58b5c2649cecee38_3, zgensym_58b5c2649cecee38_4 := range z.Transform {
   600  			_ = zgensym_58b5c2649cecee38_4
   601  			_ = zgensym_58b5c2649cecee38_3
   602  			s += msgp.IntSize
   603  			if zgensym_58b5c2649cecee38_4 == nil {
   604  				s += msgp.NilSize
   605  			} else {
   606  				s += zgensym_58b5c2649cecee38_4.MSGPMsgsize()
   607  			}
   608  		}
   609  	}
   610  	s += 16
   611  	if z.Myptr == nil {
   612  		s += msgp.NilSize
   613  	} else {
   614  		s += z.Myptr.MSGPMsgsize()
   615  	}
   616  	s += 18 + msgp.ArrayHeaderSize
   617  	for zgensym_58b5c2649cecee38_5 := range z.Myarray {
   618  		s += msgp.StringPrefixSize + len(z.Myarray[zgensym_58b5c2649cecee38_5])
   619  	}
   620  	s += 18 + msgp.ArrayHeaderSize
   621  	for zgensym_58b5c2649cecee38_6 := range z.MySlice {
   622  		s += msgp.StringPrefixSize + len(z.MySlice[zgensym_58b5c2649cecee38_6])
   623  	}
   624  	return
   625  }
   626  
   627  // MSGPfieldsNotEmpty supports omitempty tags
   628  func (z *S2) MSGPfieldsNotEmpty(isempty []bool) uint32 {
   629  	if len(isempty) == 0 {
   630  		return 7
   631  	}
   632  	var fieldsInUse uint32 = 7
   633  	isempty[1] = (len(z.B) == 0) // string, omitempty
   634  	if isempty[1] {
   635  		fieldsInUse--
   636  	}
   637  	isempty[2] = (len(z.R) == 0) // string, omitempty
   638  	if isempty[2] {
   639  		fieldsInUse--
   640  	}
   641  	isempty[3] = (z.P == 0) // number, omitempty
   642  	if isempty[3] {
   643  		fieldsInUse--
   644  	}
   645  	isempty[4] = (z.Q == 0) // number, omitempty
   646  	if isempty[4] {
   647  		fieldsInUse--
   648  	}
   649  	isempty[5] = (z.T == 0) // number, omitempty
   650  	if isempty[5] {
   651  		fieldsInUse--
   652  	}
   653  	isempty[6] = (len(z.Arr) == 0) // string, omitempty
   654  	if isempty[6] {
   655  		fieldsInUse--
   656  	}
   657  	isempty[7] = (z.MyTree == nil) // pointer, omitempty
   658  	if isempty[7] {
   659  		fieldsInUse--
   660  	}
   661  
   662  	return fieldsInUse
   663  }
   664  
   665  // MSGPMarshalMsg implements msgp.Marshaler
   666  func (z *S2) MSGPMarshalMsg(b []byte) (o []byte, err error) {
   667  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   668  		p.PreSaveHook()
   669  	}
   670  
   671  	o = msgp.Require(b, z.MSGPMsgsize())
   672  
   673  	// honor the omitempty tags
   674  	var empty [8]bool
   675  	fieldsInUse := z.fieldsNotEmpty(empty[:])
   676  	o = msgp.AppendMapHeader(o, fieldsInUse)
   677  
   678  	if !empty[1] {
   679  		// string "beta_zid01_str"
   680  		o = append(o, 0xae, 0x62, 0x65, 0x74, 0x61, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x73, 0x74, 0x72)
   681  		o = msgp.AppendString(o, z.B)
   682  	}
   683  
   684  	if !empty[2] {
   685  		// string "ralph_zid02_map"
   686  		o = append(o, 0xaf, 0x72, 0x61, 0x6c, 0x70, 0x68, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x32, 0x5f, 0x6d, 0x61, 0x70)
   687  		o = msgp.AppendMapHeader(o, uint32(len(z.R)))
   688  		for zgensym_58b5c2649cecee38_13, zgensym_58b5c2649cecee38_14 := range z.R {
   689  			o = msgp.AppendString(o, zgensym_58b5c2649cecee38_13)
   690  			o = msgp.AppendUint8(o, zgensym_58b5c2649cecee38_14)
   691  		}
   692  	}
   693  
   694  	if !empty[3] {
   695  		// string "P_zid03_u16"
   696  		o = append(o, 0xab, 0x50, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x33, 0x5f, 0x75, 0x31, 0x36)
   697  		o = msgp.AppendUint16(o, z.P)
   698  	}
   699  
   700  	if !empty[4] {
   701  		// string "Q_zid04_u32"
   702  		o = append(o, 0xab, 0x51, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x34, 0x5f, 0x75, 0x33, 0x32)
   703  		o = msgp.AppendUint32(o, z.Q)
   704  	}
   705  
   706  	if !empty[5] {
   707  		// string "T_zid05_i64"
   708  		o = append(o, 0xab, 0x54, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x35, 0x5f, 0x69, 0x36, 0x34)
   709  		o = msgp.AppendInt64(o, z.T)
   710  	}
   711  
   712  	if !empty[6] {
   713  		// string "arr_zid06_ary"
   714  		o = append(o, 0xad, 0x61, 0x72, 0x72, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x36, 0x5f, 0x61, 0x72, 0x79)
   715  		o = msgp.AppendArrayHeader(o, 6)
   716  		for zgensym_58b5c2649cecee38_15 := range z.Arr {
   717  			o = msgp.AppendFloat64(o, z.Arr[zgensym_58b5c2649cecee38_15])
   718  		}
   719  	}
   720  
   721  	if !empty[7] {
   722  		// string "MyTree_zid07_ptr"
   723  		o = append(o, 0xb0, 0x4d, 0x79, 0x54, 0x72, 0x65, 0x65, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x37, 0x5f, 0x70, 0x74, 0x72)
   724  		if z.MyTree == nil {
   725  			o = msgp.AppendNil(o)
   726  		} else {
   727  			o, err = z.MyTree.MSGPMarshalMsg(o)
   728  			if err != nil {
   729  				return
   730  			}
   731  		}
   732  	}
   733  
   734  	return
   735  }
   736  
   737  // MSGPUnmarshalMsg implements msgp.Unmarshaler
   738  func (z *S2) MSGPUnmarshalMsg(bts []byte) (o []byte, err error) {
   739  	return z.MSGPUnmarshalMsgWithCfg(bts, nil)
   740  }
   741  func (z *S2) MSGPUnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
   742  	var nbs msgp.NilBitsStack
   743  	nbs.Init(cfg)
   744  	var sawTopNil bool
   745  	if msgp.IsNil(bts) {
   746  		sawTopNil = true
   747  		bts = nbs.PushAlwaysNil(bts[1:])
   748  	}
   749  
   750  	var field []byte
   751  	_ = field
   752  	const maxFields16zgensym_58b5c2649cecee38_17 = 8
   753  
   754  	// -- templateUnmarshalMsg starts here--
   755  	var totalEncodedFields16zgensym_58b5c2649cecee38_17 uint32
   756  	if !nbs.AlwaysNil {
   757  		totalEncodedFields16zgensym_58b5c2649cecee38_17, bts, err = nbs.ReadMapHeaderBytes(bts)
   758  		if err != nil {
   759  			return
   760  		}
   761  	}
   762  	encodedFieldsLeft16zgensym_58b5c2649cecee38_17 := totalEncodedFields16zgensym_58b5c2649cecee38_17
   763  	missingFieldsLeft16zgensym_58b5c2649cecee38_17 := maxFields16zgensym_58b5c2649cecee38_17 - totalEncodedFields16zgensym_58b5c2649cecee38_17
   764  
   765  	var nextMiss16zgensym_58b5c2649cecee38_17 int32 = -1
   766  	var found16zgensym_58b5c2649cecee38_17 [maxFields16zgensym_58b5c2649cecee38_17]bool
   767  	var curField16zgensym_58b5c2649cecee38_17 string
   768  
   769  doneWithStruct16zgensym_58b5c2649cecee38_17:
   770  	// First fill all the encoded fields, then
   771  	// treat the remaining, missing fields, as Nil.
   772  	for encodedFieldsLeft16zgensym_58b5c2649cecee38_17 > 0 || missingFieldsLeft16zgensym_58b5c2649cecee38_17 > 0 {
   773  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft16zgensym_58b5c2649cecee38_17, missingFieldsLeft16zgensym_58b5c2649cecee38_17, msgp.ShowFound(found16zgensym_58b5c2649cecee38_17[:]), unmarshalMsgFieldOrder16zgensym_58b5c2649cecee38_17)
   774  		if encodedFieldsLeft16zgensym_58b5c2649cecee38_17 > 0 {
   775  			encodedFieldsLeft16zgensym_58b5c2649cecee38_17--
   776  			field, bts, err = nbs.ReadMapKeyZC(bts)
   777  			if err != nil {
   778  				return
   779  			}
   780  			curField16zgensym_58b5c2649cecee38_17 = msgp.UnsafeString(field)
   781  		} else {
   782  			//missing fields need handling
   783  			if nextMiss16zgensym_58b5c2649cecee38_17 < 0 {
   784  				// set bts to contain just mnil (0xc0)
   785  				bts = nbs.PushAlwaysNil(bts)
   786  				nextMiss16zgensym_58b5c2649cecee38_17 = 0
   787  			}
   788  			for nextMiss16zgensym_58b5c2649cecee38_17 < maxFields16zgensym_58b5c2649cecee38_17 && (found16zgensym_58b5c2649cecee38_17[nextMiss16zgensym_58b5c2649cecee38_17] || unmarshalMsgFieldSkip16zgensym_58b5c2649cecee38_17[nextMiss16zgensym_58b5c2649cecee38_17]) {
   789  				nextMiss16zgensym_58b5c2649cecee38_17++
   790  			}
   791  			if nextMiss16zgensym_58b5c2649cecee38_17 == maxFields16zgensym_58b5c2649cecee38_17 {
   792  				// filled all the empty fields!
   793  				break doneWithStruct16zgensym_58b5c2649cecee38_17
   794  			}
   795  			missingFieldsLeft16zgensym_58b5c2649cecee38_17--
   796  			curField16zgensym_58b5c2649cecee38_17 = unmarshalMsgFieldOrder16zgensym_58b5c2649cecee38_17[nextMiss16zgensym_58b5c2649cecee38_17]
   797  		}
   798  		//fmt.Printf("switching on curField: '%v'\n", curField16zgensym_58b5c2649cecee38_17)
   799  		switch curField16zgensym_58b5c2649cecee38_17 {
   800  		// -- templateUnmarshalMsg ends here --
   801  
   802  		case "beta_zid01_str":
   803  			found16zgensym_58b5c2649cecee38_17[1] = true
   804  			z.B, bts, err = nbs.ReadStringBytes(bts)
   805  
   806  			if err != nil {
   807  				return
   808  			}
   809  		case "ralph_zid02_map":
   810  			found16zgensym_58b5c2649cecee38_17[2] = true
   811  			if nbs.AlwaysNil {
   812  				if len(z.R) > 0 {
   813  					for key, _ := range z.R {
   814  						delete(z.R, key)
   815  					}
   816  				}
   817  
   818  			} else {
   819  
   820  				var zgensym_58b5c2649cecee38_18 uint32
   821  				zgensym_58b5c2649cecee38_18, bts, err = nbs.ReadMapHeaderBytes(bts)
   822  				if err != nil {
   823  					return
   824  				}
   825  				if z.R == nil && zgensym_58b5c2649cecee38_18 > 0 {
   826  					z.R = make(map[string]uint8, zgensym_58b5c2649cecee38_18)
   827  				} else if len(z.R) > 0 {
   828  					for key, _ := range z.R {
   829  						delete(z.R, key)
   830  					}
   831  				}
   832  				for zgensym_58b5c2649cecee38_18 > 0 {
   833  					var zgensym_58b5c2649cecee38_13 string
   834  					var zgensym_58b5c2649cecee38_14 uint8
   835  					zgensym_58b5c2649cecee38_18--
   836  					zgensym_58b5c2649cecee38_13, bts, err = nbs.ReadStringBytes(bts)
   837  					if err != nil {
   838  						return
   839  					}
   840  					zgensym_58b5c2649cecee38_14, bts, err = nbs.ReadUint8Bytes(bts)
   841  
   842  					if err != nil {
   843  						return
   844  					}
   845  					z.R[zgensym_58b5c2649cecee38_13] = zgensym_58b5c2649cecee38_14
   846  				}
   847  			}
   848  		case "P_zid03_u16":
   849  			found16zgensym_58b5c2649cecee38_17[3] = true
   850  			z.P, bts, err = nbs.ReadUint16Bytes(bts)
   851  
   852  			if err != nil {
   853  				return
   854  			}
   855  		case "Q_zid04_u32":
   856  			found16zgensym_58b5c2649cecee38_17[4] = true
   857  			z.Q, bts, err = nbs.ReadUint32Bytes(bts)
   858  
   859  			if err != nil {
   860  				return
   861  			}
   862  		case "T_zid05_i64":
   863  			found16zgensym_58b5c2649cecee38_17[5] = true
   864  			z.T, bts, err = nbs.ReadInt64Bytes(bts)
   865  
   866  			if err != nil {
   867  				return
   868  			}
   869  		case "arr_zid06_ary":
   870  			found16zgensym_58b5c2649cecee38_17[6] = true
   871  			var zgensym_58b5c2649cecee38_19 uint32
   872  			zgensym_58b5c2649cecee38_19, bts, err = nbs.ReadArrayHeaderBytes(bts)
   873  			if err != nil {
   874  				return
   875  			}
   876  			if !nbs.IsNil(bts) && zgensym_58b5c2649cecee38_19 != 6 {
   877  				err = msgp.ArrayError{Wanted: 6, Got: zgensym_58b5c2649cecee38_19}
   878  				return
   879  			}
   880  			for zgensym_58b5c2649cecee38_15 := range z.Arr {
   881  				z.Arr[zgensym_58b5c2649cecee38_15], bts, err = nbs.ReadFloat64Bytes(bts)
   882  
   883  				if err != nil {
   884  					return
   885  				}
   886  			}
   887  		case "MyTree_zid07_ptr":
   888  			found16zgensym_58b5c2649cecee38_17[7] = true
   889  			if nbs.AlwaysNil {
   890  				if z.MyTree != nil {
   891  					z.MyTree.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
   892  				}
   893  			} else {
   894  				// not nbs.AlwaysNil
   895  				if msgp.IsNil(bts) {
   896  					bts = bts[1:]
   897  					if nil != z.MyTree {
   898  						z.MyTree.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
   899  					}
   900  				} else {
   901  					// not nbs.AlwaysNil and not IsNil(bts): have something to read
   902  
   903  					if z.MyTree == nil {
   904  						z.MyTree = new(Tree)
   905  					}
   906  					bts, err = z.MyTree.MSGPUnmarshalMsg(bts)
   907  					if err != nil {
   908  						return
   909  					}
   910  					if err != nil {
   911  						return
   912  					}
   913  				}
   914  			}
   915  		default:
   916  			bts, err = msgp.Skip(bts)
   917  			if err != nil {
   918  				return
   919  			}
   920  		}
   921  	}
   922  	if nextMiss16zgensym_58b5c2649cecee38_17 != -1 {
   923  		bts = nbs.PopAlwaysNil()
   924  	}
   925  
   926  	if sawTopNil {
   927  		bts = nbs.PopAlwaysNil()
   928  	}
   929  	o = bts
   930  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   931  		p.PostLoadHook()
   932  	}
   933  
   934  	return
   935  }
   936  
   937  // fields of S2
   938  var unmarshalMsgFieldOrder16zgensym_58b5c2649cecee38_17 = []string{"", "beta_zid01_str", "ralph_zid02_map", "P_zid03_u16", "Q_zid04_u32", "T_zid05_i64", "arr_zid06_ary", "MyTree_zid07_ptr"}
   939  
   940  var unmarshalMsgFieldSkip16zgensym_58b5c2649cecee38_17 = []bool{true, false, false, false, false, false, false, false}
   941  
   942  // MSGPMsgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
   943  func (z *S2) MSGPMsgsize() (s int) {
   944  	s = 1 + 15 + msgp.StringPrefixSize + len(z.B) + 16 + msgp.MapHeaderSize
   945  	if z.R != nil {
   946  		for zgensym_58b5c2649cecee38_13, zgensym_58b5c2649cecee38_14 := range z.R {
   947  			_ = zgensym_58b5c2649cecee38_14
   948  			_ = zgensym_58b5c2649cecee38_13
   949  			s += msgp.StringPrefixSize + len(zgensym_58b5c2649cecee38_13) + msgp.Uint8Size
   950  		}
   951  	}
   952  	s += 12 + msgp.Uint16Size + 12 + msgp.Uint32Size + 12 + msgp.Int64Size + 14 + msgp.ArrayHeaderSize + (6 * (msgp.Float64Size)) + 17
   953  	if z.MyTree == nil {
   954  		s += msgp.NilSize
   955  	} else {
   956  		s += z.MyTree.MSGPMsgsize()
   957  	}
   958  	return
   959  }
   960  
   961  // MSGPfieldsNotEmpty supports omitempty tags
   962  func (z Sys) MSGPfieldsNotEmpty(isempty []bool) uint32 {
   963  	if len(isempty) == 0 {
   964  		return 1
   965  	}
   966  	var fieldsInUse uint32 = 1
   967  	isempty[0] = false
   968  	if isempty[0] {
   969  		fieldsInUse--
   970  	}
   971  
   972  	return fieldsInUse
   973  }
   974  
   975  // MSGPMarshalMsg implements msgp.Marshaler
   976  func (z Sys) MSGPMarshalMsg(b []byte) (o []byte, err error) {
   977  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   978  		p.PreSaveHook()
   979  	}
   980  
   981  	o = msgp.Require(b, z.MSGPMsgsize())
   982  
   983  	// honor the omitempty tags
   984  	var empty [1]bool
   985  	fieldsInUse := z.fieldsNotEmpty(empty[:])
   986  	o = msgp.AppendMapHeader(o, fieldsInUse)
   987  
   988  	if !empty[0] {
   989  		// string "F_zid00_ifc"
   990  		o = append(o, 0xab, 0x46, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x69, 0x66, 0x63)
   991  		o, err = msgp.AppendIntf(o, z.F)
   992  		if err != nil {
   993  			return
   994  		}
   995  	}
   996  
   997  	return
   998  }
   999  
  1000  // MSGPUnmarshalMsg implements msgp.Unmarshaler
  1001  func (z *Sys) MSGPUnmarshalMsg(bts []byte) (o []byte, err error) {
  1002  	return z.MSGPUnmarshalMsgWithCfg(bts, nil)
  1003  }
  1004  func (z *Sys) MSGPUnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
  1005  	var nbs msgp.NilBitsStack
  1006  	nbs.Init(cfg)
  1007  	var sawTopNil bool
  1008  	if msgp.IsNil(bts) {
  1009  		sawTopNil = true
  1010  		bts = nbs.PushAlwaysNil(bts[1:])
  1011  	}
  1012  
  1013  	var field []byte
  1014  	_ = field
  1015  	const maxFields20zgensym_58b5c2649cecee38_21 = 1
  1016  
  1017  	// -- templateUnmarshalMsg starts here--
  1018  	var totalEncodedFields20zgensym_58b5c2649cecee38_21 uint32
  1019  	if !nbs.AlwaysNil {
  1020  		totalEncodedFields20zgensym_58b5c2649cecee38_21, bts, err = nbs.ReadMapHeaderBytes(bts)
  1021  		if err != nil {
  1022  			return
  1023  		}
  1024  	}
  1025  	encodedFieldsLeft20zgensym_58b5c2649cecee38_21 := totalEncodedFields20zgensym_58b5c2649cecee38_21
  1026  	missingFieldsLeft20zgensym_58b5c2649cecee38_21 := maxFields20zgensym_58b5c2649cecee38_21 - totalEncodedFields20zgensym_58b5c2649cecee38_21
  1027  
  1028  	var nextMiss20zgensym_58b5c2649cecee38_21 int32 = -1
  1029  	var found20zgensym_58b5c2649cecee38_21 [maxFields20zgensym_58b5c2649cecee38_21]bool
  1030  	var curField20zgensym_58b5c2649cecee38_21 string
  1031  
  1032  doneWithStruct20zgensym_58b5c2649cecee38_21:
  1033  	// First fill all the encoded fields, then
  1034  	// treat the remaining, missing fields, as Nil.
  1035  	for encodedFieldsLeft20zgensym_58b5c2649cecee38_21 > 0 || missingFieldsLeft20zgensym_58b5c2649cecee38_21 > 0 {
  1036  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft20zgensym_58b5c2649cecee38_21, missingFieldsLeft20zgensym_58b5c2649cecee38_21, msgp.ShowFound(found20zgensym_58b5c2649cecee38_21[:]), unmarshalMsgFieldOrder20zgensym_58b5c2649cecee38_21)
  1037  		if encodedFieldsLeft20zgensym_58b5c2649cecee38_21 > 0 {
  1038  			encodedFieldsLeft20zgensym_58b5c2649cecee38_21--
  1039  			field, bts, err = nbs.ReadMapKeyZC(bts)
  1040  			if err != nil {
  1041  				return
  1042  			}
  1043  			curField20zgensym_58b5c2649cecee38_21 = msgp.UnsafeString(field)
  1044  		} else {
  1045  			//missing fields need handling
  1046  			if nextMiss20zgensym_58b5c2649cecee38_21 < 0 {
  1047  				// set bts to contain just mnil (0xc0)
  1048  				bts = nbs.PushAlwaysNil(bts)
  1049  				nextMiss20zgensym_58b5c2649cecee38_21 = 0
  1050  			}
  1051  			for nextMiss20zgensym_58b5c2649cecee38_21 < maxFields20zgensym_58b5c2649cecee38_21 && (found20zgensym_58b5c2649cecee38_21[nextMiss20zgensym_58b5c2649cecee38_21] || unmarshalMsgFieldSkip20zgensym_58b5c2649cecee38_21[nextMiss20zgensym_58b5c2649cecee38_21]) {
  1052  				nextMiss20zgensym_58b5c2649cecee38_21++
  1053  			}
  1054  			if nextMiss20zgensym_58b5c2649cecee38_21 == maxFields20zgensym_58b5c2649cecee38_21 {
  1055  				// filled all the empty fields!
  1056  				break doneWithStruct20zgensym_58b5c2649cecee38_21
  1057  			}
  1058  			missingFieldsLeft20zgensym_58b5c2649cecee38_21--
  1059  			curField20zgensym_58b5c2649cecee38_21 = unmarshalMsgFieldOrder20zgensym_58b5c2649cecee38_21[nextMiss20zgensym_58b5c2649cecee38_21]
  1060  		}
  1061  		//fmt.Printf("switching on curField: '%v'\n", curField20zgensym_58b5c2649cecee38_21)
  1062  		switch curField20zgensym_58b5c2649cecee38_21 {
  1063  		// -- templateUnmarshalMsg ends here --
  1064  
  1065  		case "F_zid00_ifc":
  1066  			found20zgensym_58b5c2649cecee38_21[0] = true
  1067  			z.F, bts, err = nbs.ReadIntfBytes(bts)
  1068  
  1069  			if err != nil {
  1070  				return
  1071  			}
  1072  		default:
  1073  			bts, err = msgp.Skip(bts)
  1074  			if err != nil {
  1075  				return
  1076  			}
  1077  		}
  1078  	}
  1079  	if nextMiss20zgensym_58b5c2649cecee38_21 != -1 {
  1080  		bts = nbs.PopAlwaysNil()
  1081  	}
  1082  
  1083  	if sawTopNil {
  1084  		bts = nbs.PopAlwaysNil()
  1085  	}
  1086  	o = bts
  1087  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
  1088  		p.PostLoadHook()
  1089  	}
  1090  
  1091  	return
  1092  }
  1093  
  1094  // fields of Sys
  1095  var unmarshalMsgFieldOrder20zgensym_58b5c2649cecee38_21 = []string{"F_zid00_ifc"}
  1096  
  1097  var unmarshalMsgFieldSkip20zgensym_58b5c2649cecee38_21 = []bool{false}
  1098  
  1099  // MSGPMsgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
  1100  func (z Sys) MSGPMsgsize() (s int) {
  1101  	s = 1 + 12 + msgp.GuessSize(z.F)
  1102  	return
  1103  }
  1104  
  1105  // MSGPfieldsNotEmpty supports omitempty tags
  1106  func (z *Tree) MSGPfieldsNotEmpty(isempty []bool) uint32 {
  1107  	if len(isempty) == 0 {
  1108  		return 3
  1109  	}
  1110  	var fieldsInUse uint32 = 3
  1111  	isempty[0] = (len(z.Chld) == 0) // string, omitempty
  1112  	if isempty[0] {
  1113  		fieldsInUse--
  1114  	}
  1115  	isempty[1] = (len(z.Str) == 0) // string, omitempty
  1116  	if isempty[1] {
  1117  		fieldsInUse--
  1118  	}
  1119  	isempty[2] = (z.Par == nil) // pointer, omitempty
  1120  	if isempty[2] {
  1121  		fieldsInUse--
  1122  	}
  1123  
  1124  	return fieldsInUse
  1125  }
  1126  
  1127  // MSGPMarshalMsg implements msgp.Marshaler
  1128  func (z *Tree) MSGPMarshalMsg(b []byte) (o []byte, err error) {
  1129  	if p, ok := interface{}(z).(msgp.PreSave); ok {
  1130  		p.PreSaveHook()
  1131  	}
  1132  
  1133  	o = msgp.Require(b, z.MSGPMsgsize())
  1134  
  1135  	// honor the omitempty tags
  1136  	var empty [3]bool
  1137  	fieldsInUse := z.fieldsNotEmpty(empty[:])
  1138  	o = msgp.AppendMapHeader(o, fieldsInUse)
  1139  
  1140  	if !empty[0] {
  1141  		// string "Chld_zid00_slc"
  1142  		o = append(o, 0xae, 0x43, 0x68, 0x6c, 0x64, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x73, 0x6c, 0x63)
  1143  		o = msgp.AppendArrayHeader(o, uint32(len(z.Chld)))
  1144  		for zgensym_58b5c2649cecee38_22 := range z.Chld {
  1145  			o, err = z.Chld[zgensym_58b5c2649cecee38_22].MSGPMarshalMsg(o)
  1146  			if err != nil {
  1147  				return
  1148  			}
  1149  		}
  1150  	}
  1151  
  1152  	if !empty[1] {
  1153  		// string "Str_zid01_str"
  1154  		o = append(o, 0xad, 0x53, 0x74, 0x72, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x73, 0x74, 0x72)
  1155  		o = msgp.AppendString(o, z.Str)
  1156  	}
  1157  
  1158  	if !empty[2] {
  1159  		// string "Par_zid02_ptr"
  1160  		o = append(o, 0xad, 0x50, 0x61, 0x72, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x32, 0x5f, 0x70, 0x74, 0x72)
  1161  		if z.Par == nil {
  1162  			o = msgp.AppendNil(o)
  1163  		} else {
  1164  			o, err = z.Par.MSGPMarshalMsg(o)
  1165  			if err != nil {
  1166  				return
  1167  			}
  1168  		}
  1169  	}
  1170  
  1171  	return
  1172  }
  1173  
  1174  // MSGPUnmarshalMsg implements msgp.Unmarshaler
  1175  func (z *Tree) MSGPUnmarshalMsg(bts []byte) (o []byte, err error) {
  1176  	return z.MSGPUnmarshalMsgWithCfg(bts, nil)
  1177  }
  1178  func (z *Tree) MSGPUnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
  1179  	var nbs msgp.NilBitsStack
  1180  	nbs.Init(cfg)
  1181  	var sawTopNil bool
  1182  	if msgp.IsNil(bts) {
  1183  		sawTopNil = true
  1184  		bts = nbs.PushAlwaysNil(bts[1:])
  1185  	}
  1186  
  1187  	var field []byte
  1188  	_ = field
  1189  	const maxFields23zgensym_58b5c2649cecee38_24 = 3
  1190  
  1191  	// -- templateUnmarshalMsg starts here--
  1192  	var totalEncodedFields23zgensym_58b5c2649cecee38_24 uint32
  1193  	if !nbs.AlwaysNil {
  1194  		totalEncodedFields23zgensym_58b5c2649cecee38_24, bts, err = nbs.ReadMapHeaderBytes(bts)
  1195  		if err != nil {
  1196  			return
  1197  		}
  1198  	}
  1199  	encodedFieldsLeft23zgensym_58b5c2649cecee38_24 := totalEncodedFields23zgensym_58b5c2649cecee38_24
  1200  	missingFieldsLeft23zgensym_58b5c2649cecee38_24 := maxFields23zgensym_58b5c2649cecee38_24 - totalEncodedFields23zgensym_58b5c2649cecee38_24
  1201  
  1202  	var nextMiss23zgensym_58b5c2649cecee38_24 int32 = -1
  1203  	var found23zgensym_58b5c2649cecee38_24 [maxFields23zgensym_58b5c2649cecee38_24]bool
  1204  	var curField23zgensym_58b5c2649cecee38_24 string
  1205  
  1206  doneWithStruct23zgensym_58b5c2649cecee38_24:
  1207  	// First fill all the encoded fields, then
  1208  	// treat the remaining, missing fields, as Nil.
  1209  	for encodedFieldsLeft23zgensym_58b5c2649cecee38_24 > 0 || missingFieldsLeft23zgensym_58b5c2649cecee38_24 > 0 {
  1210  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft23zgensym_58b5c2649cecee38_24, missingFieldsLeft23zgensym_58b5c2649cecee38_24, msgp.ShowFound(found23zgensym_58b5c2649cecee38_24[:]), unmarshalMsgFieldOrder23zgensym_58b5c2649cecee38_24)
  1211  		if encodedFieldsLeft23zgensym_58b5c2649cecee38_24 > 0 {
  1212  			encodedFieldsLeft23zgensym_58b5c2649cecee38_24--
  1213  			field, bts, err = nbs.ReadMapKeyZC(bts)
  1214  			if err != nil {
  1215  				return
  1216  			}
  1217  			curField23zgensym_58b5c2649cecee38_24 = msgp.UnsafeString(field)
  1218  		} else {
  1219  			//missing fields need handling
  1220  			if nextMiss23zgensym_58b5c2649cecee38_24 < 0 {
  1221  				// set bts to contain just mnil (0xc0)
  1222  				bts = nbs.PushAlwaysNil(bts)
  1223  				nextMiss23zgensym_58b5c2649cecee38_24 = 0
  1224  			}
  1225  			for nextMiss23zgensym_58b5c2649cecee38_24 < maxFields23zgensym_58b5c2649cecee38_24 && (found23zgensym_58b5c2649cecee38_24[nextMiss23zgensym_58b5c2649cecee38_24] || unmarshalMsgFieldSkip23zgensym_58b5c2649cecee38_24[nextMiss23zgensym_58b5c2649cecee38_24]) {
  1226  				nextMiss23zgensym_58b5c2649cecee38_24++
  1227  			}
  1228  			if nextMiss23zgensym_58b5c2649cecee38_24 == maxFields23zgensym_58b5c2649cecee38_24 {
  1229  				// filled all the empty fields!
  1230  				break doneWithStruct23zgensym_58b5c2649cecee38_24
  1231  			}
  1232  			missingFieldsLeft23zgensym_58b5c2649cecee38_24--
  1233  			curField23zgensym_58b5c2649cecee38_24 = unmarshalMsgFieldOrder23zgensym_58b5c2649cecee38_24[nextMiss23zgensym_58b5c2649cecee38_24]
  1234  		}
  1235  		//fmt.Printf("switching on curField: '%v'\n", curField23zgensym_58b5c2649cecee38_24)
  1236  		switch curField23zgensym_58b5c2649cecee38_24 {
  1237  		// -- templateUnmarshalMsg ends here --
  1238  
  1239  		case "Chld_zid00_slc":
  1240  			found23zgensym_58b5c2649cecee38_24[0] = true
  1241  			if nbs.AlwaysNil {
  1242  				(z.Chld) = (z.Chld)[:0]
  1243  			} else {
  1244  
  1245  				var zgensym_58b5c2649cecee38_25 uint32
  1246  				zgensym_58b5c2649cecee38_25, bts, err = nbs.ReadArrayHeaderBytes(bts)
  1247  				if err != nil {
  1248  					return
  1249  				}
  1250  				if cap(z.Chld) >= int(zgensym_58b5c2649cecee38_25) {
  1251  					z.Chld = (z.Chld)[:zgensym_58b5c2649cecee38_25]
  1252  				} else {
  1253  					z.Chld = make([]Tree, zgensym_58b5c2649cecee38_25)
  1254  				}
  1255  				for zgensym_58b5c2649cecee38_22 := range z.Chld {
  1256  					bts, err = z.Chld[zgensym_58b5c2649cecee38_22].MSGPUnmarshalMsg(bts)
  1257  					if err != nil {
  1258  						return
  1259  					}
  1260  					if err != nil {
  1261  						return
  1262  					}
  1263  				}
  1264  			}
  1265  		case "Str_zid01_str":
  1266  			found23zgensym_58b5c2649cecee38_24[1] = true
  1267  			z.Str, bts, err = nbs.ReadStringBytes(bts)
  1268  
  1269  			if err != nil {
  1270  				return
  1271  			}
  1272  		case "Par_zid02_ptr":
  1273  			found23zgensym_58b5c2649cecee38_24[2] = true
  1274  			if nbs.AlwaysNil {
  1275  				if z.Par != nil {
  1276  					z.Par.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
  1277  				}
  1278  			} else {
  1279  				// not nbs.AlwaysNil
  1280  				if msgp.IsNil(bts) {
  1281  					bts = bts[1:]
  1282  					if nil != z.Par {
  1283  						z.Par.MSGPUnmarshalMsg(msgp.OnlyNilSlice)
  1284  					}
  1285  				} else {
  1286  					// not nbs.AlwaysNil and not IsNil(bts): have something to read
  1287  
  1288  					if z.Par == nil {
  1289  						z.Par = new(S2)
  1290  					}
  1291  					bts, err = z.Par.MSGPUnmarshalMsg(bts)
  1292  					if err != nil {
  1293  						return
  1294  					}
  1295  					if err != nil {
  1296  						return
  1297  					}
  1298  				}
  1299  			}
  1300  		default:
  1301  			bts, err = msgp.Skip(bts)
  1302  			if err != nil {
  1303  				return
  1304  			}
  1305  		}
  1306  	}
  1307  	if nextMiss23zgensym_58b5c2649cecee38_24 != -1 {
  1308  		bts = nbs.PopAlwaysNil()
  1309  	}
  1310  
  1311  	if sawTopNil {
  1312  		bts = nbs.PopAlwaysNil()
  1313  	}
  1314  	o = bts
  1315  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
  1316  		p.PostLoadHook()
  1317  	}
  1318  
  1319  	return
  1320  }
  1321  
  1322  // fields of Tree
  1323  var unmarshalMsgFieldOrder23zgensym_58b5c2649cecee38_24 = []string{"Chld_zid00_slc", "Str_zid01_str", "Par_zid02_ptr"}
  1324  
  1325  var unmarshalMsgFieldSkip23zgensym_58b5c2649cecee38_24 = []bool{false, false, false}
  1326  
  1327  // MSGPMsgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
  1328  func (z *Tree) MSGPMsgsize() (s int) {
  1329  	s = 1 + 15 + msgp.ArrayHeaderSize
  1330  	for zgensym_58b5c2649cecee38_22 := range z.Chld {
  1331  		s += z.Chld[zgensym_58b5c2649cecee38_22].MSGPMsgsize()
  1332  	}
  1333  	s += 14 + msgp.StringPrefixSize + len(z.Str) + 14
  1334  	if z.Par == nil {
  1335  		s += msgp.NilSize
  1336  	} else {
  1337  		s += z.Par.MSGPMsgsize()
  1338  	}
  1339  	return
  1340  }