// Protocol Buffers - Google's data interchange format
// Copyright 2011 Google Inc.  All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

syntax = "proto2";

import "google/protobuf/any.proto";
import "google/protobuf/unittest.proto";

package protobuf_unittest;

// Used to check that Headerdocs and appledoc work correctly. If these comments
// are not handled correctly, Xcode will fail to build the tests.
message TestGeneratedComments {
  // This is a string that could contain stuff like
  // mime types as image/* or */plain. Maybe twitter usernames
  // like @protobuf, @google or @something.
  optional string string_field = 1;
}

// Using the messages in unittest.proto, setup for recursive cases for testing
// extensions at various depths.
extend TestAllExtensions {
  optional TestAllExtensions recursive_extension = 86;
}

// Recursive message to for testing autocreators at different depths.
message TestRecursiveMessageWithRepeatedField {
  optional TestRecursiveMessageWithRepeatedField a = 1;
  repeated int32 i = 2;
  repeated string str = 3;
  map<int32, int32> i_to_i = 4;
  map<string, string> str_to_str = 5;
}

// Message with a few types of maps to cover the different custom flows
// in the runtime.
message TestMessageOfMaps {
  map<string, string> str_to_str = 1;

  map<string, int32> str_to_int = 2;
  map<int32, string> int_to_str = 3;
  map<int32, int32> int_to_int = 4;

  map<string, bool> str_to_bool = 5;
  map<bool, string> bool_to_str = 6;
  map<bool, bool> bool_to_bool = 7;

  map<int32, bool> int_to_bool = 8;
  map<bool, int32> bool_to_int = 9;

  map<string, TestAllTypes> str_to_msg = 10;
  map<int32, TestAllTypes> int_to_msg = 11;
  map<bool, TestAllTypes> bool_to_msg = 12;
}

// Recursive message and extension to for testing autocreators at different
// depths.
message TestRecursiveExtension {
  optional TestRecursiveExtension recursive_sub_message = 1;
  repeated int32 repeated_value = 2;
  extensions 1000 to max;
}

extend TestRecursiveExtension {
  optional TestRecursiveExtension recursive_message_extension = 1000;
}

message self {
  message super {
    optional int32 description = 1;
  }

  enum autorelease {
    retain      = 1;
    release     = 2;
    retainCount = 3;
  }

  // Singular
  // Objective C Keywords
  optional bool id                =  1;
  optional bool _cmd              =  2;
  // super is used as submessage above
  optional bool in                =  4;
  optional bool out               =  5;
  optional bool inout             =  6;
  optional bool bycopy            =  7;
  optional bool byref             =  8;
  optional bool oneway            =  9;
  optional bool self              =  10;
  optional bool instancetype      =  11;
  optional bool nullable          =  12;
  optional bool nonnull           =  13;
  optional bool nil               =  14;
  // Nil and nil can't be in the same message
  optional bool YES               =  16;
  optional bool NO                =  17;
  optional bool weak              =  18;

  // Some C/C++ Keywords
  optional bool case              = 30;
  optional bool if                = 31;
  optional bool and_eq            = 32;
  optional bool public            = 33;
  optional bool private           = 34;
  optional bool typename          = 35;
  optional bool static_cast       = 36;
  optional bool typeof            = 37;
  optional bool restrict          = 38;
  optional bool NULL              = 39;

  // Some NSObject Methods
  optional bool dealloc           = 110;
  optional bool isProxy           = 111;
  optional bool copy              = 112;
  optional bool description       = 113;
  optional bool zone              = 114;
  optional bool className         = 115;
  optional bool __retain_OA       = 116;
  optional bool CAMLType          = 117;
  optional bool isNSDictionary__  = 118;
  optional bool accessibilityLabel = 119;

  // Some Objc "keywords" that we shouldn't
  // have to worry about because they
  // can only appear in specialized areas.
  optional bool assign            = 200;
  optional bool getter            = 201;
  optional bool setter            = 202;
  optional bool atomic            = 203;
  optional bool nonatomic         = 204;
  optional bool strong            = 205;
  optional bool null_resettable   = 206;
  optional bool readonly          = 207;

  // Some GPBMessage methods
  optional bool clear             = 300;
  optional bool data              = 301;
  optional bool descriptor        = 302;
  optional bool delimitedData     = 303;

  // Some MacTypes
  optional bool Fixed             = 400;
  optional bool Point             = 401;
  optional bool FixedPoint        = 402;
  optional bool Style             = 403;

  // C/C++ reserved identifiers
  optional bool _Generic          = 500;
  optional bool __block           = 501;

  // Try a keyword as a type
  optional autorelease SubEnum    = 1000;

  optional group New = 2000 {
   optional string copy = 1;
  }
  optional group MutableCopy = 2001 {
    optional int32 extensionRegistry = 1;
  }

  extensions 3000 to 3999;

}

