// 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 {
    message InnerSubMsg {
      optional bool flag = 1;
    }

    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;
    optional InnerSubMsg innersubmsg = 16;

    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;

  optional NotInside notinside = 3;
}

message NotInside {
  optional int32 num = 1;
}

message Recursive {
  optional Recursive rec = 1;
  optional int32 num = 2;
}
