Class DescriptorProtos.FieldOptions.Builder

All Implemented Interfaces:
DescriptorProtos.FieldOptionsOrBuilder, GeneratedMessage.ExtendableMessageOrBuilder<DescriptorProtos.FieldOptions>, Message.Builder, MessageLite.Builder, MessageLiteOrBuilder, MessageOrBuilder, Cloneable
Enclosing class:
DescriptorProtos.FieldOptions

Protobuf type google.protobuf.FieldOptions
  • Method Details

    • 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

      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

      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:
    • 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

      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

      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

    • 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 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:
      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

      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

      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

      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

      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

      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 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(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

      optional bool weak = 10 [default = false];
       For Google-internal migration only. Do not use.
       
    • getUninterpretedOptionList

      public 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

      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

      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(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 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 List<DescriptorProtos.UninterpretedOption.Builder> getUninterpretedOptionBuilderList()
      repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
       The parser stores options it doesn't recognize here. See above.