enum retain {
  count          = 4;
  initialized    = 5;
  serializedSize = 6;
}

message ObjCPropertyNaming {
  // Test that the properties properly get things all caps.
  optional string url           = 1;
  optional string thumbnail_url = 2;
  optional string url_foo       = 3;
  optional string some_url_blah = 4;
  optional string http          = 5;
  optional string https         = 6;
  // This one doesn't.
  repeated string urls          = 7;
}

// EnumValueShortName: The short names shouldn't get suffixes/prefixes.
enum Foo {
  SERIALIZED_SIZE = 1;
  SIZE            = 2;
  OTHER           = 3;
}

// EnumValueShortName: The enum name gets a prefix.
enum Category {
  RED  = 1;
  BLUE = 2;
}

// EnumValueShortName: Twist case, full name gets PB, but the short names
// should still end up correct.
enum Time {
  BASE            = 1;
  RECORD          = 2;
  SOMETHING_ELSE  = 3;
}

extend self {
  repeated    int32 debugDescription    =  3000 [packed = true];
  repeated    int64 finalize            =  3001 [packed = true];
  repeated   uint32 hash                =  3002 [packed = true];
  repeated   uint64 classForCoder       =  3003 [packed = true];
  repeated   sint32 byref               =  3004 [packed = true];
}

// Test handing of fields that start with init* since Xcode 5's ARC support
// doesn't like messages that look like initializers but aren't.
message ObjCInitFoo {
  optional string init_val = 11;
  optional int32 init_size = 12;
  optional self init_self = 13;

  repeated string init_vals = 21;
  repeated int32 init_sizes = 22;
  repeated self init_selfs = 23;
}

