// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: compizconfig.proto

#include "compizconfig.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG

namespace _pb = ::PROTOBUF_NAMESPACE_ID;
namespace _pbi = _pb::internal;

namespace metadata {
PROTOBUF_CONSTEXPR PluginInfo_Dependencies::PluginInfo_Dependencies(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.after_plugin_)*/{}
  , /*decltype(_impl_.before_plugin_)*/{}
  , /*decltype(_impl_.require_plugin_)*/{}
  , /*decltype(_impl_.require_feature_)*/{}
  , /*decltype(_impl_.conflict_plugin_)*/{}
  , /*decltype(_impl_.conflict_feature_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PluginInfo_DependenciesDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PluginInfo_DependenciesDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PluginInfo_DependenciesDefaultTypeInternal() {}
  union {
    PluginInfo_Dependencies _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PluginInfo_DependenciesDefaultTypeInternal _PluginInfo_Dependencies_default_instance_;
PROTOBUF_CONSTEXPR PluginInfo::PluginInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.feature_)*/{}
  , /*decltype(_impl_.locale_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.short_desc_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.long_desc_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.category_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.deps_)*/nullptr
  , /*decltype(_impl_.time_)*/uint64_t{0u}
  , /*decltype(_impl_.pb_abi_version_)*/0
  , /*decltype(_impl_.brief_metadata_)*/false
  , /*decltype(_impl_.basic_metadata_)*/false} {}
struct PluginInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PluginInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PluginInfoDefaultTypeInternal() {}
  union {
    PluginInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PluginInfoDefaultTypeInternal _PluginInfo_default_instance_;
PROTOBUF_CONSTEXPR PluginBrief::PluginBrief(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.info_)*/nullptr} {}
struct PluginBriefDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PluginBriefDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PluginBriefDefaultTypeInternal() {}
  union {
    PluginBrief _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PluginBriefDefaultTypeInternal _PluginBrief_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Option_ColorValue::Plugin_Option_ColorValue(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.red_)*/{nullptr, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.green_)*/{nullptr, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.blue_)*/{nullptr, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.alpha_)*/{nullptr, ::_pbi::ConstantInitialized{}}} {}
struct Plugin_Option_ColorValueDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_Option_ColorValueDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_Option_ColorValueDefaultTypeInternal() {}
  union {
    Plugin_Option_ColorValue _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_Option_ColorValueDefaultTypeInternal _Plugin_Option_ColorValue_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Option_GenericValue::Plugin_Option_GenericValue(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.string_value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.color_value_)*/nullptr
  , /*decltype(_impl_.bool_value_)*/false
  , /*decltype(_impl_.int_value_)*/0
  , /*decltype(_impl_.float_value_)*/0
  , /*decltype(_impl_.edge_value_)*/0u} {}
struct Plugin_Option_GenericValueDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_Option_GenericValueDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_Option_GenericValueDefaultTypeInternal() {}
  union {
    Plugin_Option_GenericValue _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_Option_GenericValueDefaultTypeInternal _Plugin_Option_GenericValue_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Option_IntDescription::Plugin_Option_IntDescription(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.value_)*/0} {}
struct Plugin_Option_IntDescriptionDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_Option_IntDescriptionDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_Option_IntDescriptionDefaultTypeInternal() {}
  union {
    Plugin_Option_IntDescription _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_Option_IntDescriptionDefaultTypeInternal _Plugin_Option_IntDescription_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Option_StringRestriction::Plugin_Option_StringRestriction(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct Plugin_Option_StringRestrictionDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_Option_StringRestrictionDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_Option_StringRestrictionDefaultTypeInternal() {}
  union {
    Plugin_Option_StringRestriction _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_Option_StringRestrictionDefaultTypeInternal _Plugin_Option_StringRestriction_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Option::Plugin_Option(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.default_value_)*/{}
  , /*decltype(_impl_.int_desc_)*/{}
  , /*decltype(_impl_.str_restriction_)*/{}
  , /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.short_desc_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.long_desc_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.hints_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.list_type_)*/0
  , /*decltype(_impl_.int_min_)*/0
  , /*decltype(_impl_.int_max_)*/0
  , /*decltype(_impl_.read_only_)*/false
  , /*decltype(_impl_.extensible_)*/false
  , /*decltype(_impl_.passive_grab_)*/false
  , /*decltype(_impl_.internal_)*/false
  , /*decltype(_impl_.float_min_)*/0
  , /*decltype(_impl_.float_max_)*/0
  , /*decltype(_impl_.precision_)*/0
  , /*decltype(_impl_.nodelay_)*/false
  , /*decltype(_impl_.sort_start_)*/-1
  , /*decltype(_impl_.group_id_)*/-1
  , /*decltype(_impl_.subgroup_id_)*/-1} {}
struct Plugin_OptionDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_OptionDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_OptionDefaultTypeInternal() {}
  union {
    Plugin_Option _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_OptionDefaultTypeInternal _Plugin_Option_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Extension::Plugin_Extension(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.base_option_)*/{}
  , /*decltype(_impl_.str_restriction_)*/{}
  , /*decltype(_impl_.base_plugin_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct Plugin_ExtensionDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_ExtensionDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_ExtensionDefaultTypeInternal() {}
  union {
    Plugin_Extension _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_ExtensionDefaultTypeInternal _Plugin_Extension_default_instance_;
PROTOBUF_CONSTEXPR Plugin_Screen::Plugin_Screen(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.option_)*/{}
  , /*decltype(_impl_.group_desc_)*/{}
  , /*decltype(_impl_.subgroup_desc_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct Plugin_ScreenDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Plugin_ScreenDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Plugin_ScreenDefaultTypeInternal() {}
  union {
    Plugin_Screen _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Plugin_ScreenDefaultTypeInternal _Plugin_Screen_default_instance_;
PROTOBUF_CONSTEXPR Plugin::Plugin(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.extension_)*/{}
  , /*decltype(_impl_.info_)*/nullptr
  , /*decltype(_impl_.screen_)*/nullptr} {}
struct PluginDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PluginDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PluginDefaultTypeInternal() {}
  union {
    Plugin _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PluginDefaultTypeInternal _Plugin_default_instance_;
}  // namespace metadata
static ::_pb::Metadata file_level_metadata_compizconfig_2eproto[11];
static const ::_pb::EnumDescriptor* file_level_enum_descriptors_compizconfig_2eproto[1];
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_compizconfig_2eproto = nullptr;

const uint32_t TableStruct_compizconfig_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _impl_.after_plugin_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _impl_.before_plugin_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _impl_.require_plugin_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _impl_.require_feature_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _impl_.conflict_plugin_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo_Dependencies, _impl_.conflict_feature_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.pb_abi_version_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.locale_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.time_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.brief_metadata_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.basic_metadata_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.short_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.long_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.category_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.feature_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginInfo, _impl_.deps_),
  7,
  0,
  6,
  8,
  9,
  1,
  2,
  3,
  4,
  ~0u,
  5,
  PROTOBUF_FIELD_OFFSET(::metadata::PluginBrief, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::PluginBrief, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::PluginBrief, _impl_.info_),
  0,
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_ColorValue, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_ColorValue, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_ColorValue, _impl_.red_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_ColorValue, _impl_.green_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_ColorValue, _impl_.blue_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_ColorValue, _impl_.alpha_),
  0,
  1,
  2,
  3,
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_.bool_value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_.int_value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_.float_value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_.color_value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_.edge_value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_GenericValue, _impl_.string_value_),
  2,
  3,
  4,
  1,
  5,
  0,
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_IntDescription, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_IntDescription, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_IntDescription, _impl_.value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_IntDescription, _impl_.name_),
  1,
  0,
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_StringRestriction, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_StringRestriction, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_StringRestriction, _impl_.value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option_StringRestriction, _impl_.name_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.list_type_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.short_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.long_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.group_id_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.subgroup_id_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.read_only_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.extensible_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.sort_start_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.default_value_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.int_min_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.int_max_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.int_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.float_min_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.float_max_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.precision_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.str_restriction_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.hints_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.passive_grab_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.internal_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Option, _impl_.nodelay_),
  0,
  4,
  5,
  1,
  2,
  17,
  18,
  8,
  9,
  16,
  ~0u,
  6,
  7,
  ~0u,
  12,
  13,
  14,
  ~0u,
  3,
  10,
  11,
  15,
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Extension, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Extension, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Extension, _impl_.base_plugin_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Extension, _impl_.base_option_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Extension, _impl_.str_restriction_),
  0,
  ~0u,
  ~0u,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Screen, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Screen, _impl_.option_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Screen, _impl_.group_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin_Screen, _impl_.subgroup_desc_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin, _impl_.info_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin, _impl_.screen_),
  PROTOBUF_FIELD_OFFSET(::metadata::Plugin, _impl_.extension_),
  0,
  1,
  ~0u,
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::metadata::PluginInfo_Dependencies)},
  { 12, 29, -1, sizeof(::metadata::PluginInfo)},
  { 40, 47, -1, sizeof(::metadata::PluginBrief)},
  { 48, 58, -1, sizeof(::metadata::Plugin_Option_ColorValue)},
  { 62, 74, -1, sizeof(::metadata::Plugin_Option_GenericValue)},
  { 80, 88, -1, sizeof(::metadata::Plugin_Option_IntDescription)},
  { 90, 98, -1, sizeof(::metadata::Plugin_Option_StringRestriction)},
  { 100, 128, -1, sizeof(::metadata::Plugin_Option)},
  { 150, 159, -1, sizeof(::metadata::Plugin_Extension)},
  { 162, -1, -1, sizeof(::metadata::Plugin_Screen)},
  { 171, 180, -1, sizeof(::metadata::Plugin)},
};

static const ::_pb::Message* const file_default_instances[] = {
  &::metadata::_PluginInfo_Dependencies_default_instance_._instance,
  &::metadata::_PluginInfo_default_instance_._instance,
  &::metadata::_PluginBrief_default_instance_._instance,
  &::metadata::_Plugin_Option_ColorValue_default_instance_._instance,
  &::metadata::_Plugin_Option_GenericValue_default_instance_._instance,
  &::metadata::_Plugin_Option_IntDescription_default_instance_._instance,
  &::metadata::_Plugin_Option_StringRestriction_default_instance_._instance,
  &::metadata::_Plugin_Option_default_instance_._instance,
  &::metadata::_Plugin_Extension_default_instance_._instance,
  &::metadata::_Plugin_Screen_default_instance_._instance,
  &::metadata::_Plugin_default_instance_._instance,
};

