syntax = "proto2";

package a;

message One {
  optional string one = 1;
  optional string two = 2 [ctype = CORD];
}

message One2 {
  optional string one = 1 [ctype = STRING_PIECE];
  required string two = 2 [ctype = CORD];
}

message Two2 {
  optional string one = 1 [ctype = STRING_PIECE];
  required string two = 2 [ctype = CORD];
}

message Three2 {
  message Four2 {
    message Five2 {
      optional string one = 1 [ctype = STRING_PIECE];
      required string two = 2 [ctype = CORD];
    }
    message Six2 {
      optional string one = 1;
      required string two = 2;
    }
  }
  message Seven2 {
    optional string one = 1;
    required string two = 2;
  }
  message Eight2 {
    optional string one = 1;
    required string two = 2;
  }
  optional string one = 1;
  required string two = 2;
}

message Nine2 {
  optional string one = 1 [ctype = STRING_PIECE];
  required string two = 2 [ctype = CORD];
}

message Nine {
  optional string one = 1 [ctype = STRING_PIECE];
  optional string two = 2 [ctype = STRING];
}

message Ten2 {
  extensions 1 to 100;
}

extend Ten2 {
  optional string ten_one = 1 [ctype = CORD];
}
