syntax = "proto2";

package a;

message One2 {
  optional int32 one = 1;
  optional int32 two = 2;
  optional int32 three = 3;
}

message Two2 {
  optional int32 one = 1;
  optional int32 two = 2;
  optional int32 three = 3;
}

message Three2 {
  message Four2 {
    message Five2 {
      optional int32 one = 1;
      optional int32 two = 2;
      optional int32 three = 3;
    }
    message Six2 {
      optional int32 one = 1;
      optional int32 two = 2;
      optional int32 three = 3;
    }
  }
  message Seven2 {
    optional int32 one = 1;
    optional int32 two = 2;
    optional int32 three = 3;
  }
  message Eight2 {
    optional int32 one = 1;
    optional int32 two = 2;
    optional int32 three = 3;
    extend Three2 {
      repeated uint64 uint_opt = 101;
      optional string str_opt = 102;
      optional bool bool_opt = 103;
    }
  }
  optional int32 one = 1;
  optional int32 two = 2;
  optional int32 three = 3;

  extensions 100 to 1000;
}

message Nine2 {
  optional int32 one = 1;
  optional int32 two = 2;
  optional int32 three = 3;

  extensions 100 to 1000;
}

extend Nine2 {
  repeated uint64 uint_opt = 101;
  optional string str_opt = 102;
  optional bool bool_opt = 103;
}
