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(_contactsFieldNames, field_name, global::System.StringComparer.Ordinal);
                    if (field_ordinal >= 0)
                    {
                        tag = _contactsFieldTags[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.ReadStringArray(tag, field_name, result.contactPoints_);
                    break;
                }
                }
            }

            if (unknownFields != null)
            {
                this.UnknownFields = unknownFields.Build();
            }
            return(this);
        }
            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(_packetSpeedFieldNames, field_name, global::System.StringComparer.Ordinal);
                        if (field_ordinal >= 0)
                        {
                            tag = _packetSpeedFieldTags[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 8: {
                        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(1, (ulong)(int)unknown);
                        }
                        break;
                    }

                    case 18: {
                        input.ReadStringArray(tag, field_name, result.string_);
                        break;
                    }

                    case 26:
                    case 29: {
                        input.ReadFloatArray(tag, field_name, result.float_);
                        break;
                    }
                    }
                }

                if (unknownFields != null)
                {
                    this.UnknownFields = unknownFields.Build();
                }
                return(this);
            }