// Test handling of fields that start with retained names.
message ObjCRetainedFoo {
  optional string new_val_lower_complex = 11;
  optional string new_Val_upper_complex = 12;
  optional string newvalue_lower_no_underscore_complex = 13;
  optional string newValue_upper_no_underscore_complex = 14;

  optional int32 new_val_lower_primitive = 15;
  optional int32 new_Val_upper_primitive = 16;
  optional int32 newvalue_lower_no_underscore_primitive = 17;
  optional int32 newValue_upper_no_underscore_primitive = 18;

  optional self new_val_lower_message = 19;
  optional self new_Val_upper_message = 20;
  optional self newvalue_lower_no_underscore_message = 21;
  optional self newValue_upper_no_underscore_message = 22;

  optional Foo new_val_lower_enum = 23;
  optional Foo new_Val_upper_enum = 24;
  optional Foo newvalue_lower_no_underscore_enum = 25;
  optional Foo newValue_upper_no_underscore_enum = 26;

  repeated string new_val_lower_complex_repeated = 111;
  repeated string new_Val_upper_complex_repeated = 112;
  repeated string newvalue_lower_no_underscore_complex_repeated = 113;
  repeated string newValue_upper_no_underscore_complex_repeated = 114;

  repeated int32 new_val_lower_primitive_repeated = 115;
  repeated int32 new_Val_upper_primitive_repeated = 116;
  repeated int32 newvalue_lower_no_underscore_primitive_repeated = 117;
  repeated int32 newValue_upper_no_underscore_primitive_repeated = 118;

  repeated self new_val_lower_message_repeated = 119;
  repeated self new_Val_upper_message_repeated = 120;
  repeated self newvalue_lower_no_underscore_message_repeated = 121;
  repeated self newValue_upper_no_underscore_message_repeated = 122;

  repeated Foo new_val_lower_enum_repeated = 123;
  repeated Foo new_Val_upper_enum_repeated = 124;
  repeated Foo newvalue_lower_no_underscore_enum_repeated = 125;
  repeated Foo newValue_upper_no_underscore_enum_repeated = 126;

  optional string alloc_val_lower_complex = 211;
  optional string alloc_Val_upper_complex = 212;
  optional string allocvalue_lower_no_underscore_complex = 213;
  optional string allocValue_upper_no_underscore_complex = 214;

  optional int32 alloc_val_lower_primitive = 215;
  optional int32 alloc_Val_upper_primitive = 216;
  optional int32 allocvalue_lower_no_underscore_primitive = 217;
  optional int32 allocValue_upper_no_underscore_primitive = 218;

  optional self alloc_val_lower_message = 219;
  optional self alloc_Val_upper_message = 220;
  optional self allocvalue_lower_no_underscore_message = 221;
  optional self allocValue_upper_no_underscore_message = 222;

  optional Foo alloc_val_lower_enum = 223;
  optional Foo alloc_Val_upper_enum = 224;
  optional Foo allocvalue_lower_no_underscore_enum = 225;
  optional Foo allocValue_upper_no_underscore_enum = 226;

  repeated string alloc_val_lower_complex_repeated = 311;
  repeated string alloc_Val_upper_complex_repeated = 312;
  repeated string allocvalue_lower_no_underscore_complex_repeated = 313;
  repeated string allocValue_upper_no_underscore_complex_repeated = 314;

  repeated int32 alloc_val_lower_primitive_repeated = 315;
  repeated int32 alloc_Val_upper_primitive_repeated = 316;
  repeated int32 allocvalue_lower_no_underscore_primitive_repeated = 317;
  repeated int32 allocValue_upper_no_underscore_primitive_repeated = 318;

  repeated self alloc_val_lower_message_repeated = 319;
  repeated self alloc_Val_upper_message_repeated = 320;
  repeated self allocvalue_lower_no_underscore_message_repeated = 321;
  repeated self allocValue_upper_no_underscore_message_repeated = 322;

  repeated Foo alloc_val_lower_enum_repeated = 323;
  repeated Foo alloc_Val_upper_enum_repeated = 324;
  repeated Foo allocvalue_lower_no_underscore_enum_repeated = 325;
  repeated Foo allocValue_upper_no_underscore_enum_repeated = 326;

  optional string copy_val_lower_complex = 411;
  optional string copy_Val_upper_complex = 412;
  optional string copyvalue_lower_no_underscore_complex = 413;
  optional string copyValue_upper_no_underscore_complex = 414;

  optional int32 copy_val_lower_primitive = 415;
  optional int32 copy_Val_upper_primitive = 416;
  optional int32 copyvalue_lower_no_underscore_primitive = 417;
  optional int32 copyValue_upper_no_underscore_primitive = 418;

  optional self copy_val_lower_message = 419;
  optional self copy_Val_upper_message = 420;
  optional self copyvalue_lower_no_underscore_message = 421;
  optional self copyValue_upper_no_underscore_message = 422;

  optional Foo copy_val_lower_enum = 423;
  optional Foo copy_Val_upper_enum = 424;
  optional Foo copyvalue_lower_no_underscore_enum = 425;
  optional Foo copyValue_upper_no_underscore_enum = 426;

  repeated string copy_val_lower_complex_repeated = 511;
  repeated string copy_Val_upper_complex_repeated = 512;
  repeated string copyvalue_lower_no_underscore_complex_repeated = 513;
  repeated string copyValue_upper_no_underscore_complex_repeated = 514;

  repeated int32 copy_val_lower_primitive_repeated = 515;
  repeated int32 copy_Val_upper_primitive_repeated = 516;
  repeated int32 copyvalue_lower_no_underscore_primitive_repeated = 517;
  repeated int32 copyValue_upper_no_underscore_primitive_repeated = 518;

  repeated self copy_val_lower_message_repeated = 519;
  repeated self copy_Val_upper_message_repeated = 520;
  repeated self copyvalue_lower_no_underscore_message_repeated = 521;
  repeated self copyValue_upper_no_underscore_message_repeated = 522;

  repeated Foo copy_val_lower_enum_repeated = 523;
  repeated Foo copy_Val_upper_enum_repeated = 524;
  repeated Foo copyvalue_lower_no_underscore_enum_repeated = 525;
  repeated Foo copyValue_upper_no_underscore_enum_repeated = 526;

  optional string mutableCopy_val_lower_complex = 611;
  optional string mutableCopy_Val_upper_complex = 612;
  optional string mutableCopyvalue_lower_no_underscore_complex = 613;
  optional string mutableCopyValue_upper_no_underscore_complex = 614;

  optional int32 mutableCopy_val_lower_primitive = 615;
  optional int32 mutableCopy_Val_upper_primitive = 616;
  optional int32 mutableCopyvalue_lower_no_underscore_primitive = 617;
  optional int32 mutableCopyValue_upper_no_underscore_primitive = 618;

  optional self mutableCopy_val_lower_message = 619;
  optional self mutableCopy_Val_upper_message = 620;
  optional self mutableCopyvalue_lower_no_underscore_message = 621;
  optional self mutableCopyValue_upper_no_underscore_message = 622;

  optional Foo mutableCopy_val_lower_enum = 623;
  optional Foo mutableCopy_Val_upper_enum = 624;
  optional Foo mutableCopyvalue_lower_no_underscore_enum = 625;
  optional Foo mutableCopyValue_upper_no_underscore_enum = 626;

  repeated string mutableCopy_val_lower_complex_repeated = 711;
  repeated string mutableCopy_Val_upper_complex_repeated = 712;
  repeated string mutableCopyvalue_lower_no_underscore_complex_repeated = 713;
  repeated string mutableCopyValue_upper_no_underscore_complex_repeated = 714;

  repeated int32 mutableCopy_val_lower_primitive_repeated = 715;
  repeated int32 mutableCopy_Val_upper_primitive_repeated = 716;
  repeated int32 mutableCopyvalue_lower_no_underscore_primitive_repeated = 717;
  repeated int32 mutableCopyValue_upper_no_underscore_primitive_repeated = 718;

  repeated self mutableCopy_val_lower_message_repeated = 719;
  repeated self mutableCopy_Val_upper_message_repeated = 720;
  repeated self mutableCopyvalue_lower_no_underscore_message_repeated = 721;
  repeated self mutableCopyValue_upper_no_underscore_message_repeated = 722;

  repeated Foo mutableCopy_val_lower_enum_repeated = 723;
  repeated Foo mutableCopy_Val_upper_enum_repeated = 724;
  repeated Foo mutableCopyvalue_lower_no_underscore_enum_repeated = 725;
  repeated Foo mutableCopyValue_upper_no_underscore_enum_repeated = 726;

  extensions 1000 to 3999;
}

