Package com.google.protobuf

## Class DescriptorProtos.FieldOptions.Builder

- java.lang.Object
- - com.google.protobuf.AbstractMessageLite.Builder<BuilderType>
  - - com.google.protobuf.AbstractMessage.Builder<BuilderType>
    - - com.google.protobuf.GeneratedMessage.Builder<BuilderType>
      - - com.google.protobuf.GeneratedMessage.ExtendableBuilder<DescriptorProtos.FieldOptions,​DescriptorProtos.FieldOptions.Builder>
        - - com.google.protobuf.DescriptorProtos.FieldOptions.Builder

All Implemented Interfaces:
  `DescriptorProtos.FieldOptionsOrBuilder`, `GeneratedMessage.ExtendableMessageOrBuilder<DescriptorProtos.FieldOptions>`, `Message.Builder`, `MessageLite.Builder`, `MessageLiteOrBuilder`, `MessageOrBuilder`, `java.lang.Cloneable`

Enclosing class:
  DescriptorProtos.FieldOptions

    public static final class DescriptorProtos.FieldOptions.Builder
    extends GeneratedMessage.ExtendableBuilder<DescriptorProtos.FieldOptions,​DescriptorProtos.FieldOptions.Builder>
    implements DescriptorProtos.FieldOptionsOrBuilder

Protobuf type `google.protobuf.FieldOptions`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`DescriptorProtos.FieldOptions.Builder` `addAllUninterpretedOption​(java.lang.Iterable<? extends DescriptorProtos.UninterpretedOption> values)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `addUninterpretedOption​(int index, DescriptorProtos.UninterpretedOption value)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `addUninterpretedOption​(int index, DescriptorProtos.UninterpretedOption.Builder builderForValue)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `addUninterpretedOption​(DescriptorProtos.UninterpretedOption value)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `addUninterpretedOption​(DescriptorProtos.UninterpretedOption.Builder builderForValue)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.UninterpretedOption.Builder` `addUninterpretedOptionBuilder()` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.UninterpretedOption.Builder` `addUninterpretedOptionBuilder​(int index)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions` `build()` Constructs the message based on the state of the Builder.
`DescriptorProtos.FieldOptions` `buildPartial()` Like `MessageLite.Builder.build()`, but does not throw an exception if the message is missing required fields.
`DescriptorProtos.FieldOptions.Builder` `clear()` Called by the initialization and clear code paths to allow subclasses to reset any of their builtin fields back to the initial values.
`DescriptorProtos.FieldOptions.Builder` `clearCtype()` `optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`
`DescriptorProtos.FieldOptions.Builder` `clearDeprecated()` `optional bool deprecated = 3 [default = false];`
`DescriptorProtos.FieldOptions.Builder` `clearExperimentalMapKey()` `optional string experimental_map_key = 9;`
`DescriptorProtos.FieldOptions.Builder` `clearLazy()` `optional bool lazy = 5 [default = false];`
`DescriptorProtos.FieldOptions.Builder` `clearPacked()` `optional bool packed = 2;`
`DescriptorProtos.FieldOptions.Builder` `clearUninterpretedOption()` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `clearWeak()` `optional bool weak = 10 [default = false];`
`DescriptorProtos.FieldOptions.Builder` `clone()` Clones the Builder.
`DescriptorProtos.FieldOptions.CType` `getCtype()` `optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`
`DescriptorProtos.FieldOptions` `getDefaultInstanceForType()` Get an instance of the type with no fields set.
`boolean` `getDeprecated()` `optional bool deprecated = 3 [default = false];`
`static Descriptors.Descriptor` `getDescriptor()`
`Descriptors.Descriptor` `getDescriptorForType()` Get the message's type's descriptor.
`java.lang.String` `getExperimentalMapKey()` `optional string experimental_map_key = 9;`
`ByteString` `getExperimentalMapKeyBytes()` `optional string experimental_map_key = 9;`
`boolean` `getLazy()` `optional bool lazy = 5 [default = false];`
`boolean` `getPacked()` `optional bool packed = 2;`
`DescriptorProtos.UninterpretedOption` `getUninterpretedOption​(int index)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.UninterpretedOption.Builder` `getUninterpretedOptionBuilder​(int index)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`java.util.List<DescriptorProtos.UninterpretedOption.Builder>` `getUninterpretedOptionBuilderList()` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`int` `getUninterpretedOptionCount()` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`java.util.List<DescriptorProtos.UninterpretedOption>` `getUninterpretedOptionList()` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.UninterpretedOptionOrBuilder` `getUninterpretedOptionOrBuilder​(int index)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`java.util.List<? extends DescriptorProtos.UninterpretedOptionOrBuilder>` `getUninterpretedOptionOrBuilderList()` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`boolean` `getWeak()` `optional bool weak = 10 [default = false];`
`boolean` `hasCtype()` `optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`
`boolean` `hasDeprecated()` `optional bool deprecated = 3 [default = false];`
`boolean` `hasExperimentalMapKey()` `optional string experimental_map_key = 9;`
`boolean` `hasLazy()` `optional bool lazy = 5 [default = false];`
`boolean` `hasPacked()` `optional bool packed = 2;`
`boolean` `hasWeak()` `optional bool weak = 10 [default = false];`
`protected GeneratedMessage.FieldAccessorTable` `internalGetFieldAccessorTable()` Get the FieldAccessorTable for this type.
`boolean` `isInitialized()` Returns true if all required fields in the message and all embedded messages are set, false otherwise.
`DescriptorProtos.FieldOptions.Builder` `mergeFrom​(CodedInputStream input, ExtensionRegistryLite extensionRegistry)` Like `MessageLite.Builder.mergeFrom(CodedInputStream)`, but also parses extensions.
`DescriptorProtos.FieldOptions.Builder` `mergeFrom​(DescriptorProtos.FieldOptions other)`
`DescriptorProtos.FieldOptions.Builder` `mergeFrom​(Message other)` Merge `other` into the message being built.
`DescriptorProtos.FieldOptions.Builder` `removeUninterpretedOption​(int index)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `setCtype​(DescriptorProtos.FieldOptions.CType value)` `optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`
`DescriptorProtos.FieldOptions.Builder` `setDeprecated​(boolean value)` `optional bool deprecated = 3 [default = false];`
`DescriptorProtos.FieldOptions.Builder` `setExperimentalMapKey​(java.lang.String value)` `optional string experimental_map_key = 9;`
`DescriptorProtos.FieldOptions.Builder` `setExperimentalMapKeyBytes​(ByteString value)` `optional string experimental_map_key = 9;`
`DescriptorProtos.FieldOptions.Builder` `setLazy​(boolean value)` `optional bool lazy = 5 [default = false];`
`DescriptorProtos.FieldOptions.Builder` `setPacked​(boolean value)` `optional bool packed = 2;`
`DescriptorProtos.FieldOptions.Builder` `setUninterpretedOption​(int index, DescriptorProtos.UninterpretedOption value)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `setUninterpretedOption​(int index, DescriptorProtos.UninterpretedOption.Builder builderForValue)` `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`
`DescriptorProtos.FieldOptions.Builder` `setWeak​(boolean value)` `optional bool weak = 10 [default = false];`

