code: func deserializeBundle(blob []byte) (b ConfigBundle, unknown []blobWithType, err error) {
  	items := []blobWithType{}
  	if err := gob.NewDecoder(bytes.NewReader(blob)).Decode(&items); err != nil {
  		return nil, nil, err
  	}
  
  	b = make(ConfigBundle, len(items))
  	for _, item := range items {
  		t := proto.MessageType(item.Kind) // this is *SomeProto type
  		if t == nil {
  			unknown = append(unknown, item)
  			continue
  		}
  		msg := reflect.New(t.Elem()).Interface().(proto.Message)
  		if err := proto.Unmarshal(item.Blob, msg); err != nil {
  			return nil, nil, err
  		}
  		b[item.Path] = msg
  	}
  
  	return b, unknown, nil
  }
docs: // deserialize parses the serialized ConfigBundle.
  //
  // It skips configs with proto types no longer registered in the proto lib
  // registry. It returns them unparsed in 'unknown' slice.
  //
  // Returns an error if some known proto message can't be deserialized.