const char descriptor_table_protodef_compizconfig_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\022compizconfig.proto\022\010metadata\"\235\003\n\nPlugi"
  "nInfo\022\026\n\016pb_abi_version\030\001 \002(\021\022\016\n\006locale\030"
  "\002 \002(\t\022\014\n\004time\030\003 \002(\004\022\026\n\016brief_metadata\030\004 "
  "\002(\010\022\026\n\016basic_metadata\030\005 \002(\010\022\014\n\004name\030\006 \002("
  "\t\022\022\n\nshort_desc\030\007 \001(\t\022\021\n\tlong_desc\030\010 \001(\t"
  "\022\020\n\010category\030\t \001(\t\022\017\n\007feature\030\n \003(\t\022/\n\004d"
  "eps\030\013 \001(\0132!.metadata.PluginInfo.Dependen"
  "cies\032\237\001\n\014Dependencies\022\024\n\014after_plugin\030\001 "
  "\003(\t\022\025\n\rbefore_plugin\030\002 \003(\t\022\026\n\016require_pl"
  "ugin\030\003 \003(\t\022\027\n\017require_feature\030\004 \003(\t\022\027\n\017c"
  "onflict_plugin\030\005 \003(\t\022\030\n\020conflict_feature"
  "\030\006 \003(\t\"1\n\013PluginBrief\022\"\n\004info\030\001 \002(\0132\024.me"
  "tadata.PluginInfo\"\306\013\n\006Plugin\022\"\n\004info\030\001 \002"
  "(\0132\024.metadata.PluginInfo\022\'\n\006screen\030\002 \001(\013"
  "2\027.metadata.Plugin.Screen\022-\n\textension\030\003"
  " \003(\0132\032.metadata.Plugin.Extension\032\346\010\n\006Opt"
  "ion\022\014\n\004name\030\001 \002(\t\022*\n\004type\030\002 \002(\0162\034.metada"
  "ta.Plugin.Option.Type\022/\n\tlist_type\030\003 \001(\016"
  "2\034.metadata.Plugin.Option.Type\022\022\n\nshort_"
  "desc\030\004 \001(\t\022\021\n\tlong_desc\030\005 \001(\t\022\024\n\010group_i"
  "d\030\006 \001(\021:\002-1\022\027\n\013subgroup_id\030\007 \001(\021:\002-1\022\021\n\t"
  "read_only\030\010 \001(\010\022\022\n\nextensible\030\t \001(\010\022\026\n\ns"
  "ort_start\030\n \001(\021:\002-1\022;\n\rdefault_value\030\013 \003"
  "(\0132$.metadata.Plugin.Option.GenericValue"
  "\022\017\n\007int_min\030\014 \001(\021\022\017\n\007int_max\030\r \001(\021\0228\n\010in"
  "t_desc\030\016 \003(\0132&.metadata.Plugin.Option.In"
  "tDescription\022\021\n\tfloat_min\030\017 \001(\002\022\021\n\tfloat"
  "_max\030\020 \001(\002\022\021\n\tprecision\030\021 \001(\002\022B\n\017str_res"
  "triction\030\022 \003(\0132).metadata.Plugin.Option."
  "StringRestriction\022\r\n\005hints\030\023 \001(\t\022\024\n\014pass"
  "ive_grab\030\024 \001(\010\022\020\n\010internal\030\025 \001(\010\022\017\n\007node"
  "lay\030\026 \001(\010\032e\n\nColorValue\022\023\n\003red\030\001 \001(\t:\0060x"
  "0000\022\025\n\005green\030\002 \001(\t:\0060x0000\022\024\n\004blue\030\003 \001("
  "\t:\0060x0000\022\025\n\005alpha\030\004 \001(\t:\0060xffff\032\255\001\n\014Gen"
  "ericValue\022\022\n\nbool_value\030\001 \001(\010\022\021\n\tint_val"
  "ue\030\002 \001(\021\022\023\n\013float_value\030\003 \001(\002\0227\n\013color_v"
  "alue\030\004 \001(\0132\".metadata.Plugin.Option.Colo"
  "rValue\022\022\n\nedge_value\030\005 \001(\r\022\024\n\014string_val"
  "ue\030\006 \001(\t\032-\n\016IntDescription\022\r\n\005value\030\001 \002("
  "\021\022\014\n\004name\030\002 \002(\t\0320\n\021StringRestriction\022\r\n\005"
  "value\030\001 \002(\t\022\014\n\004name\030\002 \002(\t\"\205\001\n\004Type\022\010\n\004BO"
  "OL\020\000\022\007\n\003INT\020\001\022\t\n\005FLOAT\020\002\022\n\n\006STRING\020\003\022\t\n\005"
  "COLOR\020\004\022\n\n\006ACTION\020\005\022\007\n\003KEY\020\006\022\n\n\006BUTTON\020\007"
  "\022\010\n\004EDGE\020\010\022\010\n\004BELL\020\t\022\t\n\005MATCH\020\n\022\010\n\004LIST\020"
  "\013\032y\n\tExtension\022\023\n\013base_plugin\030\001 \002(\t\022\023\n\013b"
  "ase_option\030\002 \003(\t\022B\n\017str_restriction\030\003 \003("
  "\0132).metadata.Plugin.Option.StringRestric"
  "tion\032\\\n\006Screen\022\'\n\006option\030\001 \003(\0132\027.metadat"
  "a.Plugin.Option\022\022\n\ngroup_desc\030\002 \003(\t\022\025\n\rs"
  "ubgroup_desc\030\003 \003(\tB\002H\001"
  ;
static ::_pbi::once_flag descriptor_table_compizconfig_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_compizconfig_2eproto = {
    false, false, 1982, descriptor_table_protodef_compizconfig_2eproto,
    "compizconfig.proto",
    &descriptor_table_compizconfig_2eproto_once, nullptr, 0, 11,
    schemas, file_default_instances, TableStruct_compizconfig_2eproto::offsets,
    file_level_metadata_compizconfig_2eproto, file_level_enum_descriptors_compizconfig_2eproto,
    file_level_service_descriptors_compizconfig_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_compizconfig_2eproto_getter() {
  return &descriptor_table_compizconfig_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_compizconfig_2eproto(&descriptor_table_compizconfig_2eproto);
namespace metadata {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Plugin_Option_Type_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_compizconfig_2eproto);
  return file_level_enum_descriptors_compizconfig_2eproto[0];
}
bool Plugin_Option_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr Plugin_Option_Type Plugin_Option::BOOL;
constexpr Plugin_Option_Type Plugin_Option::INT;
constexpr Plugin_Option_Type Plugin_Option::FLOAT;
constexpr Plugin_Option_Type Plugin_Option::STRING;
constexpr Plugin_Option_Type Plugin_Option::COLOR;
constexpr Plugin_Option_Type Plugin_Option::ACTION;
constexpr Plugin_Option_Type Plugin_Option::KEY;
constexpr Plugin_Option_Type Plugin_Option::BUTTON;
constexpr Plugin_Option_Type Plugin_Option::EDGE;
constexpr Plugin_Option_Type Plugin_Option::BELL;
constexpr Plugin_Option_Type Plugin_Option::MATCH;
constexpr Plugin_Option_Type Plugin_Option::LIST;
constexpr Plugin_Option_Type Plugin_Option::Type_MIN;
constexpr Plugin_Option_Type Plugin_Option::Type_MAX;
constexpr int Plugin_Option::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

// ===================================================================

class PluginInfo_Dependencies::_Internal {
 public:
};

PluginInfo_Dependencies::PluginInfo_Dependencies(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.PluginInfo.Dependencies)
}
PluginInfo_Dependencies::PluginInfo_Dependencies(const PluginInfo_Dependencies& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PluginInfo_Dependencies* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.after_plugin_){from._impl_.after_plugin_}
    , decltype(_impl_.before_plugin_){from._impl_.before_plugin_}
    , decltype(_impl_.require_plugin_){from._impl_.require_plugin_}
    , decltype(_impl_.require_feature_){from._impl_.require_feature_}
    , decltype(_impl_.conflict_plugin_){from._impl_.conflict_plugin_}
    , decltype(_impl_.conflict_feature_){from._impl_.conflict_feature_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:metadata.PluginInfo.Dependencies)
}