### Methods inherited from class com.google.protobuf.GeneratedMessage.ExtendableBuilder

`addExtension, addRepeatedField, clearExtension, clearField, extensionsAreInitialized, getAllFields, getExtension, getExtension, getExtensionCount, getField, getRepeatedField, getRepeatedFieldCount, hasExtension, hasField, mergeExtensionFields, parseUnknownField, setExtension, setExtension, setField, setRepeatedField`

### Methods inherited from class com.google.protobuf.GeneratedMessage.Builder

`clearOneof, getFieldBuilder, getOneofFieldDescriptor, getParentForChildren, getUnknownFields, hasOneof, isClean, markClean, mergeUnknownFields, newBuilderForField, onBuilt, onChanged, setUnknownFields`

### Methods inherited from class com.google.protobuf.AbstractMessage.Builder

`findInitializationErrors, getInitializationErrorString, mergeDelimitedFrom, mergeDelimitedFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, newUninitializedMessageException, toString`

### Methods inherited from class com.google.protobuf.AbstractMessageLite.Builder

`addAll, newUninitializedMessageException`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder

`getExtension, getExtension, getExtensionCount, hasExtension`

### Methods inherited from interface com.google.protobuf.MessageOrBuilder

`findInitializationErrors, getAllFields, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof`

### Method Detail

#### getDescriptor

    public static final Descriptors.Descriptor getDescriptor()

#### internalGetFieldAccessorTable

    protected GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()

