// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

syntax = "proto2";

package lazy_extension_test;

import "internal/testprotos/messageset/messagesetpb/message_set.proto";

option go_package = "google.golang.org/protobuf/internal/testprotos/lazy";

// This message contains a message set.
message Holder {
  optional goproto.proto.messageset.MessageSet data = 1;
}

// This message may be inserted into a message set.
message Rabbit {
  extend goproto.proto.messageset.MessageSet {
    optional Rabbit message_set_extension = 345570595;
  }
  optional string name = 1;
}

enum FlyingFoxSpecies {
  FLYING_FOX_UNDEFINED = 0;
  GREY_HEADED = 1;
  BLACK = 2;
  SPECTACLED = 3;
  LARGE_EARED = 4;
  DUSKY = 5;
  TORRESIAN = 6;
  BARE_BACKED = 7;
}

enum PipistrelleSpecies {
  PIPISTRELLE_UNDEFINED = 0;
  FOREST = 1;
  INDIAN = 2;
  EGYPTIAN = 3;
  RUSTY = 4;
  LEAST = 5;
}

message FlyingFox {
  optional FlyingFoxSpecies species = 1;
}

message Tree {
  optional bool eucalyptus = 1;
  extensions 10000 to max;
}

extend Tree {
  optional FlyingFox bat = 345570595;
}

extend Tree {
  optional FlyingFox bat_pup = 345570596;
}

extend Tree {
  repeated FlyingFox bat_posse = 345570597;
  optional bytes binary_bat = 345570598;
  optional uint32 integer_bat = 345570599;
  optional group Pipistrelle = 345570600 {
    optional PipistrelleSpecies species = 1;
  }
  repeated group Pipistrelles = 345570601 {
    optional PipistrelleSpecies species = 1;
  }
}

// And the ugly version that is not encouraged
message BatNest {
  extend Tree {
    optional FlyingFox bat = 345570602;
  }
}