// Extension fields with retained names.
extend ObjCRetainedFoo {
  optional string new_val_lower_complex = 1011;
  optional string new_Val_upper_complex = 1012;
  optional string newvalue_lower_no_underscore_complex = 1013;
  optional string newValue_upper_no_underscore_complex = 1014;

  optional int32 new_val_lower_primitive = 1015;
  optional int32 new_Val_upper_primitive = 1016;
  optional int32 newvalue_lower_no_underscore_primitive = 1017;
  optional int32 newValue_upper_no_underscore_primitive = 1018;

  optional self new_val_lower_message = 1019;
  optional self new_Val_upper_message = 1020;
  optional self newvalue_lower_no_underscore_message = 1021;
  optional self newValue_upper_no_underscore_message = 1022;

  optional Foo new_val_lower_enum = 1023;
  optional Foo new_Val_upper_enum = 1024;
  optional Foo newvalue_lower_no_underscore_enum = 1025;
  optional Foo newValue_upper_no_underscore_enum = 1026;

  repeated string new_val_lower_complex_repeated = 1111;
  repeated string new_Val_upper_complex_repeated = 1112;
  repeated string newvalue_lower_no_underscore_complex_repeated = 1113;
  repeated string newValue_upper_no_underscore_complex_repeated = 1114;

  repeated int32 new_val_lower_primitive_repeated = 1115;
  repeated int32 new_Val_upper_primitive_repeated = 1116;
  repeated int32 newvalue_lower_no_underscore_primitive_repeated = 1117;
  repeated int32 newValue_upper_no_underscore_primitive_repeated = 1118;

  repeated self new_val_lower_message_repeated = 1119;
  repeated self new_Val_upper_message_repeated = 1120;
  repeated self newvalue_lower_no_underscore_message_repeated = 1121;
  repeated self newValue_upper_no_underscore_message_repeated = 1122;

  repeated Foo new_val_lower_enum_repeated = 1123;
  repeated Foo new_Val_upper_enum_repeated = 1124;
  repeated Foo newvalue_lower_no_underscore_enum_repeated = 1125;
  repeated Foo newValue_upper_no_underscore_enum_repeated = 1126;

  optional string alloc_val_lower_complex = 1211;
  optional string alloc_Val_upper_complex = 1212;
  optional string allocvalue_lower_no_underscore_complex = 1213;
  optional string allocValue_upper_no_underscore_complex = 1214;

  optional int32 alloc_val_lower_primitive = 1215;
  optional int32 alloc_Val_upper_primitive = 1216;
  optional int32 allocvalue_lower_no_underscore_primitive = 1217;
  optional int32 allocValue_upper_no_underscore_primitive = 1218;

  optional self alloc_val_lower_message = 1219;
  optional self alloc_Val_upper_message = 1220;
  optional self allocvalue_lower_no_underscore_message = 1221;
  optional self allocValue_upper_no_underscore_message = 1222;

  optional Foo alloc_val_lower_enum = 1223;
  optional Foo alloc_Val_upper_enum = 1224;
  optional Foo allocvalue_lower_no_underscore_enum = 1225;
  optional Foo allocValue_upper_no_underscore_enum = 1226;

  repeated string alloc_val_lower_complex_repeated = 1311;
  repeated string alloc_Val_upper_complex_repeated = 1312;
  repeated string allocvalue_lower_no_underscore_complex_repeated = 1313;
  repeated string allocValue_upper_no_underscore_complex_repeated = 1314;

  repeated int32 alloc_val_lower_primitive_repeated = 1315;
  repeated int32 alloc_Val_upper_primitive_repeated = 1316;
  repeated int32 allocvalue_lower_no_underscore_primitive_repeated = 1317;
  repeated int32 allocValue_upper_no_underscore_primitive_repeated = 1318;

  repeated self alloc_val_lower_message_repeated = 1319;
  repeated self alloc_Val_upper_message_repeated = 1320;
  repeated self allocvalue_lower_no_underscore_message_repeated = 1321;
  repeated self allocValue_upper_no_underscore_message_repeated = 1322;

  repeated Foo alloc_val_lower_enum_repeated = 1323;
  repeated Foo alloc_Val_upper_enum_repeated = 1324;
  repeated Foo allocvalue_lower_no_underscore_enum_repeated = 1325;
  repeated Foo allocValue_upper_no_underscore_enum_repeated = 1326;

  optional string copy_val_lower_complex = 1411;
  optional string copy_Val_upper_complex = 1412;
  optional string copyvalue_lower_no_underscore_complex = 1413;
  optional string copyValue_upper_no_underscore_complex = 1414;

  optional int32 copy_val_lower_primitive = 1415;
  optional int32 copy_Val_upper_primitive = 1416;
  optional int32 copyvalue_lower_no_underscore_primitive = 1417;
  optional int32 copyValue_upper_no_underscore_primitive = 1418;

  optional self copy_val_lower_message = 1419;
  optional self copy_Val_upper_message = 1420;
  optional self copyvalue_lower_no_underscore_message = 1421;
  optional self copyValue_upper_no_underscore_message = 1422;

  optional Foo copy_val_lower_enum = 1423;
  optional Foo copy_Val_upper_enum = 1424;
  optional Foo copyvalue_lower_no_underscore_enum = 1425;
  optional Foo copyValue_upper_no_underscore_enum = 1426;

  repeated string copy_val_lower_complex_repeated = 1511;
  repeated string copy_Val_upper_complex_repeated = 1512;
  repeated string copyvalue_lower_no_underscore_complex_repeated = 1513;
  repeated string copyValue_upper_no_underscore_complex_repeated = 1514;

  repeated int32 copy_val_lower_primitive_repeated = 1515;
  repeated int32 copy_Val_upper_primitive_repeated = 1516;
  repeated int32 copyvalue_lower_no_underscore_primitive_repeated = 1517;
  repeated int32 copyValue_upper_no_underscore_primitive_repeated = 1518;

  repeated self copy_val_lower_message_repeated = 1519;
  repeated self copy_Val_upper_message_repeated = 1520;
  repeated self copyvalue_lower_no_underscore_message_repeated = 1521;
  repeated self copyValue_upper_no_underscore_message_repeated = 1522;

  repeated Foo copy_val_lower_enum_repeated = 1523;
  repeated Foo copy_Val_upper_enum_repeated = 1524;
  repeated Foo copyvalue_lower_no_underscore_enum_repeated = 1525;
  repeated Foo copyValue_upper_no_underscore_enum_repeated = 1526;

  optional string mutableCopy_val_lower_complex = 1611;
  optional string mutableCopy_Val_upper_complex = 1612;
  optional string mutableCopyvalue_lower_no_underscore_complex = 1613;
  optional string mutableCopyValue_upper_no_underscore_complex = 1614;

  optional int32 mutableCopy_val_lower_primitive = 1615;
  optional int32 mutableCopy_Val_upper_primitive = 1616;
  optional int32 mutableCopyvalue_lower_no_underscore_primitive = 1617;
  optional int32 mutableCopyValue_upper_no_underscore_primitive = 1618;

  optional self mutableCopy_val_lower_message = 1619;
  optional self mutableCopy_Val_upper_message = 1620;
  optional self mutableCopyvalue_lower_no_underscore_message = 1621;
  optional self mutableCopyValue_upper_no_underscore_message = 1622;

  optional Foo mutableCopy_val_lower_enum = 1623;
  optional Foo mutableCopy_Val_upper_enum = 1624;
  optional Foo mutableCopyvalue_lower_no_underscore_enum = 1625;
  optional Foo mutableCopyValue_upper_no_underscore_enum = 1626;

  repeated string mutableCopy_val_lower_complex_repeated = 1711;
  repeated string mutableCopy_Val_upper_complex_repeated = 1712;
  repeated string mutableCopyvalue_lower_no_underscore_complex_repeated = 1713;
  repeated string mutableCopyValue_upper_no_underscore_complex_repeated = 1714;

  repeated int32 mutableCopy_val_lower_primitive_repeated = 1715;
  repeated int32 mutableCopy_Val_upper_primitive_repeated = 1716;
  repeated int32 mutableCopyvalue_lower_no_underscore_primitive_repeated = 1717;
  repeated int32 mutableCopyValue_upper_no_underscore_primitive_repeated = 1718;

  repeated self mutableCopy_val_lower_message_repeated = 1719;
  repeated self mutableCopy_Val_upper_message_repeated = 1720;
  repeated self mutableCopyvalue_lower_no_underscore_message_repeated = 1721;
  repeated self mutableCopyValue_upper_no_underscore_message_repeated = 1722;

  repeated Foo mutableCopy_val_lower_enum_repeated = 1723;
  repeated Foo mutableCopy_Val_upper_enum_repeated = 1724;
  repeated Foo mutableCopyvalue_lower_no_underscore_enum_repeated = 1725;
  repeated Foo mutableCopyValue_upper_no_underscore_enum_repeated = 1726;
}

