    syntax = "proto2";

    package example;

    message Object {
      required string name = 1;
      required int32 identifier = 2;
      optional string address = 3;

      enum ObjectType {
        LOCAL = 0;
        REMOTE = 1;
        NEITHER = 2;
      }

      message ObjectData {
        required string number = 1;
        optional ObjectType type = 2 [default = NEITHER];
      }

      repeated ObjectData dataList = 4;
    }

    message ObjectList {
      repeated Object object = 1;
    }