type protoObj … // NewObject returns an object based on a proto.Message value which handles // conversion between protobuf type values and expression type values. // Objects support indexing and iteration. // // Note: the type value is pulled from the list of registered types within the // type provider. If the proto type is not registered within the type provider, // then this will result in an error within the type adapter / provider. func NewObject(adapter Adapter, typeDesc *pb.TypeDescription, typeValue ref.Val, value proto.Message) ref.Val { … } func (o *protoObj) ConvertToNative(typeDesc reflect.Type) (any, error) { … } func (o *protoObj) ConvertToType(typeVal ref.Type) ref.Val { … } func (o *protoObj) Equal(other ref.Val) ref.Val { … } // IsSet tests whether a field which is defined is set to a non-default value. func (o *protoObj) IsSet(field ref.Val) ref.Val { … } // IsZeroValue returns true if the protobuf object is empty. func (o *protoObj) IsZeroValue() bool { … } func (o *protoObj) Get(index ref.Val) ref.Val { … } func (o *protoObj) Type() ref.Type { … } func (o *protoObj) Value() any { … }