message JustToScopeExtensions {
  extend ObjCRetainedFoo {
    optional string new_val_lower_complex = 2011;
    optional string new_Val_upper_complex = 2012;
    optional string newvalue_lower_no_underscore_complex = 2013;
    optional string newValue_upper_no_underscore_complex = 2014;

    optional int32 new_val_lower_primitive = 2015;
    optional int32 new_Val_upper_primitive = 2016;
    optional int32 newvalue_lower_no_underscore_primitive = 2017;
    optional int32 newValue_upper_no_underscore_primitive = 2018;

    optional self new_val_lower_message = 2019;
    optional self new_Val_upper_message = 2020;
    optional self newvalue_lower_no_underscore_message = 2021;
    optional self newValue_upper_no_underscore_message = 2022;

    optional Foo new_val_lower_enum = 2023;
    optional Foo new_Val_upper_enum = 2024;
    optional Foo newvalue_lower_no_underscore_enum = 2025;
    optional Foo newValue_upper_no_underscore_enum = 2026;

    repeated string new_val_lower_complex_repeated = 2111;
    repeated string new_Val_upper_complex_repeated = 2112;
    repeated string newvalue_lower_no_underscore_complex_repeated = 2113;
    repeated string newValue_upper_no_underscore_complex_repeated = 2114;

    repeated int32 new_val_lower_primitive_repeated = 2115;
    repeated int32 new_Val_upper_primitive_repeated = 2116;
    repeated int32 newvalue_lower_no_underscore_primitive_repeated = 2117;
    repeated int32 newValue_upper_no_underscore_primitive_repeated = 2118;

    repeated self new_val_lower_message_repeated = 2119;
    repeated self new_Val_upper_message_repeated = 2120;
    repeated self newvalue_lower_no_underscore_message_repeated = 2121;
    repeated self newValue_upper_no_underscore_message_repeated = 2122;

    repeated Foo new_val_lower_enum_repeated = 2123;
    repeated Foo new_Val_upper_enum_repeated = 2124;
    repeated Foo newvalue_lower_no_underscore_enum_repeated = 2125;
    repeated Foo newValue_upper_no_underscore_enum_repeated = 2126;

    optional string alloc_val_lower_complex = 2211;
    optional string alloc_Val_upper_complex = 2212;
    optional string allocvalue_lower_no_underscore_complex = 2213;
    optional string allocValue_upper_no_underscore_complex = 2214;

    optional int32 alloc_val_lower_primitive = 2215;
    optional int32 alloc_Val_upper_primitive = 2216;
    optional int32 allocvalue_lower_no_underscore_primitive = 2217;
    optional int32 allocValue_upper_no_underscore_primitive = 2218;

    optional self alloc_val_lower_message = 2219;
    optional self alloc_Val_upper_message = 2220;
    optional self allocvalue_lower_no_underscore_message = 2221;
    optional self allocValue_upper_no_underscore_message = 2222;

    optional Foo alloc_val_lower_enum = 2223;
    optional Foo alloc_Val_upper_enum = 2224;
    optional Foo allocvalue_lower_no_underscore_enum = 2225;
    optional Foo allocValue_upper_no_underscore_enum = 2226;

    repeated string alloc_val_lower_complex_repeated = 2311;
    repeated string alloc_Val_upper_complex_repeated = 2312;
    repeated string allocvalue_lower_no_underscore_complex_repeated = 2313;
    repeated string allocValue_upper_no_underscore_complex_repeated = 2314;

    repeated int32 alloc_val_lower_primitive_repeated = 2315;
    repeated int32 alloc_Val_upper_primitive_repeated = 2316;
    repeated int32 allocvalue_lower_no_underscore_primitive_repeated = 2317;
    repeated int32 allocValue_upper_no_underscore_primitive_repeated = 2318;

    repeated self alloc_val_lower_message_repeated = 2319;
    repeated self alloc_Val_upper_message_repeated = 2320;
    repeated self allocvalue_lower_no_underscore_message_repeated = 2321;
    repeated self allocValue_upper_no_underscore_message_repeated = 2322;

    repeated Foo alloc_val_lower_enum_repeated = 2323;
    repeated Foo alloc_Val_upper_enum_repeated = 2324;
    repeated Foo allocvalue_lower_no_underscore_enum_repeated = 2325;
    repeated Foo allocValue_upper_no_underscore_enum_repeated = 2326;

    optional string copy_val_lower_complex = 2411;
    optional string copy_Val_upper_complex = 2412;
    optional string copyvalue_lower_no_underscore_complex = 2413;
    optional string copyValue_upper_no_underscore_complex = 2414;

    optional int32 copy_val_lower_primitive = 2415;
    optional int32 copy_Val_upper_primitive = 2416;
    optional int32 copyvalue_lower_no_underscore_primitive = 2417;
    optional int32 copyValue_upper_no_underscore_primitive = 2418;

    optional self copy_val_lower_message = 2419;
    optional self copy_Val_upper_message = 2420;
    optional self copyvalue_lower_no_underscore_message = 2421;
    optional self copyValue_upper_no_underscore_message = 2422;

    optional Foo copy_val_lower_enum = 2423;
    optional Foo copy_Val_upper_enum = 2424;
    optional Foo copyvalue_lower_no_underscore_enum = 2425;
    optional Foo copyValue_upper_no_underscore_enum = 2426;

    repeated string copy_val_lower_complex_repeated = 2511;
    repeated string copy_Val_upper_complex_repeated = 2512;
    repeated string copyvalue_lower_no_underscore_complex_repeated = 2513;
    repeated string copyValue_upper_no_underscore_complex_repeated = 2514;

    repeated int32 copy_val_lower_primitive_repeated = 2515;
    repeated int32 copy_Val_upper_primitive_repeated = 2516;
    repeated int32 copyvalue_lower_no_underscore_primitive_repeated = 2517;
    repeated int32 copyValue_upper_no_underscore_primitive_repeated = 2518;

    repeated self copy_val_lower_message_repeated = 2519;
    repeated self copy_Val_upper_message_repeated = 2520;
    repeated self copyvalue_lower_no_underscore_message_repeated = 2521;
    repeated self copyValue_upper_no_underscore_message_repeated = 2522;

    repeated Foo copy_val_lower_enum_repeated = 2523;
    repeated Foo copy_Val_upper_enum_repeated = 2524;
    repeated Foo copyvalue_lower_no_underscore_enum_repeated = 2525;
    repeated Foo copyValue_upper_no_underscore_enum_repeated = 2526;

    optional string mutableCopy_val_lower_complex = 2611;
    optional string mutableCopy_Val_upper_complex = 2612;
    optional string mutableCopyvalue_lower_no_underscore_complex = 2613;
    optional string mutableCopyValue_upper_no_underscore_complex = 2614;

    optional int32 mutableCopy_val_lower_primitive = 2615;
    optional int32 mutableCopy_Val_upper_primitive = 2616;
    optional int32 mutableCopyvalue_lower_no_underscore_primitive = 2617;
    optional int32 mutableCopyValue_upper_no_underscore_primitive = 2618;

    optional self mutableCopy_val_lower_message = 2619;
    optional self mutableCopy_Val_upper_message = 2620;
    optional self mutableCopyvalue_lower_no_underscore_message = 2621;
    optional self mutableCopyValue_upper_no_underscore_message = 2622;

    optional Foo mutableCopy_val_lower_enum = 2623;
    optional Foo mutableCopy_Val_upper_enum = 2624;
    optional Foo mutableCopyvalue_lower_no_underscore_enum = 2625;
    optional Foo mutableCopyValue_upper_no_underscore_enum = 2626;

    repeated string mutableCopy_val_lower_complex_repeated = 2711;
    repeated string mutableCopy_Val_upper_complex_repeated = 2712;
    repeated string mutableCopyvalue_lower_no_underscore_complex_repeated = 2713;
    repeated string mutableCopyValue_upper_no_underscore_complex_repeated = 2714;

    repeated int32 mutableCopy_val_lower_primitive_repeated = 2715;
    repeated int32 mutableCopy_Val_upper_primitive_repeated = 2716;
    repeated int32 mutableCopyvalue_lower_no_underscore_primitive_repeated = 2717;
    repeated int32 mutableCopyValue_upper_no_underscore_primitive_repeated = 2718;

    repeated self mutableCopy_val_lower_message_repeated = 2719;
    repeated self mutableCopy_Val_upper_message_repeated = 2720;
    repeated self mutableCopyvalue_lower_no_underscore_message_repeated = 2721;
    repeated self mutableCopyValue_upper_no_underscore_message_repeated = 2722;

    repeated Foo mutableCopy_val_lower_enum_repeated = 2723;
    repeated Foo mutableCopy_Val_upper_enum_repeated = 2724;
    repeated Foo mutableCopyvalue_lower_no_underscore_enum_repeated = 2725;
    repeated Foo mutableCopyValue_upper_no_underscore_enum_repeated = 2726;
  }
}