Description copied from class: `GeneratedMessage.Builder`
Get the FieldAccessorTable for this type. We can't have the message class pass this in to the constructor because of bootstrapping trouble with DescriptorProtos.

Specified by:
  `internalGetFieldAccessorTable` in class `GeneratedMessage.Builder<DescriptorProtos.FieldOptions.Builder>`

#### clear

    public DescriptorProtos.FieldOptions.Builder clear()

Description copied from class: `GeneratedMessage.Builder`
Called by the initialization and clear code paths to allow subclasses to reset any of their builtin fields back to the initial values.

Specified by:
  `clear` in interface `Message.Builder`
Specified by:
  `clear` in interface `MessageLite.Builder`
Overrides:
  `clear` in class `GeneratedMessage.ExtendableBuilder<DescriptorProtos.FieldOptions,​DescriptorProtos.FieldOptions.Builder>`

#### clone

    public DescriptorProtos.FieldOptions.Builder clone()

Description copied from interface: `MessageLite.Builder`
Clones the Builder.

Specified by:
  `clone` in interface `Message.Builder`
Specified by:
  `clone` in interface `MessageLite.Builder`
Overrides:
  `clone` in class `GeneratedMessage.ExtendableBuilder<DescriptorProtos.FieldOptions,​DescriptorProtos.FieldOptions.Builder>`
See Also:
  `Object.clone()`

#### getDescriptorForType

    public Descriptors.Descriptor getDescriptorForType()

Description copied from interface: `Message.Builder`
Get the message's type's descriptor. See `MessageOrBuilder.getDescriptorForType()`.

Specified by:
  `getDescriptorForType` in interface `Message.Builder`
Specified by:
  `getDescriptorForType` in interface `MessageOrBuilder`
Overrides:
  `getDescriptorForType` in class `GeneratedMessage.Builder<DescriptorProtos.FieldOptions.Builder>`

#### getDefaultInstanceForType

    public DescriptorProtos.FieldOptions getDefaultInstanceForType()

Description copied from interface: `MessageLiteOrBuilder`
Get an instance of the type with no fields set. Because no fields are set, all getters for singular fields will return default values and repeated fields will appear empty. This may or may not be a singleton. This differs from the `getDefaultInstance()` method of generated message classes in that this method is an abstract method of the `MessageLite` interface whereas `getDefaultInstance()` is a static method of a specific class. They return the same thing.

Specified by:
  `getDefaultInstanceForType` in interface `GeneratedMessage.ExtendableMessageOrBuilder<DescriptorProtos.FieldOptions>`
Specified by:
  `getDefaultInstanceForType` in interface `MessageLiteOrBuilder`
Specified by:
  `getDefaultInstanceForType` in interface `MessageOrBuilder`

#### build

    public DescriptorProtos.FieldOptions build()

Description copied from interface: `MessageLite.Builder`
Constructs the message based on the state of the Builder. Subsequent changes to the Builder will not affect the returned message.

Specified by:
  `build` in interface `Message.Builder`
Specified by:
  `build` in interface `MessageLite.Builder`

#### buildPartial

    public DescriptorProtos.FieldOptions buildPartial()

Description copied from interface: `MessageLite.Builder`
Like `MessageLite.Builder.build()`, but does not throw an exception if the message is missing required fields. Instead, a partial message is returned. Subsequent changes to the Builder will not affect the returned message.

Specified by:
  `buildPartial` in interface `Message.Builder`
Specified by:
  `buildPartial` in interface `MessageLite.Builder`

#### mergeFrom

    public DescriptorProtos.FieldOptions.Builder mergeFrom​(Message other)

Description copied from interface: `Message.Builder`
Merge `other` into the message being built. `other` must have the exact same type as `this` (i.e. `getDescriptorForType() == other.getDescriptorForType()`). Merging occurs as follows. For each field:
* For singular primitive fields, if the field is set in `other`, then `other`'s value overwrites the value in this message.
* For singular message fields, if the field is set in `other`, it is merged into the corresponding sub-message of this message using the same merging rules.
* For repeated fields, the elements in `other` are concatenated with the elements in this message. This is equivalent to the `Message::MergeFrom` method in C++.

Specified by:
  `mergeFrom` in interface `Message.Builder`
Overrides:
  `mergeFrom` in class `AbstractMessage.Builder<DescriptorProtos.FieldOptions.Builder>`

#### mergeFrom

    public DescriptorProtos.FieldOptions.Builder mergeFrom​(DescriptorProtos.FieldOptions other)

