code: func unmarshalerDecoder(d *decodeState, v reflect.Value, opts decOpts) int {
  	um, ok := v.Interface().(Unmarshaler)
  	if !ok {
  		panic(fmt.Errorf("Non-Unmarshaler passed to unmarshalerEncoder"))
  	}
  
  	read, err := um.UnmarshalTLS(d.Bytes())
  	if err != nil {
  		panic(err)
  	}
  
  	if read > d.Len() {
  		panic(fmt.Errorf("Invalid return value from UnmarshalTLS"))
  	}
  
  	d.Next(read)
  	return read
  }
docs: ///// Specific decoders below