inline void PluginInfo_Dependencies::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.after_plugin_){arena}
    , decltype(_impl_.before_plugin_){arena}
    , decltype(_impl_.require_plugin_){arena}
    , decltype(_impl_.require_feature_){arena}
    , decltype(_impl_.conflict_plugin_){arena}
    , decltype(_impl_.conflict_feature_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PluginInfo_Dependencies::~PluginInfo_Dependencies() {
  // @@protoc_insertion_point(destructor:metadata.PluginInfo.Dependencies)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PluginInfo_Dependencies::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.after_plugin_.~RepeatedPtrField();
  _impl_.before_plugin_.~RepeatedPtrField();
  _impl_.require_plugin_.~RepeatedPtrField();
  _impl_.require_feature_.~RepeatedPtrField();
  _impl_.conflict_plugin_.~RepeatedPtrField();
  _impl_.conflict_feature_.~RepeatedPtrField();
}

void PluginInfo_Dependencies::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PluginInfo_Dependencies::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.PluginInfo.Dependencies)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.after_plugin_.Clear();
  _impl_.before_plugin_.Clear();
  _impl_.require_plugin_.Clear();
  _impl_.require_feature_.Clear();
  _impl_.conflict_plugin_.Clear();
  _impl_.conflict_feature_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PluginInfo_Dependencies::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string after_plugin = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_after_plugin();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.Dependencies.after_plugin");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string before_plugin = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_before_plugin();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.Dependencies.before_plugin");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string require_plugin = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_require_plugin();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.Dependencies.require_plugin");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string require_feature = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_require_feature();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.Dependencies.require_feature");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string conflict_plugin = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_conflict_plugin();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.Dependencies.conflict_plugin");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string conflict_feature = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_conflict_feature();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.Dependencies.conflict_feature");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PluginInfo_Dependencies::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.PluginInfo.Dependencies)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string after_plugin = 1;
  for (int i = 0, n = this->_internal_after_plugin_size(); i < n; i++) {
    const auto& s = this->_internal_after_plugin(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.Dependencies.after_plugin");
    target = stream->WriteString(1, s, target);
  }

  // repeated string before_plugin = 2;
  for (int i = 0, n = this->_internal_before_plugin_size(); i < n; i++) {
    const auto& s = this->_internal_before_plugin(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.Dependencies.before_plugin");
    target = stream->WriteString(2, s, target);
  }

  // repeated string require_plugin = 3;
  for (int i = 0, n = this->_internal_require_plugin_size(); i < n; i++) {
    const auto& s = this->_internal_require_plugin(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.Dependencies.require_plugin");
    target = stream->WriteString(3, s, target);
  }

  // repeated string require_feature = 4;
  for (int i = 0, n = this->_internal_require_feature_size(); i < n; i++) {
    const auto& s = this->_internal_require_feature(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.Dependencies.require_feature");
    target = stream->WriteString(4, s, target);
  }

  // repeated string conflict_plugin = 5;
  for (int i = 0, n = this->_internal_conflict_plugin_size(); i < n; i++) {
    const auto& s = this->_internal_conflict_plugin(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.Dependencies.conflict_plugin");
    target = stream->WriteString(5, s, target);
  }

  // repeated string conflict_feature = 6;
  for (int i = 0, n = this->_internal_conflict_feature_size(); i < n; i++) {
    const auto& s = this->_internal_conflict_feature(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.Dependencies.conflict_feature");
    target = stream->WriteString(6, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.PluginInfo.Dependencies)
  return target;
}

size_t PluginInfo_Dependencies::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.PluginInfo.Dependencies)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string after_plugin = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.after_plugin_.size());
  for (int i = 0, n = _impl_.after_plugin_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.after_plugin_.Get(i));
  }

  // repeated string before_plugin = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.before_plugin_.size());
  for (int i = 0, n = _impl_.before_plugin_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.before_plugin_.Get(i));
  }

  // repeated string require_plugin = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.require_plugin_.size());
  for (int i = 0, n = _impl_.require_plugin_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.require_plugin_.Get(i));
  }

  // repeated string require_feature = 4;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.require_feature_.size());
  for (int i = 0, n = _impl_.require_feature_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.require_feature_.Get(i));
  }

  // repeated string conflict_plugin = 5;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.conflict_plugin_.size());
  for (int i = 0, n = _impl_.conflict_plugin_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.conflict_plugin_.Get(i));
  }

  // repeated string conflict_feature = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.conflict_feature_.size());
  for (int i = 0, n = _impl_.conflict_feature_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.conflict_feature_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PluginInfo_Dependencies::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PluginInfo_Dependencies::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PluginInfo_Dependencies::GetClassData() const { return &_class_data_; }


void PluginInfo_Dependencies::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PluginInfo_Dependencies*>(&to_msg);
  auto& from = static_cast<const PluginInfo_Dependencies&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.PluginInfo.Dependencies)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.after_plugin_.MergeFrom(from._impl_.after_plugin_);
  _this->_impl_.before_plugin_.MergeFrom(from._impl_.before_plugin_);
  _this->_impl_.require_plugin_.MergeFrom(from._impl_.require_plugin_);
  _this->_impl_.require_feature_.MergeFrom(from._impl_.require_feature_);
  _this->_impl_.conflict_plugin_.MergeFrom(from._impl_.conflict_plugin_);
  _this->_impl_.conflict_feature_.MergeFrom(from._impl_.conflict_feature_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PluginInfo_Dependencies::CopyFrom(const PluginInfo_Dependencies& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.PluginInfo.Dependencies)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PluginInfo_Dependencies::IsInitialized() const {
  return true;
}

void PluginInfo_Dependencies::InternalSwap(PluginInfo_Dependencies* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.after_plugin_.InternalSwap(&other->_impl_.after_plugin_);
  _impl_.before_plugin_.InternalSwap(&other->_impl_.before_plugin_);
  _impl_.require_plugin_.InternalSwap(&other->_impl_.require_plugin_);
  _impl_.require_feature_.InternalSwap(&other->_impl_.require_feature_);
  _impl_.conflict_plugin_.InternalSwap(&other->_impl_.conflict_plugin_);
  _impl_.conflict_feature_.InternalSwap(&other->_impl_.conflict_feature_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PluginInfo_Dependencies::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[0]);
}

// ===================================================================

class PluginInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<PluginInfo>()._impl_._has_bits_);
  static void set_has_pb_abi_version(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_locale(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_time(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_brief_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_basic_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_short_desc(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_long_desc(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_category(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::metadata::PluginInfo_Dependencies& deps(const PluginInfo* msg);
  static void set_has_deps(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x000003c3) ^ 0x000003c3) != 0;
  }
};

const ::metadata::PluginInfo_Dependencies&
PluginInfo::_Internal::deps(const PluginInfo* msg) {
  return *msg->_impl_.deps_;
}
PluginInfo::PluginInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.PluginInfo)
}
PluginInfo::PluginInfo(const PluginInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PluginInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.feature_){from._impl_.feature_}
    , decltype(_impl_.locale_){}
    , decltype(_impl_.name_){}
    , decltype(_impl_.short_desc_){}
    , decltype(_impl_.long_desc_){}
    , decltype(_impl_.category_){}
    , decltype(_impl_.deps_){nullptr}
    , decltype(_impl_.time_){}
    , decltype(_impl_.pb_abi_version_){}
    , decltype(_impl_.brief_metadata_){}
    , decltype(_impl_.basic_metadata_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.locale_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.locale_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_locale()) {
    _this->_impl_.locale_.Set(from._internal_locale(), 
      _this->GetArenaForAllocation());
  }
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_name()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.short_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.short_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_short_desc()) {
    _this->_impl_.short_desc_.Set(from._internal_short_desc(), 
      _this->GetArenaForAllocation());
  }
  _impl_.long_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.long_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_long_desc()) {
    _this->_impl_.long_desc_.Set(from._internal_long_desc(), 
      _this->GetArenaForAllocation());
  }
  _impl_.category_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.category_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_category()) {
    _this->_impl_.category_.Set(from._internal_category(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_deps()) {
    _this->_impl_.deps_ = new ::metadata::PluginInfo_Dependencies(*from._impl_.deps_);
  }
  ::memcpy(&_impl_.time_, &from._impl_.time_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.basic_metadata_) -
    reinterpret_cast<char*>(&_impl_.time_)) + sizeof(_impl_.basic_metadata_));
  // @@protoc_insertion_point(copy_constructor:metadata.PluginInfo)
}

inline void PluginInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.feature_){arena}
    , decltype(_impl_.locale_){}
    , decltype(_impl_.name_){}
    , decltype(_impl_.short_desc_){}
    , decltype(_impl_.long_desc_){}
    , decltype(_impl_.category_){}
    , decltype(_impl_.deps_){nullptr}
    , decltype(_impl_.time_){uint64_t{0u}}
    , decltype(_impl_.pb_abi_version_){0}
    , decltype(_impl_.brief_metadata_){false}
    , decltype(_impl_.basic_metadata_){false}
  };
  _impl_.locale_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.locale_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.short_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.short_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.long_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.long_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.category_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.category_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

PluginInfo::~PluginInfo() {
  // @@protoc_insertion_point(destructor:metadata.PluginInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PluginInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.feature_.~RepeatedPtrField();
  _impl_.locale_.Destroy();
  _impl_.name_.Destroy();
  _impl_.short_desc_.Destroy();
  _impl_.long_desc_.Destroy();
  _impl_.category_.Destroy();
  if (this != internal_default_instance()) delete _impl_.deps_;
}

void PluginInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PluginInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.PluginInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.feature_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.locale_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      _impl_.short_desc_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      _impl_.long_desc_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000010u) {
      _impl_.category_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(_impl_.deps_ != nullptr);
      _impl_.deps_->Clear();
    }
  }
  if (cached_has_bits & 0x000000c0u) {
    ::memset(&_impl_.time_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.pb_abi_version_) -
        reinterpret_cast<char*>(&_impl_.time_)) + sizeof(_impl_.pb_abi_version_));
  }
  if (cached_has_bits & 0x00000300u) {
    ::memset(&_impl_.brief_metadata_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.basic_metadata_) -
        reinterpret_cast<char*>(&_impl_.brief_metadata_)) + sizeof(_impl_.basic_metadata_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PluginInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required sint32 pb_abi_version = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_pb_abi_version(&has_bits);
          _impl_.pb_abi_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // required string locale = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_locale();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.locale");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // required uint64 time = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_time(&has_bits);
          _impl_.time_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // required bool brief_metadata = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_brief_metadata(&has_bits);
          _impl_.brief_metadata_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // required bool basic_metadata = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_basic_metadata(&has_bits);
          _impl_.basic_metadata_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // required string name = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string short_desc = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          auto str = _internal_mutable_short_desc();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.short_desc");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string long_desc = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          auto str = _internal_mutable_long_desc();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.long_desc");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string category = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          auto str = _internal_mutable_category();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.category");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // repeated string feature = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_feature();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.PluginInfo.feature");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional .metadata.PluginInfo.Dependencies deps = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_deps(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PluginInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.PluginInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required sint32 pb_abi_version = 1;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(1, this->_internal_pb_abi_version(), target);
  }

  // required string locale = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_locale().data(), static_cast<int>(this->_internal_locale().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.locale");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_locale(), target);
  }

  // required uint64 time = 3;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(3, this->_internal_time(), target);
  }

  // required bool brief_metadata = 4;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(4, this->_internal_brief_metadata(), target);
  }

  // required bool basic_metadata = 5;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(5, this->_internal_basic_metadata(), target);
  }

  // required string name = 6;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.name");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_name(), target);
  }

  // optional string short_desc = 7;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_short_desc().data(), static_cast<int>(this->_internal_short_desc().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.short_desc");
    target = stream->WriteStringMaybeAliased(
        7, this->_internal_short_desc(), target);
  }

  // optional string long_desc = 8;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_long_desc().data(), static_cast<int>(this->_internal_long_desc().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.long_desc");
    target = stream->WriteStringMaybeAliased(
        8, this->_internal_long_desc(), target);
  }

  // optional string category = 9;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_category().data(), static_cast<int>(this->_internal_category().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.category");
    target = stream->WriteStringMaybeAliased(
        9, this->_internal_category(), target);
  }

  // repeated string feature = 10;
  for (int i = 0, n = this->_internal_feature_size(); i < n; i++) {
    const auto& s = this->_internal_feature(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.PluginInfo.feature");
    target = stream->WriteString(10, s, target);
  }

  // optional .metadata.PluginInfo.Dependencies deps = 11;
  if (cached_has_bits & 0x00000020u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(11, _Internal::deps(this),
        _Internal::deps(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.PluginInfo)
  return target;
}

size_t PluginInfo::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:metadata.PluginInfo)
  size_t total_size = 0;

  if (_internal_has_locale()) {
    // required string locale = 2;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_locale());
  }

  if (_internal_has_name()) {
    // required string name = 6;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  if (_internal_has_time()) {
    // required uint64 time = 3;
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_time());
  }

  if (_internal_has_pb_abi_version()) {
    // required sint32 pb_abi_version = 1;
    total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_pb_abi_version());
  }

  if (_internal_has_brief_metadata()) {
    // required bool brief_metadata = 4;
    total_size += 1 + 1;
  }

  if (_internal_has_basic_metadata()) {
    // required bool basic_metadata = 5;
    total_size += 1 + 1;
  }

  return total_size;
}
size_t PluginInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.PluginInfo)
  size_t total_size = 0;

  if (((_impl_._has_bits_[0] & 0x000003c3) ^ 0x000003c3) == 0) {  // All required fields are present.
    // required string locale = 2;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_locale());

    // required string name = 6;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());

    // required uint64 time = 3;
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_time());

    // required sint32 pb_abi_version = 1;
    total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_pb_abi_version());

    // required bool brief_metadata = 4;
    total_size += 1 + 1;

    // required bool basic_metadata = 5;
    total_size += 1 + 1;

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string feature = 10;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.feature_.size());
  for (int i = 0, n = _impl_.feature_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.feature_.Get(i));
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000003cu) {
    // optional string short_desc = 7;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_short_desc());
    }

    // optional string long_desc = 8;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_long_desc());
    }

    // optional string category = 9;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_category());
    }

    // optional .metadata.PluginInfo.Dependencies deps = 11;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.deps_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PluginInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PluginInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PluginInfo::GetClassData() const { return &_class_data_; }


void PluginInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PluginInfo*>(&to_msg);
  auto& from = static_cast<const PluginInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.PluginInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.feature_.MergeFrom(from._impl_.feature_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_locale(from._internal_locale());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_set_short_desc(from._internal_short_desc());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_set_long_desc(from._internal_long_desc());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_internal_set_category(from._internal_category());
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_internal_mutable_deps()->::metadata::PluginInfo_Dependencies::MergeFrom(
          from._internal_deps());
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.time_ = from._impl_.time_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.pb_abi_version_ = from._impl_.pb_abi_version_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00000300u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_impl_.brief_metadata_ = from._impl_.brief_metadata_;
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.basic_metadata_ = from._impl_.basic_metadata_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PluginInfo::CopyFrom(const PluginInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.PluginInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PluginInfo::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  return true;
}

void PluginInfo::InternalSwap(PluginInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.feature_.InternalSwap(&other->_impl_.feature_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.locale_, lhs_arena,
      &other->_impl_.locale_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.short_desc_, lhs_arena,
      &other->_impl_.short_desc_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.long_desc_, lhs_arena,
      &other->_impl_.long_desc_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.category_, lhs_arena,
      &other->_impl_.category_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PluginInfo, _impl_.basic_metadata_)
      + sizeof(PluginInfo::_impl_.basic_metadata_)
      - PROTOBUF_FIELD_OFFSET(PluginInfo, _impl_.deps_)>(
          reinterpret_cast<char*>(&_impl_.deps_),
          reinterpret_cast<char*>(&other->_impl_.deps_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PluginInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[1]);
}

// ===================================================================

class PluginBrief::_Internal {
 public:
  using HasBits = decltype(std::declval<PluginBrief>()._impl_._has_bits_);
  static const ::metadata::PluginInfo& info(const PluginBrief* msg);
  static void set_has_info(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000001) ^ 0x00000001) != 0;
  }
};

const ::metadata::PluginInfo&
PluginBrief::_Internal::info(const PluginBrief* msg) {
  return *msg->_impl_.info_;
}
PluginBrief::PluginBrief(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.PluginBrief)
}
PluginBrief::PluginBrief(const PluginBrief& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PluginBrief* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.info_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_info()) {
    _this->_impl_.info_ = new ::metadata::PluginInfo(*from._impl_.info_);
  }
  // @@protoc_insertion_point(copy_constructor:metadata.PluginBrief)
}

inline void PluginBrief::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.info_){nullptr}
  };
}

PluginBrief::~PluginBrief() {
  // @@protoc_insertion_point(destructor:metadata.PluginBrief)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PluginBrief::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.info_;
}

void PluginBrief::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PluginBrief::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.PluginBrief)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(_impl_.info_ != nullptr);
    _impl_.info_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PluginBrief::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required .metadata.PluginInfo info = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_info(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PluginBrief::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.PluginBrief)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required .metadata.PluginInfo info = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::info(this),
        _Internal::info(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.PluginBrief)
  return target;
}

size_t PluginBrief::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.PluginBrief)
  size_t total_size = 0;

  // required .metadata.PluginInfo info = 1;
  if (_internal_has_info()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.info_);
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PluginBrief::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PluginBrief::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PluginBrief::GetClassData() const { return &_class_data_; }


void PluginBrief::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PluginBrief*>(&to_msg);
  auto& from = static_cast<const PluginBrief&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.PluginBrief)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_info()) {
    _this->_internal_mutable_info()->::metadata::PluginInfo::MergeFrom(
        from._internal_info());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PluginBrief::CopyFrom(const PluginBrief& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.PluginBrief)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PluginBrief::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  if (_internal_has_info()) {
    if (!_impl_.info_->IsInitialized()) return false;
  }
  return true;
}

void PluginBrief::InternalSwap(PluginBrief* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.info_, other->_impl_.info_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PluginBrief::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[2]);
}

// ===================================================================

class Plugin_Option_ColorValue::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin_Option_ColorValue>()._impl_._has_bits_);
  static void set_has_red(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_green(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_blue(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_alpha(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

const ::PROTOBUF_NAMESPACE_ID::internal::LazyString Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_red_{{{"0x0000", 6}}, {nullptr}};
const ::PROTOBUF_NAMESPACE_ID::internal::LazyString Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_green_{{{"0x0000", 6}}, {nullptr}};
const ::PROTOBUF_NAMESPACE_ID::internal::LazyString Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_blue_{{{"0x0000", 6}}, {nullptr}};
const ::PROTOBUF_NAMESPACE_ID::internal::LazyString Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_alpha_{{{"0xffff", 6}}, {nullptr}};
Plugin_Option_ColorValue::Plugin_Option_ColorValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Option.ColorValue)
}
Plugin_Option_ColorValue::Plugin_Option_ColorValue(const Plugin_Option_ColorValue& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Option_ColorValue* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.red_){}
    , decltype(_impl_.green_){}
    , decltype(_impl_.blue_){}
    , decltype(_impl_.alpha_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.red_.InitDefault();
  if (from._internal_has_red()) {
    _this->_impl_.red_.Set(from._internal_red(), 
      _this->GetArenaForAllocation());
  }
  _impl_.green_.InitDefault();
  if (from._internal_has_green()) {
    _this->_impl_.green_.Set(from._internal_green(), 
      _this->GetArenaForAllocation());
  }
  _impl_.blue_.InitDefault();
  if (from._internal_has_blue()) {
    _this->_impl_.blue_.Set(from._internal_blue(), 
      _this->GetArenaForAllocation());
  }
  _impl_.alpha_.InitDefault();
  if (from._internal_has_alpha()) {
    _this->_impl_.alpha_.Set(from._internal_alpha(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Option.ColorValue)
}

inline void Plugin_Option_ColorValue::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.red_){}
    , decltype(_impl_.green_){}
    , decltype(_impl_.blue_){}
    , decltype(_impl_.alpha_){}
  };
  _impl_.red_.InitDefault();
  _impl_.green_.InitDefault();
  _impl_.blue_.InitDefault();
  _impl_.alpha_.InitDefault();
}

Plugin_Option_ColorValue::~Plugin_Option_ColorValue() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Option.ColorValue)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Option_ColorValue::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.red_.Destroy();
  _impl_.green_.Destroy();
  _impl_.blue_.Destroy();
  _impl_.alpha_.Destroy();
}

void Plugin_Option_ColorValue::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Option_ColorValue::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Option.ColorValue)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.red_.ClearToDefault(::metadata::Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_red_, GetArenaForAllocation());
       }
    if (cached_has_bits & 0x00000002u) {
      _impl_.green_.ClearToDefault(::metadata::Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_green_, GetArenaForAllocation());
       }
    if (cached_has_bits & 0x00000004u) {
      _impl_.blue_.ClearToDefault(::metadata::Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_blue_, GetArenaForAllocation());
       }
    if (cached_has_bits & 0x00000008u) {
      _impl_.alpha_.ClearToDefault(::metadata::Plugin_Option_ColorValue::Impl_::_i_give_permission_to_break_this_code_default_alpha_, GetArenaForAllocation());
       }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Option_ColorValue::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string red = 1 [default = "0x0000"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_red();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.ColorValue.red");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string green = 2 [default = "0x0000"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_green();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.ColorValue.green");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string blue = 3 [default = "0x0000"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_blue();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.ColorValue.blue");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string alpha = 4 [default = "0xffff"];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_alpha();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.ColorValue.alpha");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Option_ColorValue::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Option.ColorValue)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // optional string red = 1 [default = "0x0000"];
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_red().data(), static_cast<int>(this->_internal_red().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.ColorValue.red");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_red(), target);
  }

  // optional string green = 2 [default = "0x0000"];
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_green().data(), static_cast<int>(this->_internal_green().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.ColorValue.green");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_green(), target);
  }

  // optional string blue = 3 [default = "0x0000"];
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_blue().data(), static_cast<int>(this->_internal_blue().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.ColorValue.blue");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_blue(), target);
  }

  // optional string alpha = 4 [default = "0xffff"];
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_alpha().data(), static_cast<int>(this->_internal_alpha().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.ColorValue.alpha");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_alpha(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Option.ColorValue)
  return target;
}