#### isInitialized

    public final boolean isInitialized()

Description copied from interface: `MessageLiteOrBuilder`
Returns true if all required fields in the message and all embedded messages are set, false otherwise.

See also: `MessageOrBuilder.getInitializationErrorString()`

Specified by:
  `isInitialized` in interface `MessageLiteOrBuilder`
Overrides:
  `isInitialized` in class `GeneratedMessage.ExtendableBuilder<DescriptorProtos.FieldOptions,​DescriptorProtos.FieldOptions.Builder>`

#### mergeFrom

    public DescriptorProtos.FieldOptions.Builder mergeFrom​(CodedInputStream input,
                                                           ExtensionRegistryLite extensionRegistry)
                                                    throws java.io.IOException

Description copied from interface: `MessageLite.Builder`
Like `MessageLite.Builder.mergeFrom(CodedInputStream)`, but also parses extensions. The extensions that you want to be able to parse must be registered in `extensionRegistry`. Extensions not in the registry will be treated as unknown fields.

Specified by:
  `mergeFrom` in interface `Message.Builder`
Specified by:
  `mergeFrom` in interface `MessageLite.Builder`
Overrides:
  `mergeFrom` in class `AbstractMessage.Builder<DescriptorProtos.FieldOptions.Builder>`
Throws:
  `java.io.IOException`

#### hasCtype

    public boolean hasCtype()

`optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`

     The ctype option instructs the C++ code generator to use a different
     representation of the field than it normally would.  See the specific
     options below.  This option is not yet implemented in the open source
     release -- sorry, we'll try to include it in a future version!

Specified by:
  `hasCtype` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getCtype

    public DescriptorProtos.FieldOptions.CType getCtype()

`optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`

     The ctype option instructs the C++ code generator to use a different
     representation of the field than it normally would.  See the specific
     options below.  This option is not yet implemented in the open source
     release -- sorry, we'll try to include it in a future version!

Specified by:
  `getCtype` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setCtype

    public DescriptorProtos.FieldOptions.Builder setCtype​(DescriptorProtos.FieldOptions.CType value)

`optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`

     The ctype option instructs the C++ code generator to use a different
     representation of the field than it normally would.  See the specific
     options below.  This option is not yet implemented in the open source
     release -- sorry, we'll try to include it in a future version!

#### clearCtype

    public DescriptorProtos.FieldOptions.Builder clearCtype()

`optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];`

     The ctype option instructs the C++ code generator to use a different
     representation of the field than it normally would.  See the specific
     options below.  This option is not yet implemented in the open source
     release -- sorry, we'll try to include it in a future version!

#### hasPacked

    public boolean hasPacked()

`optional bool packed = 2;`

     The packed option can be enabled for repeated primitive fields to enable
     a more efficient representation on the wire. Rather than repeatedly
     writing the tag and type for each element, the entire array is encoded as
     a single length-delimited blob.

Specified by:
  `hasPacked` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getPacked

    public boolean getPacked()

`optional bool packed = 2;`

     The packed option can be enabled for repeated primitive fields to enable
     a more efficient representation on the wire. Rather than repeatedly
     writing the tag and type for each element, the entire array is encoded as
     a single length-delimited blob.

Specified by:
  `getPacked` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setPacked

    public DescriptorProtos.FieldOptions.Builder setPacked​(boolean value)

`optional bool packed = 2;`

     The packed option can be enabled for repeated primitive fields to enable
     a more efficient representation on the wire. Rather than repeatedly
     writing the tag and type for each element, the entire array is encoded as
     a single length-delimited blob.

#### clearPacked

    public DescriptorProtos.FieldOptions.Builder clearPacked()

`optional bool packed = 2;`

     The packed option can be enabled for repeated primitive fields to enable
     a more efficient representation on the wire. Rather than repeatedly
     writing the tag and type for each element, the entire array is encoded as
     a single length-delimited blob.

#### hasLazy

    public boolean hasLazy()

