// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google LLC.  All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

syntax = "proto2";

package upb_test;

import "google/protobuf/struct.proto";
import "google/protobuf/any.proto";
import "google/protobuf/field_mask.proto";

enum Tag {
  Z_NONE = 0;
  Z_BAR = 1;
  Z_BAZ = -2;
  Z_BAT = 13;
}

message Box {
  optional Tag first_tag = 1;
  repeated Tag more_tags = 2;
  optional Tag last_tag = 5;
  optional string name = 4;
  optional google.protobuf.Value val = 6;
  optional float f = 7;
  optional double d = 8;
  optional int32 value = 9 [json_name = "old_value"];
  optional int32 new_value = 10 [json_name = "value"];
  optional bytes data = 11;
  optional google.protobuf.Any any_val = 12;
  optional google.protobuf.FieldMask mask_val = 13;
}