size_t Plugin_Option_ColorValue::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Option.ColorValue)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    // optional string red = 1 [default = "0x0000"];
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_red());
    }

    // optional string green = 2 [default = "0x0000"];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_green());
    }

    // optional string blue = 3 [default = "0x0000"];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_blue());
    }

    // optional string alpha = 4 [default = "0xffff"];
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_alpha());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Option_ColorValue::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Option_ColorValue::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Option_ColorValue::GetClassData() const { return &_class_data_; }


void Plugin_Option_ColorValue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Option_ColorValue*>(&to_msg);
  auto& from = static_cast<const Plugin_Option_ColorValue&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Option.ColorValue)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_red(from._internal_red());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_green(from._internal_green());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_set_blue(from._internal_blue());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_set_alpha(from._internal_alpha());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Option_ColorValue::CopyFrom(const Plugin_Option_ColorValue& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Option.ColorValue)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Option_ColorValue::IsInitialized() const {
  return true;
}

void Plugin_Option_ColorValue::InternalSwap(Plugin_Option_ColorValue* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.red_, lhs_arena,
      &other->_impl_.red_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.green_, lhs_arena,
      &other->_impl_.green_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.blue_, lhs_arena,
      &other->_impl_.blue_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.alpha_, lhs_arena,
      &other->_impl_.alpha_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Option_ColorValue::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[3]);
}

// ===================================================================

class Plugin_Option_GenericValue::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin_Option_GenericValue>()._impl_._has_bits_);
  static void set_has_bool_value(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_int_value(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_float_value(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::metadata::Plugin_Option_ColorValue& color_value(const Plugin_Option_GenericValue* msg);
  static void set_has_color_value(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_edge_value(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_string_value(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::metadata::Plugin_Option_ColorValue&
Plugin_Option_GenericValue::_Internal::color_value(const Plugin_Option_GenericValue* msg) {
  return *msg->_impl_.color_value_;
}
Plugin_Option_GenericValue::Plugin_Option_GenericValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Option.GenericValue)
}
Plugin_Option_GenericValue::Plugin_Option_GenericValue(const Plugin_Option_GenericValue& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Option_GenericValue* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.string_value_){}
    , decltype(_impl_.color_value_){nullptr}
    , decltype(_impl_.bool_value_){}
    , decltype(_impl_.int_value_){}
    , decltype(_impl_.float_value_){}
    , decltype(_impl_.edge_value_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.string_value_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.string_value_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_string_value()) {
    _this->_impl_.string_value_.Set(from._internal_string_value(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_color_value()) {
    _this->_impl_.color_value_ = new ::metadata::Plugin_Option_ColorValue(*from._impl_.color_value_);
  }
  ::memcpy(&_impl_.bool_value_, &from._impl_.bool_value_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.edge_value_) -
    reinterpret_cast<char*>(&_impl_.bool_value_)) + sizeof(_impl_.edge_value_));
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Option.GenericValue)
}

inline void Plugin_Option_GenericValue::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.string_value_){}
    , decltype(_impl_.color_value_){nullptr}
    , decltype(_impl_.bool_value_){false}
    , decltype(_impl_.int_value_){0}
    , decltype(_impl_.float_value_){0}
    , decltype(_impl_.edge_value_){0u}
  };
  _impl_.string_value_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.string_value_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Plugin_Option_GenericValue::~Plugin_Option_GenericValue() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Option.GenericValue)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Option_GenericValue::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.string_value_.Destroy();
  if (this != internal_default_instance()) delete _impl_.color_value_;
}

void Plugin_Option_GenericValue::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Option_GenericValue::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Option.GenericValue)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.string_value_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.color_value_ != nullptr);
      _impl_.color_value_->Clear();
    }
  }
  if (cached_has_bits & 0x0000003cu) {
    ::memset(&_impl_.bool_value_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.edge_value_) -
        reinterpret_cast<char*>(&_impl_.bool_value_)) + sizeof(_impl_.edge_value_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Option_GenericValue::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool bool_value = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_bool_value(&has_bits);
          _impl_.bool_value_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional sint32 int_value = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_int_value(&has_bits);
          _impl_.int_value_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional float float_value = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _Internal::set_has_float_value(&has_bits);
          _impl_.float_value_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // optional .metadata.Plugin.Option.ColorValue color_value = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_color_value(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 edge_value = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_edge_value(&has_bits);
          _impl_.edge_value_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string string_value = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_string_value();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.GenericValue.string_value");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Option_GenericValue::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Option.GenericValue)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // optional bool bool_value = 1;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(1, this->_internal_bool_value(), target);
  }

  // optional sint32 int_value = 2;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(2, this->_internal_int_value(), target);
  }

  // optional float float_value = 3;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_float_value(), target);
  }

  // optional .metadata.Plugin.Option.ColorValue color_value = 4;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::color_value(this),
        _Internal::color_value(this).GetCachedSize(), target, stream);
  }

  // optional uint32 edge_value = 5;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(5, this->_internal_edge_value(), target);
  }

  // optional string string_value = 6;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_string_value().data(), static_cast<int>(this->_internal_string_value().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.GenericValue.string_value");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_string_value(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Option.GenericValue)
  return target;
}

size_t Plugin_Option_GenericValue::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Option.GenericValue)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    // optional string string_value = 6;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_string_value());
    }

    // optional .metadata.Plugin.Option.ColorValue color_value = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.color_value_);
    }

    // optional bool bool_value = 1;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 1;
    }

    // optional sint32 int_value = 2;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_int_value());
    }

    // optional float float_value = 3;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 + 4;
    }

    // optional uint32 edge_value = 5;
    if (cached_has_bits & 0x00000020u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_edge_value());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Option_GenericValue::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Option_GenericValue::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Option_GenericValue::GetClassData() const { return &_class_data_; }


void Plugin_Option_GenericValue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Option_GenericValue*>(&to_msg);
  auto& from = static_cast<const Plugin_Option_GenericValue&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Option.GenericValue)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_string_value(from._internal_string_value());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_color_value()->::metadata::Plugin_Option_ColorValue::MergeFrom(
          from._internal_color_value());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.bool_value_ = from._impl_.bool_value_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.int_value_ = from._impl_.int_value_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.float_value_ = from._impl_.float_value_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.edge_value_ = from._impl_.edge_value_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Option_GenericValue::CopyFrom(const Plugin_Option_GenericValue& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Option.GenericValue)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Option_GenericValue::IsInitialized() const {
  return true;
}

void Plugin_Option_GenericValue::InternalSwap(Plugin_Option_GenericValue* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.string_value_, lhs_arena,
      &other->_impl_.string_value_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Plugin_Option_GenericValue, _impl_.edge_value_)
      + sizeof(Plugin_Option_GenericValue::_impl_.edge_value_)
      - PROTOBUF_FIELD_OFFSET(Plugin_Option_GenericValue, _impl_.color_value_)>(
          reinterpret_cast<char*>(&_impl_.color_value_),
          reinterpret_cast<char*>(&other->_impl_.color_value_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Option_GenericValue::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[4]);
}

// ===================================================================

class Plugin_Option_IntDescription::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin_Option_IntDescription>()._impl_._has_bits_);
  static void set_has_value(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000003) ^ 0x00000003) != 0;
  }
};

Plugin_Option_IntDescription::Plugin_Option_IntDescription(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Option.IntDescription)
}
Plugin_Option_IntDescription::Plugin_Option_IntDescription(const Plugin_Option_IntDescription& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Option_IntDescription* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.name_){}
    , decltype(_impl_.value_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_name()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.value_ = from._impl_.value_;
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Option.IntDescription)
}

inline void Plugin_Option_IntDescription::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.name_){}
    , decltype(_impl_.value_){0}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Plugin_Option_IntDescription::~Plugin_Option_IntDescription() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Option.IntDescription)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Option_IntDescription::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
}

void Plugin_Option_IntDescription::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Option_IntDescription::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Option.IntDescription)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.name_.ClearNonDefaultToEmpty();
  }
  _impl_.value_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Option_IntDescription::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required sint32 value = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_value(&has_bits);
          _impl_.value_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // required string name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.IntDescription.name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Option_IntDescription::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Option.IntDescription)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required sint32 value = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(1, this->_internal_value(), target);
  }

  // required string name = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.IntDescription.name");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Option.IntDescription)
  return target;
}

size_t Plugin_Option_IntDescription::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:metadata.Plugin.Option.IntDescription)
  size_t total_size = 0;

  if (_internal_has_name()) {
    // required string name = 2;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  if (_internal_has_value()) {
    // required sint32 value = 1;
    total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_value());
  }

  return total_size;
}
size_t Plugin_Option_IntDescription::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Option.IntDescription)
  size_t total_size = 0;

  if (((_impl_._has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
    // required string name = 2;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());

    // required sint32 value = 1;
    total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_value());

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Option_IntDescription::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Option_IntDescription::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Option_IntDescription::GetClassData() const { return &_class_data_; }


void Plugin_Option_IntDescription::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Option_IntDescription*>(&to_msg);
  auto& from = static_cast<const Plugin_Option_IntDescription&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Option.IntDescription)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.value_ = from._impl_.value_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Option_IntDescription::CopyFrom(const Plugin_Option_IntDescription& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Option.IntDescription)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Option_IntDescription::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  return true;
}

void Plugin_Option_IntDescription::InternalSwap(Plugin_Option_IntDescription* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  swap(_impl_.value_, other->_impl_.value_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Option_IntDescription::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[5]);
}

// ===================================================================

class Plugin_Option_StringRestriction::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin_Option_StringRestriction>()._impl_._has_bits_);
  static void set_has_value(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000003) ^ 0x00000003) != 0;
  }
};