// Test handling of fields that are the retained names.
message ObjCRetainedComplex {
  optional string new = 1;
  optional string alloc = 2;
  optional string copy = 3;
  optional string mutableCopy = 4;
}

message ObjCRetainedComplexRepeated {
  repeated string new = 1;
  repeated string alloc = 2;
  repeated string copy = 3;
  repeated string mutableCopy = 4;
}

message ObjCRetainedPrimitive {
  optional int32 new = 1;
  optional int32 alloc = 2;
  optional int32 copy = 3;
  optional int32 mutableCopy = 4;
}

message ObjCRetainedPrimitiveRepeated {
  repeated int32 new = 1;
  repeated int32 alloc = 2;
  repeated int32 copy = 3;
  repeated int32 mutableCopy = 4;
}

message ObjCRetainedMessage {
  optional self new = 1;
  optional self alloc = 2;
  optional self copy = 3;
  optional self mutableCopy = 4;
}

message ObjCRetainedMessageRepeated {
  repeated self new = 1;
  repeated self alloc = 2;
  repeated self copy = 3;
  repeated self mutableCopy = 4;
}

// Test Handling some MacTypes
message Point {
  message Rect {
    optional int32 TimeValue = 1;
  }
}

// Test some weird defaults that we see in protos.
message ObjcWeirdDefaults {
  // Set default values that match the protocol buffer defined defaults to
  // confirm hasDefault and the default values are set correctly.
  optional string foo = 1 [default = ""];
  optional bytes bar = 2 [default = ""];
}

