code: func fromJSONPb(_ *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
  	var ctor starlark.Value
  	var text starlark.String
  	if err := starlark.UnpackArgs("from_jsonpb", args, kwargs, "ctor", &ctor, "text", &text); err != nil {
  		return nil, err
  	}
  
  	c, ok := ctor.(*messageCtor)
  	if !ok {
  		return nil, fmt.Errorf("from_jsonpb: got %s, expecting a proto message constructor", ctor.Type())
  	}
  	typ := c.typ
  
  	protoMsg := typ.NewProtoMessage().Interface().(proto.Message)
  	u := jsonpb.Unmarshaler{AllowUnknownFields: true}
  	if err := u.Unmarshal(strings.NewReader(text.GoString()), protoMsg); err != nil {
  		return nil, fmt.Errorf("from_jsonpb: %s", err)
  	}
  
  	msg := NewMessage(typ)
  	if err := msg.FromProto(protoMsg); err != nil {
  		return nil, fmt.Errorf("from_jsonpb: %s", err)
  	}
  	return msg, nil
  }
docs: // fromJSONPb takes a JSONPB-serialized proto messages and returns *Message.