Plugin_Option_StringRestriction::Plugin_Option_StringRestriction(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Option.StringRestriction)
}
Plugin_Option_StringRestriction::Plugin_Option_StringRestriction(const Plugin_Option_StringRestriction& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Option_StringRestriction* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.value_){}
    , decltype(_impl_.name_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.value_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.value_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_value()) {
    _this->_impl_.value_.Set(from._internal_value(), 
      _this->GetArenaForAllocation());
  }
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_name()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Option.StringRestriction)
}

inline void Plugin_Option_StringRestriction::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.value_){}
    , decltype(_impl_.name_){}
  };
  _impl_.value_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.value_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Plugin_Option_StringRestriction::~Plugin_Option_StringRestriction() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Option.StringRestriction)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Option_StringRestriction::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.value_.Destroy();
  _impl_.name_.Destroy();
}

void Plugin_Option_StringRestriction::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Option_StringRestriction::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Option.StringRestriction)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.value_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.name_.ClearNonDefaultToEmpty();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Option_StringRestriction::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required string value = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_value();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.StringRestriction.value");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // required string name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.StringRestriction.name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Option_StringRestriction::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Option.StringRestriction)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required string value = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_value().data(), static_cast<int>(this->_internal_value().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.StringRestriction.value");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_value(), target);
  }

  // required string name = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.StringRestriction.name");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Option.StringRestriction)
  return target;
}

size_t Plugin_Option_StringRestriction::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:metadata.Plugin.Option.StringRestriction)
  size_t total_size = 0;

  if (_internal_has_value()) {
    // required string value = 1;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_value());
  }

  if (_internal_has_name()) {
    // required string name = 2;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  return total_size;
}
size_t Plugin_Option_StringRestriction::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Option.StringRestriction)
  size_t total_size = 0;

  if (((_impl_._has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
    // required string value = 1;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_value());

    // required string name = 2;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Option_StringRestriction::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Option_StringRestriction::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Option_StringRestriction::GetClassData() const { return &_class_data_; }


void Plugin_Option_StringRestriction::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Option_StringRestriction*>(&to_msg);
  auto& from = static_cast<const Plugin_Option_StringRestriction&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Option.StringRestriction)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_value(from._internal_value());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_name(from._internal_name());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Option_StringRestriction::CopyFrom(const Plugin_Option_StringRestriction& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Option.StringRestriction)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Option_StringRestriction::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  return true;
}

void Plugin_Option_StringRestriction::InternalSwap(Plugin_Option_StringRestriction* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.value_, lhs_arena,
      &other->_impl_.value_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Option_StringRestriction::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[6]);
}

// ===================================================================

class Plugin_Option::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin_Option>()._impl_._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_type(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_list_type(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_short_desc(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_long_desc(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_group_id(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_subgroup_id(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_read_only(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_extensible(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_sort_start(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_int_min(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_int_max(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_float_min(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_float_max(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_precision(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_hints(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_passive_grab(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_internal(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_nodelay(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000011) ^ 0x00000011) != 0;
  }
};

Plugin_Option::Plugin_Option(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Option)
}
Plugin_Option::Plugin_Option(const Plugin_Option& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Option* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.default_value_){from._impl_.default_value_}
    , decltype(_impl_.int_desc_){from._impl_.int_desc_}
    , decltype(_impl_.str_restriction_){from._impl_.str_restriction_}
    , decltype(_impl_.name_){}
    , decltype(_impl_.short_desc_){}
    , decltype(_impl_.long_desc_){}
    , decltype(_impl_.hints_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.list_type_){}
    , decltype(_impl_.int_min_){}
    , decltype(_impl_.int_max_){}
    , decltype(_impl_.read_only_){}
    , decltype(_impl_.extensible_){}
    , decltype(_impl_.passive_grab_){}
    , decltype(_impl_.internal_){}
    , decltype(_impl_.float_min_){}
    , decltype(_impl_.float_max_){}
    , decltype(_impl_.precision_){}
    , decltype(_impl_.nodelay_){}
    , decltype(_impl_.sort_start_){}
    , decltype(_impl_.group_id_){}
    , decltype(_impl_.subgroup_id_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_name()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.short_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.short_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_short_desc()) {
    _this->_impl_.short_desc_.Set(from._internal_short_desc(), 
      _this->GetArenaForAllocation());
  }
  _impl_.long_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.long_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_long_desc()) {
    _this->_impl_.long_desc_.Set(from._internal_long_desc(), 
      _this->GetArenaForAllocation());
  }
  _impl_.hints_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.hints_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_hints()) {
    _this->_impl_.hints_.Set(from._internal_hints(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.subgroup_id_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.subgroup_id_));
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Option)
}

inline void Plugin_Option::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.default_value_){arena}
    , decltype(_impl_.int_desc_){arena}
    , decltype(_impl_.str_restriction_){arena}
    , decltype(_impl_.name_){}
    , decltype(_impl_.short_desc_){}
    , decltype(_impl_.long_desc_){}
    , decltype(_impl_.hints_){}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.list_type_){0}
    , decltype(_impl_.int_min_){0}
    , decltype(_impl_.int_max_){0}
    , decltype(_impl_.read_only_){false}
    , decltype(_impl_.extensible_){false}
    , decltype(_impl_.passive_grab_){false}
    , decltype(_impl_.internal_){false}
    , decltype(_impl_.float_min_){0}
    , decltype(_impl_.float_max_){0}
    , decltype(_impl_.precision_){0}
    , decltype(_impl_.nodelay_){false}
    , decltype(_impl_.sort_start_){-1}
    , decltype(_impl_.group_id_){-1}
    , decltype(_impl_.subgroup_id_){-1}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.short_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.short_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.long_desc_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.long_desc_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.hints_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.hints_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Plugin_Option::~Plugin_Option() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Option)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Option::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.default_value_.~RepeatedPtrField();
  _impl_.int_desc_.~RepeatedPtrField();
  _impl_.str_restriction_.~RepeatedPtrField();
  _impl_.name_.Destroy();
  _impl_.short_desc_.Destroy();
  _impl_.long_desc_.Destroy();
  _impl_.hints_.Destroy();
}

void Plugin_Option::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Option::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Option)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.default_value_.Clear();
  _impl_.int_desc_.Clear();
  _impl_.str_restriction_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.short_desc_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      _impl_.long_desc_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      _impl_.hints_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x000000f0u) {
    ::memset(&_impl_.type_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.int_max_) -
        reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.int_max_));
  }
  if (cached_has_bits & 0x0000ff00u) {
    ::memset(&_impl_.read_only_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.nodelay_) -
        reinterpret_cast<char*>(&_impl_.read_only_)) + sizeof(_impl_.nodelay_));
  }
  if (cached_has_bits & 0x00070000u) {
    _impl_.sort_start_ = -1;
    _impl_.group_id_ = -1;
    _impl_.subgroup_id_ = -1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Option::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // required .metadata.Plugin.Option.Type type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metadata::Plugin_Option_Type_IsValid(val))) {
            _internal_set_type(static_cast<::metadata::Plugin_Option_Type>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(2, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional .metadata.Plugin.Option.Type list_type = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metadata::Plugin_Option_Type_IsValid(val))) {
            _internal_set_list_type(static_cast<::metadata::Plugin_Option_Type>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(3, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional string short_desc = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_short_desc();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.short_desc");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string long_desc = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_long_desc();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.long_desc");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional sint32 group_id = 6 [default = -1];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _Internal::set_has_group_id(&has_bits);
          _impl_.group_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional sint32 subgroup_id = 7 [default = -1];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_subgroup_id(&has_bits);
          _impl_.subgroup_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool read_only = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _Internal::set_has_read_only(&has_bits);
          _impl_.read_only_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool extensible = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _Internal::set_has_extensible(&has_bits);
          _impl_.extensible_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional sint32 sort_start = 10 [default = -1];
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 80)) {
          _Internal::set_has_sort_start(&has_bits);
          _impl_.sort_start_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .metadata.Plugin.Option.GenericValue default_value = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_default_value(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional sint32 int_min = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _Internal::set_has_int_min(&has_bits);
          _impl_.int_min_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional sint32 int_max = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          _Internal::set_has_int_max(&has_bits);
          _impl_.int_max_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .metadata.Plugin.Option.IntDescription int_desc = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_int_desc(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<114>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional float float_min = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 125)) {
          _Internal::set_has_float_min(&has_bits);
          _impl_.float_min_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // optional float float_max = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 133)) {
          _Internal::set_has_float_max(&has_bits);
          _impl_.float_max_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // optional float precision = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 141)) {
          _Internal::set_has_precision(&has_bits);
          _impl_.precision_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .metadata.Plugin.Option.StringRestriction str_restriction = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 146)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_str_restriction(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<146>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional string hints = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 154)) {
          auto str = _internal_mutable_hints();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Option.hints");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional bool passive_grab = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 160)) {
          _Internal::set_has_passive_grab(&has_bits);
          _impl_.passive_grab_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool internal = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 168)) {
          _Internal::set_has_internal(&has_bits);
          _impl_.internal_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool nodelay = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 176)) {
          _Internal::set_has_nodelay(&has_bits);
          _impl_.nodelay_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Option::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Option)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // required .metadata.Plugin.Option.Type type = 2;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      2, this->_internal_type(), target);
  }

  // optional .metadata.Plugin.Option.Type list_type = 3;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      3, this->_internal_list_type(), target);
  }

  // optional string short_desc = 4;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_short_desc().data(), static_cast<int>(this->_internal_short_desc().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.short_desc");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_short_desc(), target);
  }

  // optional string long_desc = 5;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_long_desc().data(), static_cast<int>(this->_internal_long_desc().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.long_desc");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_long_desc(), target);
  }

  // optional sint32 group_id = 6 [default = -1];
  if (cached_has_bits & 0x00020000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(6, this->_internal_group_id(), target);
  }

  // optional sint32 subgroup_id = 7 [default = -1];
  if (cached_has_bits & 0x00040000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(7, this->_internal_subgroup_id(), target);
  }

  // optional bool read_only = 8;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(8, this->_internal_read_only(), target);
  }

  // optional bool extensible = 9;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(9, this->_internal_extensible(), target);
  }

  // optional sint32 sort_start = 10 [default = -1];
  if (cached_has_bits & 0x00010000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(10, this->_internal_sort_start(), target);
  }

  // repeated .metadata.Plugin.Option.GenericValue default_value = 11;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_default_value_size()); i < n; i++) {
    const auto& repfield = this->_internal_default_value(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(11, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional sint32 int_min = 12;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(12, this->_internal_int_min(), target);
  }

  // optional sint32 int_max = 13;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(13, this->_internal_int_max(), target);
  }

  // repeated .metadata.Plugin.Option.IntDescription int_desc = 14;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_int_desc_size()); i < n; i++) {
    const auto& repfield = this->_internal_int_desc(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(14, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional float float_min = 15;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(15, this->_internal_float_min(), target);
  }

  // optional float float_max = 16;
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(16, this->_internal_float_max(), target);
  }

  // optional float precision = 17;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(17, this->_internal_precision(), target);
  }

  // repeated .metadata.Plugin.Option.StringRestriction str_restriction = 18;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_str_restriction_size()); i < n; i++) {
    const auto& repfield = this->_internal_str_restriction(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(18, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional string hints = 19;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_hints().data(), static_cast<int>(this->_internal_hints().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Option.hints");
    target = stream->WriteStringMaybeAliased(
        19, this->_internal_hints(), target);
  }

  // optional bool passive_grab = 20;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(20, this->_internal_passive_grab(), target);
  }

  // optional bool internal = 21;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(21, this->_internal_internal(), target);
  }

  // optional bool nodelay = 22;
  if (cached_has_bits & 0x00008000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(22, this->_internal_nodelay(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Option)
  return target;
}

size_t Plugin_Option::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:metadata.Plugin.Option)
  size_t total_size = 0;

  if (_internal_has_name()) {
    // required string name = 1;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  if (_internal_has_type()) {
    // required .metadata.Plugin.Option.Type type = 2;
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  return total_size;
}
size_t Plugin_Option::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Option)
  size_t total_size = 0;

  if (((_impl_._has_bits_[0] & 0x00000011) ^ 0x00000011) == 0) {  // All required fields are present.
    // required string name = 1;
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());

    // required .metadata.Plugin.Option.Type type = 2;
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .metadata.Plugin.Option.GenericValue default_value = 11;
  total_size += 1UL * this->_internal_default_value_size();
  for (const auto& msg : this->_impl_.default_value_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .metadata.Plugin.Option.IntDescription int_desc = 14;
  total_size += 1UL * this->_internal_int_desc_size();
  for (const auto& msg : this->_impl_.int_desc_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .metadata.Plugin.Option.StringRestriction str_restriction = 18;
  total_size += 2UL * this->_internal_str_restriction_size();
  for (const auto& msg : this->_impl_.str_restriction_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000eu) {
    // optional string short_desc = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_short_desc());
    }

    // optional string long_desc = 5;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_long_desc());
    }

    // optional string hints = 19;
    if (cached_has_bits & 0x00000008u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_hints());
    }

  }
  if (cached_has_bits & 0x000000e0u) {
    // optional .metadata.Plugin.Option.Type list_type = 3;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::_pbi::WireFormatLite::EnumSize(this->_internal_list_type());
    }

    // optional sint32 int_min = 12;
    if (cached_has_bits & 0x00000040u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_int_min());
    }

    // optional sint32 int_max = 13;
    if (cached_has_bits & 0x00000080u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_int_max());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional bool read_only = 8;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 + 1;
    }

    // optional bool extensible = 9;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 + 1;
    }

    // optional bool passive_grab = 20;
    if (cached_has_bits & 0x00000400u) {
      total_size += 2 + 1;
    }

    // optional bool internal = 21;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 + 1;
    }

    // optional float float_min = 15;
    if (cached_has_bits & 0x00001000u) {
      total_size += 1 + 4;
    }

    // optional float float_max = 16;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 + 4;
    }

    // optional float precision = 17;
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 + 4;
    }

    // optional bool nodelay = 22;
    if (cached_has_bits & 0x00008000u) {
      total_size += 2 + 1;
    }

  }
  if (cached_has_bits & 0x00070000u) {
    // optional sint32 sort_start = 10 [default = -1];
    if (cached_has_bits & 0x00010000u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_sort_start());
    }

    // optional sint32 group_id = 6 [default = -1];
    if (cached_has_bits & 0x00020000u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_group_id());
    }

    // optional sint32 subgroup_id = 7 [default = -1];
    if (cached_has_bits & 0x00040000u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_subgroup_id());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Option::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Option::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Option::GetClassData() const { return &_class_data_; }


