* <code>optional string last_name = 3;</code>
         */
        public com.google.protobuf.ByteString getLastNameBytes() {
            java.lang.Object ref = lastName_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                lastName_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int EMAIL_FIELD_NUMBER = 4;
        private volatile java.lang.Object email_;

        /**
         * <code>optional string email = 4;</code>
         */
        public java.lang.String getEmail() {
            java.lang.Object ref = email_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                email_ = s;
                return s;
            }
        }

        /**
         * <code>optional string email = 4;</code>
         */
        public com.google.protobuf.ByteString getEmailBytes() {
            java.lang.Object ref = email_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                email_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int PHONE_FIELD_NUMBER = 5;
        private java.util.List<com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber> phone_;

        /**
         * <code>repeated.baeldung.Student.PhoneNumber phone = 5;</code>
         */
        public java.util.List<com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber> getPhoneList() {
            return phone_;
        }

        /**
         * <code>repeated.baeldung.Student.PhoneNumber phone = 5;</code>
         */
        public java.util.List<? extends com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder> getPhoneOrBuilderList() {
            return phone_;
        }

        /**
         * <code>repeated.baeldung.Student.PhoneNumber phone = 5;</code>
         */
        public int getPhoneCount() {
            return phone_.size();
        }

        /**
         * <code>repeated.baeldung.Student.PhoneNumber phone = 5;</code>
         */
        public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) {
            return phone_.get(index);
        }

        /**
         * <code>repeated.baeldung.Student.PhoneNumber phone = 5;</code>
         */
        public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder(int index) {
            return phone_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;

            memoizedIsInitialized = 1;
            return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (id_!= 0) {
                output.writeInt32(1, id_);
            }
            if (!getFirstNameBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessage.writeString(output, 2, firstName_);
            }
            if (!getLastNameBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessage.writeString(output, 3, lastName_);
            }
            if (!getEmailBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessage.writeString(output, 4, email_);
            }
            for (int i = 0; i < phone_.size(); i++) {
                output.writeMessage(5, phone_.get(i));
            }
        }

        public int getSerializedSize() {
            int size = memoizedSize;
            if (size!= -1)
                return size;

            size = 0;
            if (id_!= 0) {
                size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, id_);
            }
            if (!getFirstNameBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessage.computeStringSize(2, firstName_);
            }
            if (!getLastNameBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessage.computeStringSize(3, lastName_);
            }
            if (!getEmailBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessage.computeStringSize(4, email_);
            }
            for (int i = 0; i < phone_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, phone_.get(i));
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
        }

        public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input,