`optional bool lazy = 5 [default = false];`

     Should this field be parsed lazily?  Lazy applies only to message-type
     fields.  It means that when the outer message is initially parsed, the
     inner message's contents will not be parsed but instead stored in encoded
     form.  The inner message will actually be parsed when it is first accessed.
     This is only a hint.  Implementations are free to choose whether to use
     eager or lazy parsing regardless of the value of this option.  However,
     setting this option true suggests that the protocol author believes that
     using lazy parsing on this field is worth the additional bookkeeping
     overhead typically needed to implement it.
     This option does not affect the public interface of any generated code;
     all method signatures remain the same.  Furthermore, thread-safety of the
     interface is not affected by this option; const methods remain safe to
     call from multiple threads concurrently, while non-const methods continue
     to require exclusive access.
     Note that implementations may choose not to check required fields within
     a lazy sub-message.  That is, calling IsInitialized() on the outher message
     may return true even if the inner message has missing required fields.
     This is necessary because otherwise the inner message would have to be
     parsed in order to perform the check, defeating the purpose of lazy
     parsing.  An implementation which chooses not to check required fields
     must be consistent about it.  That is, for any particular sub-message, the
     implementation must either *always* check its required fields, or *never*
     check its required fields, regardless of whether or not the message has
     been parsed.

Specified by:
  `hasLazy` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getLazy

    public boolean getLazy()

`optional bool lazy = 5 [default = false];`

     Should this field be parsed lazily?  Lazy applies only to message-type
     fields.  It means that when the outer message is initially parsed, the
     inner message's contents will not be parsed but instead stored in encoded
     form.  The inner message will actually be parsed when it is first accessed.
     This is only a hint.  Implementations are free to choose whether to use
     eager or lazy parsing regardless of the value of this option.  However,
     setting this option true suggests that the protocol author believes that
     using lazy parsing on this field is worth the additional bookkeeping
     overhead typically needed to implement it.
     This option does not affect the public interface of any generated code;
     all method signatures remain the same.  Furthermore, thread-safety of the
     interface is not affected by this option; const methods remain safe to
     call from multiple threads concurrently, while non-const methods continue
     to require exclusive access.
     Note that implementations may choose not to check required fields within
     a lazy sub-message.  That is, calling IsInitialized() on the outher message
     may return true even if the inner message has missing required fields.
     This is necessary because otherwise the inner message would have to be
     parsed in order to perform the check, defeating the purpose of lazy
     parsing.  An implementation which chooses not to check required fields
     must be consistent about it.  That is, for any particular sub-message, the
     implementation must either *always* check its required fields, or *never*
     check its required fields, regardless of whether or not the message has
     been parsed.

Specified by:
  `getLazy` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setLazy

    public DescriptorProtos.FieldOptions.Builder setLazy​(boolean value)

`optional bool lazy = 5 [default = false];`

     Should this field be parsed lazily?  Lazy applies only to message-type
     fields.  It means that when the outer message is initially parsed, the
     inner message's contents will not be parsed but instead stored in encoded
     form.  The inner message will actually be parsed when it is first accessed.
     This is only a hint.  Implementations are free to choose whether to use
     eager or lazy parsing regardless of the value of this option.  However,
     setting this option true suggests that the protocol author believes that
     using lazy parsing on this field is worth the additional bookkeeping
     overhead typically needed to implement it.
     This option does not affect the public interface of any generated code;
     all method signatures remain the same.  Furthermore, thread-safety of the
     interface is not affected by this option; const methods remain safe to
     call from multiple threads concurrently, while non-const methods continue
     to require exclusive access.
     Note that implementations may choose not to check required fields within
     a lazy sub-message.  That is, calling IsInitialized() on the outher message
     may return true even if the inner message has missing required fields.
     This is necessary because otherwise the inner message would have to be
     parsed in order to perform the check, defeating the purpose of lazy
     parsing.  An implementation which chooses not to check required fields
     must be consistent about it.  That is, for any particular sub-message, the
     implementation must either *always* check its required fields, or *never*
     check its required fields, regardless of whether or not the message has
     been parsed.

#### clearLazy

    public DescriptorProtos.FieldOptions.Builder clearLazy()

