syntax = "proto3";

import "google/protobuf/descriptor.proto";

package custom;

// Thing is a thing.
message Thing {
  int64 foo = 1;
  int64 bar = 2;
  string baz = 3;
  bool truth = 4;
  Thing recursive = 5;
  repeated int64 repeated_foo = 6;
  repeated Thing repeated_thing = 7;
  repeated string repeated_baz = 8;
}
// this is a comment after Thing

extend google.protobuf.MessageOptions {
  bool message_option = 80001;
  string string_message_option = 80002;
  Thing message_thing_option = 80003;
}

extend google.protobuf.FileOptions {
  bool file_option = 80002;
  string string_file_option = 80003;
  Thing file_thing_option = 80004;
}

extend google.protobuf.FieldOptions {
  bool field_option = 80006;
  Thing field_thing_option = 80007;
  repeated int64 repeated_field_option = 80017;
  repeated Thing repeated_field_thing_option = 80018;
  float float_field_option = 80019;
  double double_field_option = 80020;
  int32 int32_field_option = 80021;
  int64 int64_field_option = 80022;
  uint32 uint32_field_option = 80023;
  uint64 uint64_field_option = 80024;
  sint32 sint32_field_option = 80025;
  sint64 sint64_field_option = 80026;
  fixed32 fixed32_field_option = 80027;
  fixed64 fixed64_field_option = 80028;
  sfixed32 sfixed32_field_option = 80029;
  sfixed64 sfixed64_field_option = 80030;
  bool bool_field_option = 80031;
  bytes bytes_field_option = 80032;
  string string_field_option = 80033;
}

extend google.protobuf.OneofOptions {
  bool oneof_option = 80008;
  Thing oneof_thing_option = 80009;
}

extend google.protobuf.MethodOptions {
  bool method_option = 80010;
  Thing method_thing_option = 80011;
}

extend google.protobuf.EnumOptions {
  bool enum_option = 80012;
  Thing enum_thing_option = 80014;
}

extend google.protobuf.EnumValueOptions {
  bool enum_value_option = 80015;
  Thing enum_value_thing_option = 80016;
}
// this is a comment before service options
extend google.protobuf.ServiceOptions {
  bool service_option = 80012;
  Thing service_thing_option = 80014;
}
// this is a comment after service options

extend google.protobuf.ExtensionRangeOptions {
  bool extension_range_option = 80012;
  Thing extension_range_thing_option = 80014;
}
