// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google LLC.  All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

syntax = "proto2";

package nest;

message Outer {
  message Inner {
    optional double double = 1;
    optional float float = 2;
    optional int32 int32 = 3;
    optional int64 int64 = 4;
    optional uint32 uint32 = 5;
    optional uint64 uint64 = 6;
    optional sint32 sint32 = 7;
    optional sint64 sint64 = 8;
    optional fixed32 fixed32 = 9;
    optional fixed64 fixed64 = 10;
    optional sfixed32 sfixed32 = 11;
    optional sfixed64 sfixed64 = 12;
    optional bool bool = 13;
    optional string string = 14;
    optional bytes bytes = 15;

    message SuperInner {
      message DuperInner {
        message EvenMoreInner {
          message CantBelieveItsSoInner {
            optional int32 num = 99;
          }
        }
      }
    }
  }
  optional Inner inner = 1;
  optional .nest.Outer.Inner.SuperInner.DuperInner.EvenMoreInner
      .CantBelieveItsSoInner deep = 2;
}