// Used to confirm negative enum values work as expected.
message EnumTestMsg {
  enum MyEnum {
    ZERO    = 0;
    ONE     = 1;
    TWO     = 2;
    NEG_ONE = -1;
    NEG_TWO = -2;
  }
  optional MyEnum foo = 1;
  optional MyEnum bar = 2 [default = ONE];
  optional MyEnum baz = 3 [default = NEG_ONE];

  repeated MyEnum mumble = 4;
}

// Test case for https://github.com/protocolbuffers/protobuf/issues/1453
// Message with no explicit defaults, but a non zero default for an enum.
message MessageWithOneBasedEnum {
  enum OneBasedEnum {
    ONE = 1;
    TWO = 2;
  }
  optional OneBasedEnum enum_field = 1;
}

// Message with all bools for testing things related to bool storage.
message BoolOnlyMessage {
  optional bool bool_field_1 = 1;
  optional bool bool_field_2 = 2;
  optional bool bool_field_3 = 3;
  optional bool bool_field_4 = 4;
  optional bool bool_field_5 = 5;
  optional bool bool_field_6 = 6;
  optional bool bool_field_7 = 7;
  optional bool bool_field_8 = 8;
  optional bool bool_field_9 = 9;
  optional bool bool_field_10 = 10;
  optional bool bool_field_11 = 11;
  optional bool bool_field_12 = 12;
  optional bool bool_field_13 = 13;
  optional bool bool_field_14 = 14;
  optional bool bool_field_15 = 15;
  optional bool bool_field_16 = 16;
  optional bool bool_field_17 = 17;
  optional bool bool_field_18 = 18;
  optional bool bool_field_19 = 19;
  optional bool bool_field_20 = 20;
  optional bool bool_field_21 = 21;
  optional bool bool_field_22 = 22;
  optional bool bool_field_23 = 23;
  optional bool bool_field_24 = 24;
  optional bool bool_field_25 = 25;
  optional bool bool_field_26 = 26;
  optional bool bool_field_27 = 27;
  optional bool bool_field_28 = 28;
  optional bool bool_field_29 = 29;
  optional bool bool_field_30 = 30;
  optional bool bool_field_31 = 31;
  optional bool bool_field_32 = 32;
}

// Reference to a WKT to test (via generated code inspection), the handling
// of #imports.  Within the WKTs, references to each other are just path
// based imports, but when reference from another proto file, they should be
// conditional to support the framework import style.
message WKTRefereceMessage {
  optional google.protobuf.Any an_any = 1;
}

// This is in part a compile test, it ensures that when aliases end up with
// the same ObjC name, we drop them to avoid the duplication names. There
// is a test to ensure the descriptors are still generated to support
// reflection and TextFormat.
enum TestEnumObjCNameCollision {
  option allow_alias = true;

  FOO = 1;
  foo = 1;

  BAR = 2;
  mumble = 2;
  MUMBLE = 2;
}
