syntax = "proto3";

package a;

message One {
  reserved 4 to 5, 100 to 200;
  reserved 300, 301, 1000 to max;
  reserved 8 to 25;
  reserved 50, 51, 52, 53 to 60, 61 to 65, 66, 67, 68 to 70, 71 to 75;
  reserved "foo", "bar";
  reserved "baz";
  int32 one = 1;
  int32 two = 2;
  int32 three = 3;
}

message One2 {
  reserved 4 to 5, 100 to 200;
  reserved 300, 301, 1000 to max;
  reserved "foo", "bar";
  reserved "baz";
  int32 one = 1;
  int32 two = 2;
  int32 three = 3;
}

message Two2 {
  reserved 4 to 5, 100 to 200;
  reserved 300, 301, 1000 to max;
  reserved "foo", "bar";
  reserved "baz";
  int32 one = 1;
  int32 two = 2;
  int32 three = 3;
}

message Three2 {
  message Four2 {
    message Five2 {
      reserved 4 to 5, 100 to 200;
      reserved 300, 301, 1000 to max;
      reserved "foo", "bar";
      reserved "baz";
      int32 one = 1;
      int32 two = 2;
      int32 three = 3;
    }
    message Six2 {
      reserved 4 to 5, 100 to 200;
      reserved 300, 301, 1000 to max;
      reserved "foo", "bar";
      reserved "baz";
      int32 one = 1;
      int32 two = 2;
      int32 three = 3;
    }
  }
  message Seven2 {
    reserved 4 to 5, 100 to 200;
    reserved 300, 301, 1000 to max;
    reserved "foo", "bar";
    reserved "baz";
    int32 one = 1;
    int32 two = 2;
    int32 three = 3;
  }
  message Eight2 {
    reserved 4 to 5, 100 to 200;
    reserved 300, 301, 1000 to max;
    reserved "foo", "bar";
    reserved "baz";
    int32 one = 1;
    int32 two = 2;
    int32 three = 3;
  }
  int32 one = 1;
  int32 two = 2;
  int32 three = 3;
}

message Nine2 {
  reserved 4 to 5, 100 to 200;
  reserved 300, 301, 1000 to max;
  reserved "foo", "bar";
  reserved "baz";
  int32 one = 1;
  int32 two = 2;
  int32 three = 3;
}

message Nine {
  reserved 100 to 200;
  reserved 300;
  reserved "foo";
  int32 one = 1;
  int32 two = 2;
  int32 three = 3;
}
