syntax = "proto2";

package testprotos;

import "desc_test1.proto";

import "pkg/desc_test_pkg.proto";

import "nopkg/desc_test_nopkg.proto";

option cc_enable_arenas = true;

option csharp_namespace = "jhump.protoreflect.testprotos";

option go_package = "github.com/jhump/protoreflect/internal/testprotos";

option java_generate_equals_and_hash = true;

option java_multiple_files = true;

option java_package = "com.github.jhump.protoreflect.internal.testprotos";

option ruby_package = "protoreflect-testprotos";

message Frobnitz {
	optional TestMessage a = 1;

	optional AnotherTestMessage b = 2;

	oneof abc {
		TestMessage.NestedMessage c1 = 3;

		TestMessage.NestedEnum c2 = 4;
	}

	optional TestMessage.NestedMessage d = 5;

	optional TestMessage.NestedEnum e = 6 [default = VALUE2];

	repeated string f = 7 [deprecated = true];

	oneof def {
		int32 g1 = 8;

		sint32 g2 = 9;

		uint32 g3 = 10;
	}
}

message Whatchamacallit {
	required jhump.protoreflect.desc.Foo foos = 1;
}

message Whatzit {
	repeated jhump.protoreflect.desc.Bar gyzmeau = 1;
}

extend TopLevel {
	optional TopLevel otl = 100;

	optional group GroupX = 104 {
		optional int64 groupxi = 1041;

		optional string groupxs = 1042;
	}
}
