com.google.protobuf.FileOptionsKt.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of protobuf-kotlin-lite Show documentation
Show all versions of protobuf-kotlin-lite Show documentation
Kotlin lite Protocol Buffers library. Protocol Buffers are a way of encoding structured data in an
efficient yet extensible format.
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: google/protobuf/descriptor.proto
// Generated files should ignore deprecation warnings
@file:Suppress("DEPRECATION")
package com.google.protobuf;
@kotlin.jvm.JvmName("-initializefileOptions")
public inline fun fileOptions(block: com.google.protobuf.FileOptionsKt.Dsl.() -> kotlin.Unit): com.google.protobuf.DescriptorProtos.FileOptions =
com.google.protobuf.FileOptionsKt.Dsl._create(com.google.protobuf.DescriptorProtos.FileOptions.newBuilder()).apply { block() }._build()
/**
* Protobuf type `google.protobuf.FileOptions`
*/
public object FileOptionsKt {
@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)
@com.google.protobuf.kotlin.ProtoDslMarker
public class Dsl private constructor(
private val _builder: com.google.protobuf.DescriptorProtos.FileOptions.Builder
) {
public companion object {
@kotlin.jvm.JvmSynthetic
@kotlin.PublishedApi
internal fun _create(builder: com.google.protobuf.DescriptorProtos.FileOptions.Builder): Dsl = Dsl(builder)
}
@kotlin.jvm.JvmSynthetic
@kotlin.PublishedApi
internal fun _build(): com.google.protobuf.DescriptorProtos.FileOptions = _builder.build()
/**
* `optional string java_package = 1 [json_name = "javaPackage"];`
*/
public var javaPackage: kotlin.String
@JvmName("getJavaPackage")
get() = _builder.getJavaPackage()
@JvmName("setJavaPackage")
set(value) {
_builder.setJavaPackage(value)
}
/**
* `optional string java_package = 1 [json_name = "javaPackage"];`
*/
public fun clearJavaPackage() {
_builder.clearJavaPackage()
}
/**
* `optional string java_package = 1 [json_name = "javaPackage"];`
* @return Whether the javaPackage field is set.
*/
public fun hasJavaPackage(): kotlin.Boolean {
return _builder.hasJavaPackage()
}
/**
* `optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];`
*/
public var javaOuterClassname: kotlin.String
@JvmName("getJavaOuterClassname")
get() = _builder.getJavaOuterClassname()
@JvmName("setJavaOuterClassname")
set(value) {
_builder.setJavaOuterClassname(value)
}
/**
* `optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];`
*/
public fun clearJavaOuterClassname() {
_builder.clearJavaOuterClassname()
}
/**
* `optional string java_outer_classname = 8 [json_name = "javaOuterClassname"];`
* @return Whether the javaOuterClassname field is set.
*/
public fun hasJavaOuterClassname(): kotlin.Boolean {
return _builder.hasJavaOuterClassname()
}
/**
* optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];
*/
public var javaMultipleFiles: kotlin.Boolean
@JvmName("getJavaMultipleFiles")
get() = _builder.getJavaMultipleFiles()
@JvmName("setJavaMultipleFiles")
set(value) {
_builder.setJavaMultipleFiles(value)
}
/**
* `optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];`
*/
public fun clearJavaMultipleFiles() {
_builder.clearJavaMultipleFiles()
}
/**
* `optional bool java_multiple_files = 10 [default = false, json_name = "javaMultipleFiles"];`
* @return Whether the javaMultipleFiles field is set.
*/
public fun hasJavaMultipleFiles(): kotlin.Boolean {
return _builder.hasJavaMultipleFiles()
}
/**
* optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];
*/
@kotlin.Deprecated(message = "Field javaGenerateEqualsAndHash is deprecated") public var javaGenerateEqualsAndHash: kotlin.Boolean
@JvmName("getJavaGenerateEqualsAndHash")
get() = _builder.getJavaGenerateEqualsAndHash()
@JvmName("setJavaGenerateEqualsAndHash")
set(value) {
_builder.setJavaGenerateEqualsAndHash(value)
}
/**
* `optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];`
*/
public fun clearJavaGenerateEqualsAndHash() {
_builder.clearJavaGenerateEqualsAndHash()
}
/**
* `optional bool java_generate_equals_and_hash = 20 [json_name = "javaGenerateEqualsAndHash", deprecated = true];`
* @return Whether the javaGenerateEqualsAndHash field is set.
*/
public fun hasJavaGenerateEqualsAndHash(): kotlin.Boolean {
return _builder.hasJavaGenerateEqualsAndHash()
}
/**
* optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];
*/
public var javaStringCheckUtf8: kotlin.Boolean
@JvmName("getJavaStringCheckUtf8")
get() = _builder.getJavaStringCheckUtf8()
@JvmName("setJavaStringCheckUtf8")
set(value) {
_builder.setJavaStringCheckUtf8(value)
}
/**
* `optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];`
*/
public fun clearJavaStringCheckUtf8() {
_builder.clearJavaStringCheckUtf8()
}
/**
* `optional bool java_string_check_utf8 = 27 [default = false, json_name = "javaStringCheckUtf8"];`
* @return Whether the javaStringCheckUtf8 field is set.
*/
public fun hasJavaStringCheckUtf8(): kotlin.Boolean {
return _builder.hasJavaStringCheckUtf8()
}
/**
* `optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];`
*/
public var optimizeFor: com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode
@JvmName("getOptimizeFor")
get() = _builder.getOptimizeFor()
@JvmName("setOptimizeFor")
set(value) {
_builder.setOptimizeFor(value)
}
/**
* `optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];`
*/
public fun clearOptimizeFor() {
_builder.clearOptimizeFor()
}
/**
* `optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED, json_name = "optimizeFor"];`
* @return Whether the optimizeFor field is set.
*/
public fun hasOptimizeFor(): kotlin.Boolean {
return _builder.hasOptimizeFor()
}
/**
* `optional string go_package = 11 [json_name = "goPackage"];`
*/
public var goPackage: kotlin.String
@JvmName("getGoPackage")
get() = _builder.getGoPackage()
@JvmName("setGoPackage")
set(value) {
_builder.setGoPackage(value)
}
/**
* `optional string go_package = 11 [json_name = "goPackage"];`
*/
public fun clearGoPackage() {
_builder.clearGoPackage()
}
/**
* `optional string go_package = 11 [json_name = "goPackage"];`
* @return Whether the goPackage field is set.
*/
public fun hasGoPackage(): kotlin.Boolean {
return _builder.hasGoPackage()
}
/**
* optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];
*/
public var ccGenericServices: kotlin.Boolean
@JvmName("getCcGenericServices")
get() = _builder.getCcGenericServices()
@JvmName("setCcGenericServices")
set(value) {
_builder.setCcGenericServices(value)
}
/**
* `optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];`
*/
public fun clearCcGenericServices() {
_builder.clearCcGenericServices()
}
/**
* `optional bool cc_generic_services = 16 [default = false, json_name = "ccGenericServices"];`
* @return Whether the ccGenericServices field is set.
*/
public fun hasCcGenericServices(): kotlin.Boolean {
return _builder.hasCcGenericServices()
}
/**
* optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];
*/
public var javaGenericServices: kotlin.Boolean
@JvmName("getJavaGenericServices")
get() = _builder.getJavaGenericServices()
@JvmName("setJavaGenericServices")
set(value) {
_builder.setJavaGenericServices(value)
}
/**
* `optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];`
*/
public fun clearJavaGenericServices() {
_builder.clearJavaGenericServices()
}
/**
* `optional bool java_generic_services = 17 [default = false, json_name = "javaGenericServices"];`
* @return Whether the javaGenericServices field is set.
*/
public fun hasJavaGenericServices(): kotlin.Boolean {
return _builder.hasJavaGenericServices()
}
/**
* optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];
*/
public var pyGenericServices: kotlin.Boolean
@JvmName("getPyGenericServices")
get() = _builder.getPyGenericServices()
@JvmName("setPyGenericServices")
set(value) {
_builder.setPyGenericServices(value)
}
/**
* `optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];`
*/
public fun clearPyGenericServices() {
_builder.clearPyGenericServices()
}
/**
* `optional bool py_generic_services = 18 [default = false, json_name = "pyGenericServices"];`
* @return Whether the pyGenericServices field is set.
*/
public fun hasPyGenericServices(): kotlin.Boolean {
return _builder.hasPyGenericServices()
}
/**
* optional bool deprecated = 23 [default = false, json_name = "deprecated"];
*/
public var deprecated: kotlin.Boolean
@JvmName("getDeprecated")
get() = _builder.getDeprecated()
@JvmName("setDeprecated")
set(value) {
_builder.setDeprecated(value)
}
/**
* `optional bool deprecated = 23 [default = false, json_name = "deprecated"];`
*/
public fun clearDeprecated() {
_builder.clearDeprecated()
}
/**
* `optional bool deprecated = 23 [default = false, json_name = "deprecated"];`
* @return Whether the deprecated field is set.
*/
public fun hasDeprecated(): kotlin.Boolean {
return _builder.hasDeprecated()
}
/**
* optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];
*/
public var ccEnableArenas: kotlin.Boolean
@JvmName("getCcEnableArenas")
get() = _builder.getCcEnableArenas()
@JvmName("setCcEnableArenas")
set(value) {
_builder.setCcEnableArenas(value)
}
/**
* `optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];`
*/
public fun clearCcEnableArenas() {
_builder.clearCcEnableArenas()
}
/**
* `optional bool cc_enable_arenas = 31 [default = true, json_name = "ccEnableArenas"];`
* @return Whether the ccEnableArenas field is set.
*/
public fun hasCcEnableArenas(): kotlin.Boolean {
return _builder.hasCcEnableArenas()
}
/**
* `optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];`
*/
public var objcClassPrefix: kotlin.String
@JvmName("getObjcClassPrefix")
get() = _builder.getObjcClassPrefix()
@JvmName("setObjcClassPrefix")
set(value) {
_builder.setObjcClassPrefix(value)
}
/**
* `optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];`
*/
public fun clearObjcClassPrefix() {
_builder.clearObjcClassPrefix()
}
/**
* `optional string objc_class_prefix = 36 [json_name = "objcClassPrefix"];`
* @return Whether the objcClassPrefix field is set.
*/
public fun hasObjcClassPrefix(): kotlin.Boolean {
return _builder.hasObjcClassPrefix()
}
/**
* `optional string csharp_namespace = 37 [json_name = "csharpNamespace"];`
*/
public var csharpNamespace: kotlin.String
@JvmName("getCsharpNamespace")
get() = _builder.getCsharpNamespace()
@JvmName("setCsharpNamespace")
set(value) {
_builder.setCsharpNamespace(value)
}
/**
* `optional string csharp_namespace = 37 [json_name = "csharpNamespace"];`
*/
public fun clearCsharpNamespace() {
_builder.clearCsharpNamespace()
}
/**
* `optional string csharp_namespace = 37 [json_name = "csharpNamespace"];`
* @return Whether the csharpNamespace field is set.
*/
public fun hasCsharpNamespace(): kotlin.Boolean {
return _builder.hasCsharpNamespace()
}
/**
* `optional string swift_prefix = 39 [json_name = "swiftPrefix"];`
*/
public var swiftPrefix: kotlin.String
@JvmName("getSwiftPrefix")
get() = _builder.getSwiftPrefix()
@JvmName("setSwiftPrefix")
set(value) {
_builder.setSwiftPrefix(value)
}
/**
* `optional string swift_prefix = 39 [json_name = "swiftPrefix"];`
*/
public fun clearSwiftPrefix() {
_builder.clearSwiftPrefix()
}
/**
* `optional string swift_prefix = 39 [json_name = "swiftPrefix"];`
* @return Whether the swiftPrefix field is set.
*/
public fun hasSwiftPrefix(): kotlin.Boolean {
return _builder.hasSwiftPrefix()
}
/**
* `optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];`
*/
public var phpClassPrefix: kotlin.String
@JvmName("getPhpClassPrefix")
get() = _builder.getPhpClassPrefix()
@JvmName("setPhpClassPrefix")
set(value) {
_builder.setPhpClassPrefix(value)
}
/**
* `optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];`
*/
public fun clearPhpClassPrefix() {
_builder.clearPhpClassPrefix()
}
/**
* `optional string php_class_prefix = 40 [json_name = "phpClassPrefix"];`
* @return Whether the phpClassPrefix field is set.
*/
public fun hasPhpClassPrefix(): kotlin.Boolean {
return _builder.hasPhpClassPrefix()
}
/**
* `optional string php_namespace = 41 [json_name = "phpNamespace"];`
*/
public var phpNamespace: kotlin.String
@JvmName("getPhpNamespace")
get() = _builder.getPhpNamespace()
@JvmName("setPhpNamespace")
set(value) {
_builder.setPhpNamespace(value)
}
/**
* `optional string php_namespace = 41 [json_name = "phpNamespace"];`
*/
public fun clearPhpNamespace() {
_builder.clearPhpNamespace()
}
/**
* `optional string php_namespace = 41 [json_name = "phpNamespace"];`
* @return Whether the phpNamespace field is set.
*/
public fun hasPhpNamespace(): kotlin.Boolean {
return _builder.hasPhpNamespace()
}
/**
* `optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];`
*/
public var phpMetadataNamespace: kotlin.String
@JvmName("getPhpMetadataNamespace")
get() = _builder.getPhpMetadataNamespace()
@JvmName("setPhpMetadataNamespace")
set(value) {
_builder.setPhpMetadataNamespace(value)
}
/**
* `optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];`
*/
public fun clearPhpMetadataNamespace() {
_builder.clearPhpMetadataNamespace()
}
/**
* `optional string php_metadata_namespace = 44 [json_name = "phpMetadataNamespace"];`
* @return Whether the phpMetadataNamespace field is set.
*/
public fun hasPhpMetadataNamespace(): kotlin.Boolean {
return _builder.hasPhpMetadataNamespace()
}
/**
* `optional string ruby_package = 45 [json_name = "rubyPackage"];`
*/
public var rubyPackage: kotlin.String
@JvmName("getRubyPackage")
get() = _builder.getRubyPackage()
@JvmName("setRubyPackage")
set(value) {
_builder.setRubyPackage(value)
}
/**
* `optional string ruby_package = 45 [json_name = "rubyPackage"];`
*/
public fun clearRubyPackage() {
_builder.clearRubyPackage()
}
/**
* `optional string ruby_package = 45 [json_name = "rubyPackage"];`
* @return Whether the rubyPackage field is set.
*/
public fun hasRubyPackage(): kotlin.Boolean {
return _builder.hasRubyPackage()
}
/**
* `optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];`
*/
public var features: com.google.protobuf.DescriptorProtos.FeatureSet
@JvmName("getFeatures")
get() = _builder.getFeatures()
@JvmName("setFeatures")
set(value) {
_builder.setFeatures(value)
}
/**
* `optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];`
*/
public fun clearFeatures() {
_builder.clearFeatures()
}
/**
* `optional .google.protobuf.FeatureSet features = 50 [json_name = "features"];`
* @return Whether the features field is set.
*/
public fun hasFeatures(): kotlin.Boolean {
return _builder.hasFeatures()
}
public val FileOptionsKt.Dsl.featuresOrNull: com.google.protobuf.DescriptorProtos.FeatureSet?
get() = _builder.featuresOrNull
/**
* An uninstantiable, behaviorless type to represent the field in
* generics.
*/
@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)
public class UninterpretedOptionProxy private constructor() : com.google.protobuf.kotlin.DslProxy()
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
*/
public val uninterpretedOption: com.google.protobuf.kotlin.DslList
@kotlin.jvm.JvmSynthetic
get() = com.google.protobuf.kotlin.DslList(
_builder.getUninterpretedOptionList()
)
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
* @param value The uninterpretedOption to add.
*/
@kotlin.jvm.JvmSynthetic
@kotlin.jvm.JvmName("addUninterpretedOption")
public fun com.google.protobuf.kotlin.DslList.add(value: com.google.protobuf.DescriptorProtos.UninterpretedOption) {
_builder.addUninterpretedOption(value)
}
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
* @param value The uninterpretedOption to add.
*/
@kotlin.jvm.JvmSynthetic
@kotlin.jvm.JvmName("plusAssignUninterpretedOption")
@Suppress("NOTHING_TO_INLINE")
public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: com.google.protobuf.DescriptorProtos.UninterpretedOption) {
add(value)
}
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
* @param values The uninterpretedOption to add.
*/
@kotlin.jvm.JvmSynthetic
@kotlin.jvm.JvmName("addAllUninterpretedOption")
public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) {
_builder.addAllUninterpretedOption(values)
}
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
* @param values The uninterpretedOption to add.
*/
@kotlin.jvm.JvmSynthetic
@kotlin.jvm.JvmName("plusAssignAllUninterpretedOption")
@Suppress("NOTHING_TO_INLINE")
public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) {
addAll(values)
}
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
* @param index The index to set the value at.
* @param value The uninterpretedOption to set.
*/
@kotlin.jvm.JvmSynthetic
@kotlin.jvm.JvmName("setUninterpretedOption")
public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: com.google.protobuf.DescriptorProtos.UninterpretedOption) {
_builder.setUninterpretedOption(index, value)
}
/**
* `repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999 [json_name = "uninterpretedOption"];`
*/
@kotlin.jvm.JvmSynthetic
@kotlin.jvm.JvmName("clearUninterpretedOption")
public fun com.google.protobuf.kotlin.DslList.clear() {
_builder.clearUninterpretedOption()
}
@Suppress("UNCHECKED_CAST")
@kotlin.jvm.JvmSynthetic
public operator fun get(extension: com.google.protobuf.ExtensionLite): T {
return if (extension.isRepeated) {
get(extension as com.google.protobuf.ExtensionLite>) as T
} else {
_builder.getExtension(extension)
}
}
@kotlin.jvm.JvmSynthetic
@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)
@kotlin.jvm.JvmName("-getRepeatedExtension")
public operator fun get(
extension: com.google.protobuf.ExtensionLite>
): com.google.protobuf.kotlin.ExtensionList {
return com.google.protobuf.kotlin.ExtensionList(extension, _builder.getExtension(extension))
}
@kotlin.jvm.JvmSynthetic
public operator fun contains(extension: com.google.protobuf.ExtensionLite): Boolean {
return _builder.hasExtension(extension)
}
@kotlin.jvm.JvmSynthetic
public fun clear(extension: com.google.protobuf.ExtensionLite) {
_builder.clearExtension(extension)
}
@kotlin.jvm.JvmSynthetic
public fun setExtension(extension: com.google.protobuf.ExtensionLite, value: T) {
_builder.setExtension(extension, value)
}
@kotlin.jvm.JvmSynthetic
@Suppress("NOTHING_TO_INLINE")
public inline operator fun > set(
extension: com.google.protobuf.ExtensionLite,
value: T
) {
setExtension(extension, value)
}
@kotlin.jvm.JvmSynthetic
@Suppress("NOTHING_TO_INLINE")
public inline operator fun set(
extension: com.google.protobuf.ExtensionLite,
value: com.google.protobuf.ByteString
) {
setExtension(extension, value)
}
@kotlin.jvm.JvmSynthetic
@Suppress("NOTHING_TO_INLINE")
public inline operator fun set(
extension: com.google.protobuf.ExtensionLite,
value: T
) {
setExtension(extension, value)
}
@kotlin.jvm.JvmSynthetic
public fun com.google.protobuf.kotlin.ExtensionList.add(value: E) {
_builder.addExtension(this.extension, value)
}
@kotlin.jvm.JvmSynthetic
@Suppress("NOTHING_TO_INLINE")
public inline operator fun com.google.protobuf.kotlin.ExtensionList.plusAssign(value: E) {
add(value)
}
@kotlin.jvm.JvmSynthetic
public fun com.google.protobuf.kotlin.ExtensionList.addAll(values: Iterable) {
for (value in values) {
add(value)
}
}
@kotlin.jvm.JvmSynthetic
@Suppress("NOTHING_TO_INLINE")
public inline operator fun com.google.protobuf.kotlin.ExtensionList.plusAssign(values: Iterable) {
addAll(values)
}
@kotlin.jvm.JvmSynthetic
public operator fun com.google.protobuf.kotlin.ExtensionList.set(index: Int, value: E) {
_builder.setExtension(this.extension, index, value)
}
@kotlin.jvm.JvmSynthetic
@Suppress("NOTHING_TO_INLINE")
public inline fun com.google.protobuf.kotlin.ExtensionList<*, com.google.protobuf.DescriptorProtos.FileOptions>.clear() {
clear(extension)
}
}
}
public inline fun com.google.protobuf.DescriptorProtos.FileOptions.copy(block: `com.google.protobuf`.FileOptionsKt.Dsl.() -> kotlin.Unit): com.google.protobuf.DescriptorProtos.FileOptions =
`com.google.protobuf`.FileOptionsKt.Dsl._create(this.toBuilder()).apply { block() }._build()
public val com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder.featuresOrNull: com.google.protobuf.DescriptorProtos.FeatureSet?
get() = if (hasFeatures()) getFeatures() else null