Copyright 2019 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

package impl

import (
	

	pref 
	
)
weakFields adds methods to the exported WeakFields type for internal use. The exported type is an alias to an unnamed type, so methods can't be defined directly on it.
type weakFields WeakFields

func ( weakFields) ( pref.FieldNumber) (pref.ProtoMessage, bool) {
	,  := [int32()]
	return , 
}

func ( *weakFields) ( pref.FieldNumber,  pref.ProtoMessage) {
	if * == nil {
		* = make(weakFields)
	}
	(*)[int32()] = 
}

func ( *weakFields) ( pref.FieldNumber) {
	delete(*, int32())
}

func (Export) ( WeakFields,  pref.FieldNumber) bool {
	,  := [int32()]
	return 
}

func (Export) ( *WeakFields,  pref.FieldNumber) {
	delete(*, int32())
}

func (Export) ( WeakFields,  pref.FieldNumber,  pref.FullName) pref.ProtoMessage {
	if ,  := [int32()];  {
		return 
	}
	,  := protoregistry.GlobalTypes.FindMessageByName()
	if  == nil {
		panic(fmt.Sprintf("message %v for weak field is not linked in", ))
	}
	return .Zero().Interface()
}

func (Export) ( *WeakFields,  pref.FieldNumber,  pref.FullName,  pref.ProtoMessage) {
	if  != nil {
		,  := protoregistry.GlobalTypes.FindMessageByName()
		if  == nil {
			panic(fmt.Sprintf("message %v for weak field is not linked in", ))
		}
		if  != .ProtoReflect().Type() {
			panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", , .Zero().Interface()))
		}
	}
	if  == nil || !.ProtoReflect().IsValid() {
		delete(*, int32())
		return
	}
	if * == nil {
		* = make(weakFields)
	}
	(*)[int32()] =