`optional bool lazy = 5 [default = false];`

     Should this field be parsed lazily?  Lazy applies only to message-type
     fields.  It means that when the outer message is initially parsed, the
     inner message's contents will not be parsed but instead stored in encoded
     form.  The inner message will actually be parsed when it is first accessed.
     This is only a hint.  Implementations are free to choose whether to use
     eager or lazy parsing regardless of the value of this option.  However,
     setting this option true suggests that the protocol author believes that
     using lazy parsing on this field is worth the additional bookkeeping
     overhead typically needed to implement it.
     This option does not affect the public interface of any generated code;
     all method signatures remain the same.  Furthermore, thread-safety of the
     interface is not affected by this option; const methods remain safe to
     call from multiple threads concurrently, while non-const methods continue
     to require exclusive access.
     Note that implementations may choose not to check required fields within
     a lazy sub-message.  That is, calling IsInitialized() on the outher message
     may return true even if the inner message has missing required fields.
     This is necessary because otherwise the inner message would have to be
     parsed in order to perform the check, defeating the purpose of lazy
     parsing.  An implementation which chooses not to check required fields
     must be consistent about it.  That is, for any particular sub-message, the
     implementation must either *always* check its required fields, or *never*
     check its required fields, regardless of whether or not the message has
     been parsed.

#### hasDeprecated

    public boolean hasDeprecated()

`optional bool deprecated = 3 [default = false];`

     Is this field deprecated?
     Depending on the target platform, this can emit Deprecated annotations
     for accessors, or it will be completely ignored; in the very least, this
     is a formalization for deprecating fields.

Specified by:
  `hasDeprecated` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getDeprecated

    public boolean getDeprecated()

`optional bool deprecated = 3 [default = false];`

     Is this field deprecated?
     Depending on the target platform, this can emit Deprecated annotations
     for accessors, or it will be completely ignored; in the very least, this
     is a formalization for deprecating fields.

Specified by:
  `getDeprecated` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setDeprecated

    public DescriptorProtos.FieldOptions.Builder setDeprecated​(boolean value)

`optional bool deprecated = 3 [default = false];`

     Is this field deprecated?
     Depending on the target platform, this can emit Deprecated annotations
     for accessors, or it will be completely ignored; in the very least, this
     is a formalization for deprecating fields.

#### clearDeprecated

    public DescriptorProtos.FieldOptions.Builder clearDeprecated()

`optional bool deprecated = 3 [default = false];`

     Is this field deprecated?
     Depending on the target platform, this can emit Deprecated annotations
     for accessors, or it will be completely ignored; in the very least, this
     is a formalization for deprecating fields.

#### hasExperimentalMapKey

    public boolean hasExperimentalMapKey()

`optional string experimental_map_key = 9;`

     EXPERIMENTAL.  DO NOT USE.
     For "map" fields, the name of the field in the enclosed type that
     is the key for this map.  For example, suppose we have:
       message Item {
         required string name = 1;
         required string value = 2;
       }
       message Config {
         repeated Item items = 1 [experimental_map_key="name"];
       }
     In this situation, the map key for Item will be set to "name".
     TODO: Fully-implement this, then remove the "experimental_" prefix.

Specified by:
  `hasExperimentalMapKey` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getExperimentalMapKey

    public java.lang.String getExperimentalMapKey()

`optional string experimental_map_key = 9;`

     EXPERIMENTAL.  DO NOT USE.
     For "map" fields, the name of the field in the enclosed type that
     is the key for this map.  For example, suppose we have:
       message Item {
         required string name = 1;
         required string value = 2;
       }
       message Config {
         repeated Item items = 1 [experimental_map_key="name"];
       }
     In this situation, the map key for Item will be set to "name".
     TODO: Fully-implement this, then remove the "experimental_" prefix.

Specified by:
  `getExperimentalMapKey` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getExperimentalMapKeyBytes

    public ByteString getExperimentalMapKeyBytes()

`optional string experimental_map_key = 9;`

     EXPERIMENTAL.  DO NOT USE.
     For "map" fields, the name of the field in the enclosed type that
     is the key for this map.  For example, suppose we have:
       message Item {
         required string name = 1;
         required string value = 2;
       }
       message Config {
         repeated Item items = 1 [experimental_map_key="name"];
       }
     In this situation, the map key for Item will be set to "name".
     TODO: Fully-implement this, then remove the "experimental_" prefix.

Specified by:
  `getExperimentalMapKeyBytes` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setExperimentalMapKey

    public DescriptorProtos.FieldOptions.Builder setExperimentalMapKey​(java.lang.String value)

`optional string experimental_map_key = 9;`

     EXPERIMENTAL.  DO NOT USE.
     For "map" fields, the name of the field in the enclosed type that
     is the key for this map.  For example, suppose we have:
       message Item {
         required string name = 1;
         required string value = 2;
       }
       message Config {
         repeated Item items = 1 [experimental_map_key="name"];
       }
     In this situation, the map key for Item will be set to "name".
     TODO: Fully-implement this, then remove the "experimental_" prefix.