void Plugin_Option::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Option*>(&to_msg);
  auto& from = static_cast<const Plugin_Option&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Option)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.default_value_.MergeFrom(from._impl_.default_value_);
  _this->_impl_.int_desc_.MergeFrom(from._impl_.int_desc_);
  _this->_impl_.str_restriction_.MergeFrom(from._impl_.str_restriction_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_short_desc(from._internal_short_desc());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_set_long_desc(from._internal_long_desc());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_set_hints(from._internal_hints());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.type_ = from._impl_.type_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.list_type_ = from._impl_.list_type_;
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.int_min_ = from._impl_.int_min_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.int_max_ = from._impl_.int_max_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_impl_.read_only_ = from._impl_.read_only_;
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.extensible_ = from._impl_.extensible_;
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_impl_.passive_grab_ = from._impl_.passive_grab_;
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_impl_.internal_ = from._impl_.internal_;
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_impl_.float_min_ = from._impl_.float_min_;
    }
    if (cached_has_bits & 0x00002000u) {
      _this->_impl_.float_max_ = from._impl_.float_max_;
    }
    if (cached_has_bits & 0x00004000u) {
      _this->_impl_.precision_ = from._impl_.precision_;
    }
    if (cached_has_bits & 0x00008000u) {
      _this->_impl_.nodelay_ = from._impl_.nodelay_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00070000u) {
    if (cached_has_bits & 0x00010000u) {
      _this->_impl_.sort_start_ = from._impl_.sort_start_;
    }
    if (cached_has_bits & 0x00020000u) {
      _this->_impl_.group_id_ = from._impl_.group_id_;
    }
    if (cached_has_bits & 0x00040000u) {
      _this->_impl_.subgroup_id_ = from._impl_.subgroup_id_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Option::CopyFrom(const Plugin_Option& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Option)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Option::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_impl_.int_desc_))
    return false;
  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_impl_.str_restriction_))
    return false;
  return true;
}

void Plugin_Option::InternalSwap(Plugin_Option* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.default_value_.InternalSwap(&other->_impl_.default_value_);
  _impl_.int_desc_.InternalSwap(&other->_impl_.int_desc_);
  _impl_.str_restriction_.InternalSwap(&other->_impl_.str_restriction_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.short_desc_, lhs_arena,
      &other->_impl_.short_desc_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.long_desc_, lhs_arena,
      &other->_impl_.long_desc_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.hints_, lhs_arena,
      &other->_impl_.hints_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Plugin_Option, _impl_.nodelay_)
      + sizeof(Plugin_Option::_impl_.nodelay_)
      - PROTOBUF_FIELD_OFFSET(Plugin_Option, _impl_.type_)>(
          reinterpret_cast<char*>(&_impl_.type_),
          reinterpret_cast<char*>(&other->_impl_.type_));
  swap(_impl_.sort_start_, other->_impl_.sort_start_);
  swap(_impl_.group_id_, other->_impl_.group_id_);
  swap(_impl_.subgroup_id_, other->_impl_.subgroup_id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Option::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[7]);
}

// ===================================================================

class Plugin_Extension::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin_Extension>()._impl_._has_bits_);
  static void set_has_base_plugin(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000001) ^ 0x00000001) != 0;
  }
};

Plugin_Extension::Plugin_Extension(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Extension)
}
Plugin_Extension::Plugin_Extension(const Plugin_Extension& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Extension* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.base_option_){from._impl_.base_option_}
    , decltype(_impl_.str_restriction_){from._impl_.str_restriction_}
    , decltype(_impl_.base_plugin_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.base_plugin_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.base_plugin_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_base_plugin()) {
    _this->_impl_.base_plugin_.Set(from._internal_base_plugin(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Extension)
}

inline void Plugin_Extension::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.base_option_){arena}
    , decltype(_impl_.str_restriction_){arena}
    , decltype(_impl_.base_plugin_){}
  };
  _impl_.base_plugin_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.base_plugin_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Plugin_Extension::~Plugin_Extension() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Extension)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Extension::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.base_option_.~RepeatedPtrField();
  _impl_.str_restriction_.~RepeatedPtrField();
  _impl_.base_plugin_.Destroy();
}

void Plugin_Extension::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Extension::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Extension)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.base_option_.Clear();
  _impl_.str_restriction_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.base_plugin_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Extension::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required string base_plugin = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_base_plugin();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "metadata.Plugin.Extension.base_plugin");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // repeated string base_option = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_base_option();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.Plugin.Extension.base_option");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .metadata.Plugin.Option.StringRestriction str_restriction = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_str_restriction(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Extension::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Extension)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required string base_plugin = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_base_plugin().data(), static_cast<int>(this->_internal_base_plugin().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Extension.base_plugin");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_base_plugin(), target);
  }

  // repeated string base_option = 2;
  for (int i = 0, n = this->_internal_base_option_size(); i < n; i++) {
    const auto& s = this->_internal_base_option(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Extension.base_option");
    target = stream->WriteString(2, s, target);
  }

  // repeated .metadata.Plugin.Option.StringRestriction str_restriction = 3;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_str_restriction_size()); i < n; i++) {
    const auto& repfield = this->_internal_str_restriction(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Extension)
  return target;
}

size_t Plugin_Extension::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Extension)
  size_t total_size = 0;

  // required string base_plugin = 1;
  if (_internal_has_base_plugin()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_base_plugin());
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string base_option = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.base_option_.size());
  for (int i = 0, n = _impl_.base_option_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.base_option_.Get(i));
  }

  // repeated .metadata.Plugin.Option.StringRestriction str_restriction = 3;
  total_size += 1UL * this->_internal_str_restriction_size();
  for (const auto& msg : this->_impl_.str_restriction_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Extension::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Extension::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Extension::GetClassData() const { return &_class_data_; }


void Plugin_Extension::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Extension*>(&to_msg);
  auto& from = static_cast<const Plugin_Extension&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Extension)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.base_option_.MergeFrom(from._impl_.base_option_);
  _this->_impl_.str_restriction_.MergeFrom(from._impl_.str_restriction_);
  if (from._internal_has_base_plugin()) {
    _this->_internal_set_base_plugin(from._internal_base_plugin());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Extension::CopyFrom(const Plugin_Extension& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Extension)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Extension::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_impl_.str_restriction_))
    return false;
  return true;
}

