| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160 | // Generated by ProtoGen, Version=2.4.1.555, Culture=neutral, PublicKeyToken=55f7125234beb589.  DO NOT EDIT!#pragma warning disable 1591, 0612, 3021#region Designer generated codeusing pb = global::Google.ProtocolBuffers;using pbc = global::Google.ProtocolBuffers.Collections;using pbd = global::Google.ProtocolBuffers.Descriptors;using scg = global::System.Collections.Generic;namespace Google.ProtocolBuffers.Examples.AddressBook {    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]  public static partial class AddressBookProtos {      #region Extension registration    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {    }    #endregion    #region Static variables    internal static pbd::MessageDescriptor internal__static_tutorial_Person__Descriptor;    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.Examples.AddressBook.Person, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder> internal__static_tutorial_Person__FieldAccessorTable;    internal static pbd::MessageDescriptor internal__static_tutorial_Person_PhoneNumber__Descriptor;    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder> internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable;    internal static pbd::MessageDescriptor internal__static_tutorial_AddressBook__Descriptor;    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook, global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Builder> internal__static_tutorial_AddressBook__FieldAccessorTable;    #endregion    #region Descriptor    public static pbd::FileDescriptor Descriptor {      get { return descriptor; }    }    private static pbd::FileDescriptor descriptor;        static AddressBookProtos() {      byte[] descriptorData = global::System.Convert.FromBase64String(          string.Concat(            "Chp0dXRvcmlhbC9hZGRyZXNzYm9vay5wcm90bxIIdHV0b3JpYWwaJGdvb2ds",             "ZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5wcm90byLaAQoGUGVyc29uEgwK",             "BG5hbWUYASACKAkSCgoCaWQYAiACKAUSDQoFZW1haWwYAyABKAkSKwoFcGhv",             "bmUYBCADKAsyHC50dXRvcmlhbC5QZXJzb24uUGhvbmVOdW1iZXIaTQoLUGhv",             "bmVOdW1iZXISDgoGbnVtYmVyGAEgAigJEi4KBHR5cGUYAiABKA4yGi50dXRv",             "cmlhbC5QZXJzb24uUGhvbmVUeXBlOgRIT01FIisKCVBob25lVHlwZRIKCgZN",             "T0JJTEUQABIICgRIT01FEAESCAoEV09SSxACIi8KC0FkZHJlc3NCb29rEiAK",             "BnBlcnNvbhgBIAMoCzIQLnR1dG9yaWFsLlBlcnNvbkJFSAHCPkAKK0dvb2ds",             "ZS5Qcm90b2NvbEJ1ZmZlcnMuRXhhbXBsZXMuQWRkcmVzc0Jvb2sSEUFkZHJl",           "c3NCb29rUHJvdG9z"));      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {        descriptor = root;        internal__static_tutorial_Person__Descriptor = Descriptor.MessageTypes[0];        internal__static_tutorial_Person__FieldAccessorTable =             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.Examples.AddressBook.Person, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder>(internal__static_tutorial_Person__Descriptor,                new string[] { "Name", "Id", "Email", "Phone", });        internal__static_tutorial_Person_PhoneNumber__Descriptor = internal__static_tutorial_Person__Descriptor.NestedTypes[0];        internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable =             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder>(internal__static_tutorial_Person_PhoneNumber__Descriptor,                new string[] { "Number", "Type", });        internal__static_tutorial_AddressBook__Descriptor = Descriptor.MessageTypes[1];        internal__static_tutorial_AddressBook__FieldAccessorTable =             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook, global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Builder>(internal__static_tutorial_AddressBook__Descriptor,                new string[] { "Person", });        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();        RegisterAllExtensions(registry);        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);        return registry;      };      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,          new pbd::FileDescriptor[] {          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor,           }, assigner);    }    #endregion      }  #region Messages  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]  public sealed partial class Person : pb::GeneratedMessage<Person, Person.Builder> {    private Person() { }    private static readonly Person defaultInstance = new Person().MakeReadOnly();    private static readonly string[] _personFieldNames = new string[] { "email", "id", "name", "phone" };    private static readonly uint[] _personFieldTags = new uint[] { 26, 16, 10, 34 };    public static Person DefaultInstance {      get { return defaultInstance; }    }        public override Person DefaultInstanceForType {      get { return DefaultInstance; }    }        protected override Person ThisMessage {      get { return this; }    }        public static pbd::MessageDescriptor Descriptor {      get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.internal__static_tutorial_Person__Descriptor; }    }        protected override pb::FieldAccess.FieldAccessorTable<Person, Person.Builder> InternalFieldAccessors {      get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.internal__static_tutorial_Person__FieldAccessorTable; }    }        #region Nested types    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]    public static partial class Types {      public enum PhoneType {        MOBILE = 0,        HOME = 1,        WORK = 2,      }            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]      public sealed partial class PhoneNumber : pb::GeneratedMessage<PhoneNumber, PhoneNumber.Builder> {        private PhoneNumber() { }        private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly();        private static readonly string[] _phoneNumberFieldNames = new string[] { "number", "type" };        private static readonly uint[] _phoneNumberFieldTags = new uint[] { 10, 16 };        public static PhoneNumber DefaultInstance {          get { return defaultInstance; }        }                public override PhoneNumber DefaultInstanceForType {          get { return DefaultInstance; }        }                protected override PhoneNumber ThisMessage {          get { return this; }        }                public static pbd::MessageDescriptor Descriptor {          get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.internal__static_tutorial_Person_PhoneNumber__Descriptor; }        }                protected override pb::FieldAccess.FieldAccessorTable<PhoneNumber, PhoneNumber.Builder> InternalFieldAccessors {          get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable; }        }                public const int NumberFieldNumber = 1;        private bool hasNumber;        private string number_ = "";        public bool HasNumber {          get { return hasNumber; }        }        public string Number {          get { return number_; }        }                public const int TypeFieldNumber = 2;        private bool hasType;        private global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType type_ = global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType.HOME;        public bool HasType {          get { return hasType; }        }        public global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType Type {          get { return type_; }        }                public override bool IsInitialized {          get {            if (!hasNumber) return false;            return true;          }        }                public override void WriteTo(pb::ICodedOutputStream output) {          CalcSerializedSize();          string[] field_names = _phoneNumberFieldNames;          if (hasNumber) {            output.WriteString(1, field_names[0], Number);          }          if (hasType) {            output.WriteEnum(2, field_names[1], (int) Type, Type);          }          UnknownFields.WriteTo(output);        }                private int memoizedSerializedSize = -1;        public override int SerializedSize {          get {            int size = memoizedSerializedSize;            if (size != -1) return size;            return CalcSerializedSize();          }        }                private int CalcSerializedSize() {          int size = memoizedSerializedSize;          if (size != -1) return size;                    size = 0;          if (hasNumber) {            size += pb::CodedOutputStream.ComputeStringSize(1, Number);          }          if (hasType) {            size += pb::CodedOutputStream.ComputeEnumSize(2, (int) Type);          }          size += UnknownFields.SerializedSize;          memoizedSerializedSize = size;          return size;        }        public static PhoneNumber ParseFrom(pb::ByteString data) {          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();        }        public static PhoneNumber ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();        }        public static PhoneNumber ParseFrom(byte[] data) {          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();        }        public static PhoneNumber ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();        }        public static PhoneNumber ParseFrom(global::System.IO.Stream input) {          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();        }        public static PhoneNumber ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();        }        public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input) {          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();        }        public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();        }        public static PhoneNumber ParseFrom(pb::ICodedInputStream input) {          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();        }        public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();        }        private PhoneNumber MakeReadOnly() {          return this;        }                public static Builder CreateBuilder() { return new Builder(); }        public override Builder ToBuilder() { return CreateBuilder(this); }        public override Builder CreateBuilderForType() { return new Builder(); }        public static Builder CreateBuilder(PhoneNumber prototype) {          return new Builder(prototype);        }                [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]        public sealed partial class Builder : pb::GeneratedBuilder<PhoneNumber, Builder> {          protected override Builder ThisBuilder {            get { return this; }          }          public Builder() {            result = DefaultInstance;            resultIsReadOnly = true;          }          internal Builder(PhoneNumber cloneFrom) {            result = cloneFrom;            resultIsReadOnly = true;          }                    private bool resultIsReadOnly;          private PhoneNumber result;                    private PhoneNumber PrepareBuilder() {            if (resultIsReadOnly) {              PhoneNumber original = result;              result = new PhoneNumber();              resultIsReadOnly = false;              MergeFrom(original);            }            return result;          }                    public override bool IsInitialized {            get { return result.IsInitialized; }          }                    protected override PhoneNumber MessageBeingBuilt {            get { return PrepareBuilder(); }          }                    public override Builder Clear() {            result = DefaultInstance;            resultIsReadOnly = true;            return this;          }                    public override Builder Clone() {            if (resultIsReadOnly) {              return new Builder(result);            } else {              return new Builder().MergeFrom(result);            }          }                    public override pbd::MessageDescriptor DescriptorForType {            get { return global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Descriptor; }          }                    public override PhoneNumber DefaultInstanceForType {            get { return global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.DefaultInstance; }          }                    public override PhoneNumber BuildPartial() {            if (resultIsReadOnly) {              return result;            }            resultIsReadOnly = true;            return result.MakeReadOnly();          }                    public override Builder MergeFrom(pb::IMessage other) {            if (other is PhoneNumber) {              return MergeFrom((PhoneNumber) other);            } else {              base.MergeFrom(other);              return this;            }          }                    public override Builder MergeFrom(PhoneNumber other) {            if (other == global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.DefaultInstance) return this;            PrepareBuilder();            if (other.HasNumber) {              Number = other.Number;            }            if (other.HasType) {              Type = other.Type;            }            this.MergeUnknownFields(other.UnknownFields);            return this;          }                    public override Builder MergeFrom(pb::ICodedInputStream input) {            return MergeFrom(input, pb::ExtensionRegistry.Empty);          }                    public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {            PrepareBuilder();            pb::UnknownFieldSet.Builder unknownFields = null;            uint tag;            string field_name;            while (input.ReadTag(out tag, out field_name)) {              if(tag == 0 && field_name != null) {                int field_ordinal = global::System.Array.BinarySearch(_phoneNumberFieldNames, field_name, global::System.StringComparer.Ordinal);                if(field_ordinal >= 0)                  tag = _phoneNumberFieldTags[field_ordinal];                else {                  if (unknownFields == null) {                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);                  }                  ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);                  continue;                }              }              switch (tag) {                case 0: {                  throw pb::InvalidProtocolBufferException.InvalidTag();                }                default: {                  if (pb::WireFormat.IsEndGroupTag(tag)) {                    if (unknownFields != null) {                      this.UnknownFields = unknownFields.Build();                    }                    return this;                  }                  if (unknownFields == null) {                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);                  }                  ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);                  break;                }                case 10: {                  result.hasNumber = input.ReadString(ref result.number_);                  break;                }                case 16: {                  object unknown;                  if(input.ReadEnum(ref result.type_, out unknown)) {                    result.hasType = true;                  } else if(unknown is int) {                    if (unknownFields == null) {                      unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);                    }                    unknownFields.MergeVarintField(2, (ulong)(int)unknown);                  }                  break;                }              }            }                        if (unknownFields != null) {              this.UnknownFields = unknownFields.Build();            }            return this;          }                              public bool HasNumber {            get { return result.hasNumber; }          }          public string Number {            get { return result.Number; }            set { SetNumber(value); }          }          public Builder SetNumber(string value) {            pb::ThrowHelper.ThrowIfNull(value, "value");            PrepareBuilder();            result.hasNumber = true;            result.number_ = value;            return this;          }          public Builder ClearNumber() {            PrepareBuilder();            result.hasNumber = false;            result.number_ = "";            return this;          }                    public bool HasType {           get { return result.hasType; }          }          public global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType Type {            get { return result.Type; }            set { SetType(value); }          }          public Builder SetType(global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType value) {            PrepareBuilder();            result.hasType = true;            result.type_ = value;            return this;          }          public Builder ClearType() {            PrepareBuilder();            result.hasType = false;            result.type_ = global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneType.HOME;            return this;          }        }        static PhoneNumber() {          object.ReferenceEquals(global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.Descriptor, null);        }      }          }    #endregion        public const int NameFieldNumber = 1;    private bool hasName;    private string name_ = "";    public bool HasName {      get { return hasName; }    }    public string Name {      get { return name_; }    }        public const int IdFieldNumber = 2;    private bool hasId;    private int id_;    public bool HasId {      get { return hasId; }    }    public int Id {      get { return id_; }    }        public const int EmailFieldNumber = 3;    private bool hasEmail;    private string email_ = "";    public bool HasEmail {      get { return hasEmail; }    }    public string Email {      get { return email_; }    }        public const int PhoneFieldNumber = 4;    private pbc::PopsicleList<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> phone_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber>();    public scg::IList<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> PhoneList {      get { return phone_; }    }    public int PhoneCount {      get { return phone_.Count; }    }    public global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber GetPhone(int index) {      return phone_[index];    }        public override bool IsInitialized {      get {        if (!hasName) return false;        if (!hasId) return false;        foreach (global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber element in PhoneList) {          if (!element.IsInitialized) return false;        }        return true;      }    }        public override void WriteTo(pb::ICodedOutputStream output) {      CalcSerializedSize();      string[] field_names = _personFieldNames;      if (hasName) {        output.WriteString(1, field_names[2], Name);      }      if (hasId) {        output.WriteInt32(2, field_names[1], Id);      }      if (hasEmail) {        output.WriteString(3, field_names[0], Email);      }      if (phone_.Count > 0) {        output.WriteMessageArray(4, field_names[3], phone_);      }      UnknownFields.WriteTo(output);    }        private int memoizedSerializedSize = -1;    public override int SerializedSize {      get {        int size = memoizedSerializedSize;        if (size != -1) return size;        return CalcSerializedSize();      }    }        private int CalcSerializedSize() {      int size = memoizedSerializedSize;      if (size != -1) return size;            size = 0;      if (hasName) {        size += pb::CodedOutputStream.ComputeStringSize(1, Name);      }      if (hasId) {        size += pb::CodedOutputStream.ComputeInt32Size(2, Id);      }      if (hasEmail) {        size += pb::CodedOutputStream.ComputeStringSize(3, Email);      }      foreach (global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber element in PhoneList) {        size += pb::CodedOutputStream.ComputeMessageSize(4, element);      }      size += UnknownFields.SerializedSize;      memoizedSerializedSize = size;      return size;    }    public static Person ParseFrom(pb::ByteString data) {      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();    }    public static Person ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();    }    public static Person ParseFrom(byte[] data) {      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();    }    public static Person ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();    }    public static Person ParseFrom(global::System.IO.Stream input) {      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();    }    public static Person ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();    }    public static Person ParseDelimitedFrom(global::System.IO.Stream input) {      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();    }    public static Person ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();    }    public static Person ParseFrom(pb::ICodedInputStream input) {      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();    }    public static Person ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();    }    private Person MakeReadOnly() {      phone_.MakeReadOnly();      return this;    }        public static Builder CreateBuilder() { return new Builder(); }    public override Builder ToBuilder() { return CreateBuilder(this); }    public override Builder CreateBuilderForType() { return new Builder(); }    public static Builder CreateBuilder(Person prototype) {      return new Builder(prototype);    }        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]    public sealed partial class Builder : pb::GeneratedBuilder<Person, Builder> {      protected override Builder ThisBuilder {        get { return this; }      }      public Builder() {        result = DefaultInstance;        resultIsReadOnly = true;      }      internal Builder(Person cloneFrom) {        result = cloneFrom;        resultIsReadOnly = true;      }            private bool resultIsReadOnly;      private Person result;            private Person PrepareBuilder() {        if (resultIsReadOnly) {          Person original = result;          result = new Person();          resultIsReadOnly = false;          MergeFrom(original);        }        return result;      }            public override bool IsInitialized {        get { return result.IsInitialized; }      }            protected override Person MessageBeingBuilt {        get { return PrepareBuilder(); }      }            public override Builder Clear() {        result = DefaultInstance;        resultIsReadOnly = true;        return this;      }            public override Builder Clone() {        if (resultIsReadOnly) {          return new Builder(result);        } else {          return new Builder().MergeFrom(result);        }      }            public override pbd::MessageDescriptor DescriptorForType {        get { return global::Google.ProtocolBuffers.Examples.AddressBook.Person.Descriptor; }      }            public override Person DefaultInstanceForType {        get { return global::Google.ProtocolBuffers.Examples.AddressBook.Person.DefaultInstance; }      }            public override Person BuildPartial() {        if (resultIsReadOnly) {          return result;        }        resultIsReadOnly = true;        return result.MakeReadOnly();      }            public override Builder MergeFrom(pb::IMessage other) {        if (other is Person) {          return MergeFrom((Person) other);        } else {          base.MergeFrom(other);          return this;        }      }            public override Builder MergeFrom(Person other) {        if (other == global::Google.ProtocolBuffers.Examples.AddressBook.Person.DefaultInstance) return this;        PrepareBuilder();        if (other.HasName) {          Name = other.Name;        }        if (other.HasId) {          Id = other.Id;        }        if (other.HasEmail) {          Email = other.Email;        }        if (other.phone_.Count != 0) {          result.phone_.Add(other.phone_);        }        this.MergeUnknownFields(other.UnknownFields);        return this;      }            public override Builder MergeFrom(pb::ICodedInputStream input) {        return MergeFrom(input, pb::ExtensionRegistry.Empty);      }            public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {        PrepareBuilder();        pb::UnknownFieldSet.Builder unknownFields = null;        uint tag;        string field_name;        while (input.ReadTag(out tag, out field_name)) {          if(tag == 0 && field_name != null) {            int field_ordinal = global::System.Array.BinarySearch(_personFieldNames, field_name, global::System.StringComparer.Ordinal);            if(field_ordinal >= 0)              tag = _personFieldTags[field_ordinal];            else {              if (unknownFields == null) {                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);              }              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);              continue;            }          }          switch (tag) {            case 0: {              throw pb::InvalidProtocolBufferException.InvalidTag();            }            default: {              if (pb::WireFormat.IsEndGroupTag(tag)) {                if (unknownFields != null) {                  this.UnknownFields = unknownFields.Build();                }                return this;              }              if (unknownFields == null) {                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);              }              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);              break;            }            case 10: {              result.hasName = input.ReadString(ref result.name_);              break;            }            case 16: {              result.hasId = input.ReadInt32(ref result.id_);              break;            }            case 26: {              result.hasEmail = input.ReadString(ref result.email_);              break;            }            case 34: {              input.ReadMessageArray(tag, field_name, result.phone_, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.DefaultInstance, extensionRegistry);              break;            }          }        }                if (unknownFields != null) {          this.UnknownFields = unknownFields.Build();        }        return this;      }                  public bool HasName {        get { return result.hasName; }      }      public string Name {        get { return result.Name; }        set { SetName(value); }      }      public Builder SetName(string value) {        pb::ThrowHelper.ThrowIfNull(value, "value");        PrepareBuilder();        result.hasName = true;        result.name_ = value;        return this;      }      public Builder ClearName() {        PrepareBuilder();        result.hasName = false;        result.name_ = "";        return this;      }            public bool HasId {        get { return result.hasId; }      }      public int Id {        get { return result.Id; }        set { SetId(value); }      }      public Builder SetId(int value) {        PrepareBuilder();        result.hasId = true;        result.id_ = value;        return this;      }      public Builder ClearId() {        PrepareBuilder();        result.hasId = false;        result.id_ = 0;        return this;      }            public bool HasEmail {        get { return result.hasEmail; }      }      public string Email {        get { return result.Email; }        set { SetEmail(value); }      }      public Builder SetEmail(string value) {        pb::ThrowHelper.ThrowIfNull(value, "value");        PrepareBuilder();        result.hasEmail = true;        result.email_ = value;        return this;      }      public Builder ClearEmail() {        PrepareBuilder();        result.hasEmail = false;        result.email_ = "";        return this;      }            public pbc::IPopsicleList<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> PhoneList {        get { return PrepareBuilder().phone_; }      }      public int PhoneCount {        get { return result.PhoneCount; }      }      public global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber GetPhone(int index) {        return result.GetPhone(index);      }      public Builder SetPhone(int index, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber value) {        pb::ThrowHelper.ThrowIfNull(value, "value");        PrepareBuilder();        result.phone_[index] = value;        return this;      }      public Builder SetPhone(int index, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder builderForValue) {        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");        PrepareBuilder();        result.phone_[index] = builderForValue.Build();        return this;      }      public Builder AddPhone(global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber value) {        pb::ThrowHelper.ThrowIfNull(value, "value");        PrepareBuilder();        result.phone_.Add(value);        return this;      }      public Builder AddPhone(global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder builderForValue) {        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");        PrepareBuilder();        result.phone_.Add(builderForValue.Build());        return this;      }      public Builder AddRangePhone(scg::IEnumerable<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> values) {        PrepareBuilder();        result.phone_.Add(values);        return this;      }      public Builder ClearPhone() {        PrepareBuilder();        result.phone_.Clear();        return this;      }    }    static Person() {      object.ReferenceEquals(global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.Descriptor, null);    }  }    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]  public sealed partial class AddressBook : pb::GeneratedMessage<AddressBook, AddressBook.Builder> {    private AddressBook() { }    private static readonly AddressBook defaultInstance = new AddressBook().MakeReadOnly();    private static readonly string[] _addressBookFieldNames = new string[] { "person" };    private static readonly uint[] _addressBookFieldTags = new uint[] { 10 };    public static AddressBook DefaultInstance {      get { return defaultInstance; }    }        public override AddressBook DefaultInstanceForType {      get { return DefaultInstance; }    }        protected override AddressBook ThisMessage {      get { return this; }    }        public static pbd::MessageDescriptor Descriptor {      get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.internal__static_tutorial_AddressBook__Descriptor; }    }        protected override pb::FieldAccess.FieldAccessorTable<AddressBook, AddressBook.Builder> InternalFieldAccessors {      get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.internal__static_tutorial_AddressBook__FieldAccessorTable; }    }        public const int PersonFieldNumber = 1;    private pbc::PopsicleList<global::Google.ProtocolBuffers.Examples.AddressBook.Person> person_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.Examples.AddressBook.Person>();    public scg::IList<global::Google.ProtocolBuffers.Examples.AddressBook.Person> PersonList {      get { return person_; }    }    public int PersonCount {      get { return person_.Count; }    }    public global::Google.ProtocolBuffers.Examples.AddressBook.Person GetPerson(int index) {      return person_[index];    }        public override bool IsInitialized {      get {        foreach (global::Google.ProtocolBuffers.Examples.AddressBook.Person element in PersonList) {          if (!element.IsInitialized) return false;        }        return true;      }    }        public override void WriteTo(pb::ICodedOutputStream output) {      CalcSerializedSize();      string[] field_names = _addressBookFieldNames;      if (person_.Count > 0) {        output.WriteMessageArray(1, field_names[0], person_);      }      UnknownFields.WriteTo(output);    }        private int memoizedSerializedSize = -1;    public override int SerializedSize {      get {        int size = memoizedSerializedSize;        if (size != -1) return size;        return CalcSerializedSize();      }    }        private int CalcSerializedSize() {      int size = memoizedSerializedSize;      if (size != -1) return size;            size = 0;      foreach (global::Google.ProtocolBuffers.Examples.AddressBook.Person element in PersonList) {        size += pb::CodedOutputStream.ComputeMessageSize(1, element);      }      size += UnknownFields.SerializedSize;      memoizedSerializedSize = size;      return size;    }    public static AddressBook ParseFrom(pb::ByteString data) {      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();    }    public static AddressBook ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();    }    public static AddressBook ParseFrom(byte[] data) {      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();    }    public static AddressBook ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();    }    public static AddressBook ParseFrom(global::System.IO.Stream input) {      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();    }    public static AddressBook ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();    }    public static AddressBook ParseDelimitedFrom(global::System.IO.Stream input) {      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();    }    public static AddressBook ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();    }    public static AddressBook ParseFrom(pb::ICodedInputStream input) {      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();    }    public static AddressBook ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();    }    private AddressBook MakeReadOnly() {      person_.MakeReadOnly();      return this;    }        public static Builder CreateBuilder() { return new Builder(); }    public override Builder ToBuilder() { return CreateBuilder(this); }    public override Builder CreateBuilderForType() { return new Builder(); }    public static Builder CreateBuilder(AddressBook prototype) {      return new Builder(prototype);    }        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]    public sealed partial class Builder : pb::GeneratedBuilder<AddressBook, Builder> {      protected override Builder ThisBuilder {        get { return this; }      }      public Builder() {        result = DefaultInstance;        resultIsReadOnly = true;      }      internal Builder(AddressBook cloneFrom) {        result = cloneFrom;        resultIsReadOnly = true;      }            private bool resultIsReadOnly;      private AddressBook result;            private AddressBook PrepareBuilder() {        if (resultIsReadOnly) {          AddressBook original = result;          result = new AddressBook();          resultIsReadOnly = false;          MergeFrom(original);        }        return result;      }            public override bool IsInitialized {        get { return result.IsInitialized; }      }            protected override AddressBook MessageBeingBuilt {        get { return PrepareBuilder(); }      }            public override Builder Clear() {        result = DefaultInstance;        resultIsReadOnly = true;        return this;      }            public override Builder Clone() {        if (resultIsReadOnly) {          return new Builder(result);        } else {          return new Builder().MergeFrom(result);        }      }            public override pbd::MessageDescriptor DescriptorForType {        get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Descriptor; }      }            public override AddressBook DefaultInstanceForType {        get { return global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.DefaultInstance; }      }            public override AddressBook BuildPartial() {        if (resultIsReadOnly) {          return result;        }        resultIsReadOnly = true;        return result.MakeReadOnly();      }            public override Builder MergeFrom(pb::IMessage other) {        if (other is AddressBook) {          return MergeFrom((AddressBook) other);        } else {          base.MergeFrom(other);          return this;        }      }            public override Builder MergeFrom(AddressBook other) {        if (other == global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.DefaultInstance) return this;        PrepareBuilder();        if (other.person_.Count != 0) {          result.person_.Add(other.person_);        }        this.MergeUnknownFields(other.UnknownFields);        return this;      }            public override Builder MergeFrom(pb::ICodedInputStream input) {        return MergeFrom(input, pb::ExtensionRegistry.Empty);      }            public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {        PrepareBuilder();        pb::UnknownFieldSet.Builder unknownFields = null;        uint tag;        string field_name;        while (input.ReadTag(out tag, out field_name)) {          if(tag == 0 && field_name != null) {            int field_ordinal = global::System.Array.BinarySearch(_addressBookFieldNames, field_name, global::System.StringComparer.Ordinal);            if(field_ordinal >= 0)              tag = _addressBookFieldTags[field_ordinal];            else {              if (unknownFields == null) {                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);              }              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);              continue;            }          }          switch (tag) {            case 0: {              throw pb::InvalidProtocolBufferException.InvalidTag();            }            default: {              if (pb::WireFormat.IsEndGroupTag(tag)) {                if (unknownFields != null) {                  this.UnknownFields = unknownFields.Build();                }                return this;              }              if (unknownFields == null) {                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);              }              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);              break;            }            case 10: {              input.ReadMessageArray(tag, field_name, result.person_, global::Google.ProtocolBuffers.Examples.AddressBook.Person.DefaultInstance, extensionRegistry);              break;            }          }        }                if (unknownFields != null) {          this.UnknownFields = unknownFields.Build();        }        return this;      }                  public pbc::IPopsicleList<global::Google.ProtocolBuffers.Examples.AddressBook.Person> PersonList {        get { return PrepareBuilder().person_; }      }      public int PersonCount {        get { return result.PersonCount; }      }      public global::Google.ProtocolBuffers.Examples.AddressBook.Person GetPerson(int index) {        return result.GetPerson(index);      }      public Builder SetPerson(int index, global::Google.ProtocolBuffers.Examples.AddressBook.Person value) {        pb::ThrowHelper.ThrowIfNull(value, "value");        PrepareBuilder();        result.person_[index] = value;        return this;      }      public Builder SetPerson(int index, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder builderForValue) {        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");        PrepareBuilder();        result.person_[index] = builderForValue.Build();        return this;      }      public Builder AddPerson(global::Google.ProtocolBuffers.Examples.AddressBook.Person value) {        pb::ThrowHelper.ThrowIfNull(value, "value");        PrepareBuilder();        result.person_.Add(value);        return this;      }      public Builder AddPerson(global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder builderForValue) {        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");        PrepareBuilder();        result.person_.Add(builderForValue.Build());        return this;      }      public Builder AddRangePerson(scg::IEnumerable<global::Google.ProtocolBuffers.Examples.AddressBook.Person> values) {        PrepareBuilder();        result.person_.Add(values);        return this;      }      public Builder ClearPerson() {        PrepareBuilder();        result.person_.Clear();        return this;      }    }    static AddressBook() {      object.ReferenceEquals(global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.Descriptor, null);    }  }    #endregion  }#endregion Designer generated code
 |