#### clearExperimentalMapKey

    public DescriptorProtos.FieldOptions.Builder clearExperimentalMapKey()

`optional string experimental_map_key = 9;`

     EXPERIMENTAL.  DO NOT USE.
     For "map" fields, the name of the field in the enclosed type that
     is the key for this map.  For example, suppose we have:
       message Item {
         required string name = 1;
         required string value = 2;
       }
       message Config {
         repeated Item items = 1 [experimental_map_key="name"];
       }
     In this situation, the map key for Item will be set to "name".
     TODO: Fully-implement this, then remove the "experimental_" prefix.

#### setExperimentalMapKeyBytes

    public DescriptorProtos.FieldOptions.Builder setExperimentalMapKeyBytes​(ByteString value)

`optional string experimental_map_key = 9;`

     EXPERIMENTAL.  DO NOT USE.
     For "map" fields, the name of the field in the enclosed type that
     is the key for this map.  For example, suppose we have:
       message Item {
         required string name = 1;
         required string value = 2;
       }
       message Config {
         repeated Item items = 1 [experimental_map_key="name"];
       }
     In this situation, the map key for Item will be set to "name".
     TODO: Fully-implement this, then remove the "experimental_" prefix.

#### hasWeak

    public boolean hasWeak()

`optional bool weak = 10 [default = false];`

     For Google-internal migration only. Do not use.

Specified by:
  `hasWeak` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getWeak

    public boolean getWeak()

`optional bool weak = 10 [default = false];`

     For Google-internal migration only. Do not use.

Specified by:
  `getWeak` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setWeak

    public DescriptorProtos.FieldOptions.Builder setWeak​(boolean value)

`optional bool weak = 10 [default = false];`

     For Google-internal migration only. Do not use.

#### clearWeak

    public DescriptorProtos.FieldOptions.Builder clearWeak()

`optional bool weak = 10 [default = false];`

     For Google-internal migration only. Do not use.

#### getUninterpretedOptionList

    public java.util.List<DescriptorProtos.UninterpretedOption> getUninterpretedOptionList()

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

Specified by:
  `getUninterpretedOptionList` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getUninterpretedOptionCount

    public int getUninterpretedOptionCount()

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

Specified by:
  `getUninterpretedOptionCount` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getUninterpretedOption

    public DescriptorProtos.UninterpretedOption getUninterpretedOption​(int index)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

Specified by:
  `getUninterpretedOption` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### setUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder setUninterpretedOption​(int index,
                                                                        DescriptorProtos.UninterpretedOption value)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### setUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder setUninterpretedOption​(int index,
                                                                        DescriptorProtos.UninterpretedOption.Builder builderForValue)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### addUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder addUninterpretedOption​(DescriptorProtos.UninterpretedOption value)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### addUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder addUninterpretedOption​(int index,
                                                                        DescriptorProtos.UninterpretedOption value)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### addUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder addUninterpretedOption​(DescriptorProtos.UninterpretedOption.Builder builderForValue)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### addUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder addUninterpretedOption​(int index,
                                                                        DescriptorProtos.UninterpretedOption.Builder builderForValue)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### addAllUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder addAllUninterpretedOption​(java.lang.Iterable<? extends DescriptorProtos.UninterpretedOption> values)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### clearUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder clearUninterpretedOption()

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### removeUninterpretedOption

    public DescriptorProtos.FieldOptions.Builder removeUninterpretedOption​(int index)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### getUninterpretedOptionBuilder

    public DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder​(int index)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### getUninterpretedOptionOrBuilder

    public DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder​(int index)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

Specified by:
  `getUninterpretedOptionOrBuilder` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### getUninterpretedOptionOrBuilderList

    public java.util.List<? extends DescriptorProtos.UninterpretedOptionOrBuilder> getUninterpretedOptionOrBuilderList()

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

Specified by:
  `getUninterpretedOptionOrBuilderList` in interface `DescriptorProtos.FieldOptionsOrBuilder`

#### addUninterpretedOptionBuilder

    public DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder()

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### addUninterpretedOptionBuilder

    public DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder​(int index)

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.

#### getUninterpretedOptionBuilderList

    public java.util.List<DescriptorProtos.UninterpretedOption.Builder> getUninterpretedOptionBuilderList()

`repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;`

     The parser stores options it doesn't recognize here. See above.