void Plugin_Extension::InternalSwap(Plugin_Extension* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.base_option_.InternalSwap(&other->_impl_.base_option_);
  _impl_.str_restriction_.InternalSwap(&other->_impl_.str_restriction_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.base_plugin_, lhs_arena,
      &other->_impl_.base_plugin_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Extension::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[8]);
}

// ===================================================================

class Plugin_Screen::_Internal {
 public:
};

Plugin_Screen::Plugin_Screen(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin.Screen)
}
Plugin_Screen::Plugin_Screen(const Plugin_Screen& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin_Screen* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.option_){from._impl_.option_}
    , decltype(_impl_.group_desc_){from._impl_.group_desc_}
    , decltype(_impl_.subgroup_desc_){from._impl_.subgroup_desc_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin.Screen)
}

inline void Plugin_Screen::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.option_){arena}
    , decltype(_impl_.group_desc_){arena}
    , decltype(_impl_.subgroup_desc_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

Plugin_Screen::~Plugin_Screen() {
  // @@protoc_insertion_point(destructor:metadata.Plugin.Screen)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin_Screen::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.option_.~RepeatedPtrField();
  _impl_.group_desc_.~RepeatedPtrField();
  _impl_.subgroup_desc_.~RepeatedPtrField();
}

void Plugin_Screen::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin_Screen::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin.Screen)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.option_.Clear();
  _impl_.group_desc_.Clear();
  _impl_.subgroup_desc_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin_Screen::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .metadata.Plugin.Option option = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string group_desc = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_group_desc();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.Plugin.Screen.group_desc");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string subgroup_desc = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_subgroup_desc();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "metadata.Plugin.Screen.subgroup_desc");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin_Screen::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin.Screen)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .metadata.Plugin.Option option = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_option_size()); i < n; i++) {
    const auto& repfield = this->_internal_option(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated string group_desc = 2;
  for (int i = 0, n = this->_internal_group_desc_size(); i < n; i++) {
    const auto& s = this->_internal_group_desc(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Screen.group_desc");
    target = stream->WriteString(2, s, target);
  }

  // repeated string subgroup_desc = 3;
  for (int i = 0, n = this->_internal_subgroup_desc_size(); i < n; i++) {
    const auto& s = this->_internal_subgroup_desc(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "metadata.Plugin.Screen.subgroup_desc");
    target = stream->WriteString(3, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin.Screen)
  return target;
}

size_t Plugin_Screen::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin.Screen)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .metadata.Plugin.Option option = 1;
  total_size += 1UL * this->_internal_option_size();
  for (const auto& msg : this->_impl_.option_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated string group_desc = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.group_desc_.size());
  for (int i = 0, n = _impl_.group_desc_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.group_desc_.Get(i));
  }

  // repeated string subgroup_desc = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.subgroup_desc_.size());
  for (int i = 0, n = _impl_.subgroup_desc_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.subgroup_desc_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin_Screen::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin_Screen::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin_Screen::GetClassData() const { return &_class_data_; }


void Plugin_Screen::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin_Screen*>(&to_msg);
  auto& from = static_cast<const Plugin_Screen&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin.Screen)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.option_.MergeFrom(from._impl_.option_);
  _this->_impl_.group_desc_.MergeFrom(from._impl_.group_desc_);
  _this->_impl_.subgroup_desc_.MergeFrom(from._impl_.subgroup_desc_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin_Screen::CopyFrom(const Plugin_Screen& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin.Screen)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin_Screen::IsInitialized() const {
  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_impl_.option_))
    return false;
  return true;
}

void Plugin_Screen::InternalSwap(Plugin_Screen* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.option_.InternalSwap(&other->_impl_.option_);
  _impl_.group_desc_.InternalSwap(&other->_impl_.group_desc_);
  _impl_.subgroup_desc_.InternalSwap(&other->_impl_.subgroup_desc_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin_Screen::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[9]);
}

// ===================================================================

class Plugin::_Internal {
 public:
  using HasBits = decltype(std::declval<Plugin>()._impl_._has_bits_);
  static const ::metadata::PluginInfo& info(const Plugin* msg);
  static void set_has_info(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::metadata::Plugin_Screen& screen(const Plugin* msg);
  static void set_has_screen(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000001) ^ 0x00000001) != 0;
  }
};

const ::metadata::PluginInfo&
Plugin::_Internal::info(const Plugin* msg) {
  return *msg->_impl_.info_;
}
const ::metadata::Plugin_Screen&
Plugin::_Internal::screen(const Plugin* msg) {
  return *msg->_impl_.screen_;
}
Plugin::Plugin(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:metadata.Plugin)
}
Plugin::Plugin(const Plugin& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Plugin* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.extension_){from._impl_.extension_}
    , decltype(_impl_.info_){nullptr}
    , decltype(_impl_.screen_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_info()) {
    _this->_impl_.info_ = new ::metadata::PluginInfo(*from._impl_.info_);
  }
  if (from._internal_has_screen()) {
    _this->_impl_.screen_ = new ::metadata::Plugin_Screen(*from._impl_.screen_);
  }
  // @@protoc_insertion_point(copy_constructor:metadata.Plugin)
}

inline void Plugin::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.extension_){arena}
    , decltype(_impl_.info_){nullptr}
    , decltype(_impl_.screen_){nullptr}
  };
}

Plugin::~Plugin() {
  // @@protoc_insertion_point(destructor:metadata.Plugin)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Plugin::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.extension_.~RepeatedPtrField();
  if (this != internal_default_instance()) delete _impl_.info_;
  if (this != internal_default_instance()) delete _impl_.screen_;
}

void Plugin::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Plugin::Clear() {
// @@protoc_insertion_point(message_clear_start:metadata.Plugin)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.extension_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(_impl_.info_ != nullptr);
      _impl_.info_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.screen_ != nullptr);
      _impl_.screen_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Plugin::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required .metadata.PluginInfo info = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_info(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .metadata.Plugin.Screen screen = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_screen(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .metadata.Plugin.Extension extension = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_extension(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Plugin::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:metadata.Plugin)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // required .metadata.PluginInfo info = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::info(this),
        _Internal::info(this).GetCachedSize(), target, stream);
  }

  // optional .metadata.Plugin.Screen screen = 2;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::screen(this),
        _Internal::screen(this).GetCachedSize(), target, stream);
  }

  // repeated .metadata.Plugin.Extension extension = 3;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_extension_size()); i < n; i++) {
    const auto& repfield = this->_internal_extension(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:metadata.Plugin)
  return target;
}

size_t Plugin::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metadata.Plugin)
  size_t total_size = 0;

  // required .metadata.PluginInfo info = 1;
  if (_internal_has_info()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.info_);
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .metadata.Plugin.Extension extension = 3;
  total_size += 1UL * this->_internal_extension_size();
  for (const auto& msg : this->_impl_.extension_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // optional .metadata.Plugin.Screen screen = 2;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000002u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.screen_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Plugin::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Plugin::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Plugin::GetClassData() const { return &_class_data_; }


void Plugin::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Plugin*>(&to_msg);
  auto& from = static_cast<const Plugin&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:metadata.Plugin)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.extension_.MergeFrom(from._impl_.extension_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_info()->::metadata::PluginInfo::MergeFrom(
          from._internal_info());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_screen()->::metadata::Plugin_Screen::MergeFrom(
          from._internal_screen());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Plugin::CopyFrom(const Plugin& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metadata.Plugin)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Plugin::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_impl_.extension_))
    return false;
  if (_internal_has_info()) {
    if (!_impl_.info_->IsInitialized()) return false;
  }
  if (_internal_has_screen()) {
    if (!_impl_.screen_->IsInitialized()) return false;
  }
  return true;
}

void Plugin::InternalSwap(Plugin* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.extension_.InternalSwap(&other->_impl_.extension_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Plugin, _impl_.screen_)
      + sizeof(Plugin::_impl_.screen_)
      - PROTOBUF_FIELD_OFFSET(Plugin, _impl_.info_)>(
          reinterpret_cast<char*>(&_impl_.info_),
          reinterpret_cast<char*>(&other->_impl_.info_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Plugin::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_compizconfig_2eproto_getter, &descriptor_table_compizconfig_2eproto_once,
      file_level_metadata_compizconfig_2eproto[10]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace metadata
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::metadata::PluginInfo_Dependencies*
Arena::CreateMaybeMessage< ::metadata::PluginInfo_Dependencies >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::PluginInfo_Dependencies >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::PluginInfo*
Arena::CreateMaybeMessage< ::metadata::PluginInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::PluginInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::PluginBrief*
Arena::CreateMaybeMessage< ::metadata::PluginBrief >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::PluginBrief >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Option_ColorValue*
Arena::CreateMaybeMessage< ::metadata::Plugin_Option_ColorValue >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Option_ColorValue >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Option_GenericValue*
Arena::CreateMaybeMessage< ::metadata::Plugin_Option_GenericValue >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Option_GenericValue >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Option_IntDescription*
Arena::CreateMaybeMessage< ::metadata::Plugin_Option_IntDescription >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Option_IntDescription >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Option_StringRestriction*
Arena::CreateMaybeMessage< ::metadata::Plugin_Option_StringRestriction >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Option_StringRestriction >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Option*
Arena::CreateMaybeMessage< ::metadata::Plugin_Option >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Option >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Extension*
Arena::CreateMaybeMessage< ::metadata::Plugin_Extension >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Extension >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin_Screen*
Arena::CreateMaybeMessage< ::metadata::Plugin_Screen >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin_Screen >(arena);
}
template<> PROTOBUF_NOINLINE ::metadata::Plugin*
Arena::CreateMaybeMessage< ::metadata::Plugin >(Arena* arena) {
  return Arena::CreateMessageInternal< ::metadata::Plugin >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
