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

package com.acme.glup;

public final class MetadataProto {
  private MetadataProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
    registry.add(com.acme.glup.MetadataProto.glup);
    registry.add(com.acme.glup.MetadataProto.containsNullableFields);
    registry.add(com.acme.glup.MetadataProto.glupfield);
    registry.add(com.acme.glup.MetadataProto.jsonMapping);
    registry.add(com.acme.glup.MetadataProto.json);
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * It describes the currently supported partitioning scheme
   * </pre>
   *
   * Protobuf enum {@code Acme.Glup.PartitionScheme}
   */
  public enum PartitionScheme
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNSUPPORTED_PARTITION_SCHEME = 0;</code>
     */
    UNSUPPORTED_PARTITION_SCHEME(0),
    /**
     * <pre>
     * Deprecated, use PLATFORM_HOURLY instead 
     * </pre>
     *
     * <code>DAILY = 2;</code>
     */
    DAILY(2),
    /**
     * <code>HOURLY = 3;</code>
     */
    HOURLY(3),
    /**
     * <code>PLATFORM_HOURLY = 4;</code>
     */
    PLATFORM_HOURLY(4),
    /**
     * <code>EVENTTYPE_PLATFORM_HOURLY = 5;</code>
     */
    EVENTTYPE_PLATFORM_HOURLY(5),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNSUPPORTED_PARTITION_SCHEME = 0;</code>
     */
    public static final int UNSUPPORTED_PARTITION_SCHEME_VALUE = 0;
    /**
     * <pre>
     * Deprecated, use PLATFORM_HOURLY instead 
     * </pre>
     *
     * <code>DAILY = 2;</code>
     */
    public static final int DAILY_VALUE = 2;
    /**
     * <code>HOURLY = 3;</code>
     */
    public static final int HOURLY_VALUE = 3;
    /**
     * <code>PLATFORM_HOURLY = 4;</code>
     */
    public static final int PLATFORM_HOURLY_VALUE = 4;
    /**
     * <code>EVENTTYPE_PLATFORM_HOURLY = 5;</code>
     */
    public static final int EVENTTYPE_PLATFORM_HOURLY_VALUE = 5;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static PartitionScheme valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static PartitionScheme forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_PARTITION_SCHEME;
        case 2: return DAILY;
        case 3: return HOURLY;
        case 4: return PLATFORM_HOURLY;
        case 5: return EVENTTYPE_PLATFORM_HOURLY;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PartitionScheme>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PartitionScheme> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PartitionScheme>() {
            public PartitionScheme findValueByNumber(int number) {
              return PartitionScheme.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(0);
    }

    private static final PartitionScheme[] VALUES = values();

    public static PartitionScheme valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private PartitionScheme(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.PartitionScheme)
  }

  /**
   * Protobuf enum {@code Acme.Glup.MessageFormat}
   */
  public enum MessageFormat
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNSUPPORTED_FORMAT = 0;</code>
     */
    UNSUPPORTED_FORMAT(0),
    /**
     * <code>JSON = 1;</code>
     */
    JSON(1),
    /**
     * <code>PROTOBUF = 2;</code>
     */
    PROTOBUF(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNSUPPORTED_FORMAT = 0;</code>
     */
    public static final int UNSUPPORTED_FORMAT_VALUE = 0;
    /**
     * <code>JSON = 1;</code>
     */
    public static final int JSON_VALUE = 1;
    /**
     * <code>PROTOBUF = 2;</code>
     */
    public static final int PROTOBUF_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static MessageFormat valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static MessageFormat forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_FORMAT;
        case 1: return JSON;
        case 2: return PROTOBUF;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<MessageFormat>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        MessageFormat> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<MessageFormat>() {
            public MessageFormat findValueByNumber(int number) {
              return MessageFormat.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(1);
    }

    private static final MessageFormat[] VALUES = values();

    public static MessageFormat valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private MessageFormat(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.MessageFormat)
  }

  /**
   * <pre>
   * It describes the currently supported data on HDFS, usually partitioned in PAIL files
   * </pre>
   *
   * Protobuf enum {@code Acme.Glup.HDFSDataFormat}
   */
  public enum HDFSDataFormat
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNSUPPORTED_DATA_FORMAT = 0;</code>
     */
    UNSUPPORTED_DATA_FORMAT(0),
    /**
     * <code>JSON_PAIL = 2;</code>
     */
    JSON_PAIL(2),
    /**
     * <code>PROTOBUF_SEQ = 3;</code>
     */
    PROTOBUF_SEQ(3),
    /**
     * <code>PROTOBUF_PARQUET = 4;</code>
     */
    PROTOBUF_PARQUET(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNSUPPORTED_DATA_FORMAT = 0;</code>
     */
    public static final int UNSUPPORTED_DATA_FORMAT_VALUE = 0;
    /**
     * <code>JSON_PAIL = 2;</code>
     */
    public static final int JSON_PAIL_VALUE = 2;
    /**
     * <code>PROTOBUF_SEQ = 3;</code>
     */
    public static final int PROTOBUF_SEQ_VALUE = 3;
    /**
     * <code>PROTOBUF_PARQUET = 4;</code>
     */
    public static final int PROTOBUF_PARQUET_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static HDFSDataFormat valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static HDFSDataFormat forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_DATA_FORMAT;
        case 2: return JSON_PAIL;
        case 3: return PROTOBUF_SEQ;
        case 4: return PROTOBUF_PARQUET;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<HDFSDataFormat>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        HDFSDataFormat> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<HDFSDataFormat>() {
            public HDFSDataFormat findValueByNumber(int number) {
              return HDFSDataFormat.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(2);
    }

    private static final HDFSDataFormat[] VALUES = values();

    public static HDFSDataFormat valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private HDFSDataFormat(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.HDFSDataFormat)
  }

  /**
   * Protobuf enum {@code Acme.Glup.DataSetKind}
   */
  public enum DataSetKind
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNSUPPORTED_KIND = 0;</code>
     */
    UNSUPPORTED_KIND(0),
    /**
     * <code>TIMESERIES = 1;</code>
     */
    TIMESERIES(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNSUPPORTED_KIND = 0;</code>
     */
    public static final int UNSUPPORTED_KIND_VALUE = 0;
    /**
     * <code>TIMESERIES = 1;</code>
     */
    public static final int TIMESERIES_VALUE = 1;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static DataSetKind valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static DataSetKind forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_KIND;
        case 1: return TIMESERIES;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<DataSetKind>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        DataSetKind> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<DataSetKind>() {
            public DataSetKind findValueByNumber(int number) {
              return DataSetKind.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(3);
    }

    private static final DataSetKind[] VALUES = values();

    public static DataSetKind valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private DataSetKind(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.DataSetKind)
  }

  /**
   * Protobuf enum {@code Acme.Glup.MonitoringLevel}
   */
  public enum MonitoringLevel
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>DEFAULT = 0;</code>
     */
    DEFAULT(0),
    /**
     * <pre>
     * consensus and last_run monitoring will be skipped
     * </pre>
     *
     * <code>REMOVE_MONITORING = 1;</code>
     */
    REMOVE_MONITORING(1),
    /**
     * <pre>
     * No page for consensus or last_run monitoring
     * </pre>
     *
     * <code>INFORMATIVE_MONITORING = 2;</code>
     */
    INFORMATIVE_MONITORING(2),
    /**
     * <pre>
     * consensus monitoring will be skip but last_run will be monitored (can page)
     * </pre>
     *
     * <code>CONSENSUS_IGNORED = 3;</code>
     */
    CONSENSUS_IGNORED(3),
    /**
     * <pre>
     * consensus monitoring will be skip and last_run will be monitored as informative (no page)
     * </pre>
     *
     * <code>CONSENSUS_IGNORED_AND_INFORMATIVE_MONITORING = 4;</code>
     */
    CONSENSUS_IGNORED_AND_INFORMATIVE_MONITORING(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>DEFAULT = 0;</code>
     */
    public static final int DEFAULT_VALUE = 0;
    /**
     * <pre>
     * consensus and last_run monitoring will be skipped
     * </pre>
     *
     * <code>REMOVE_MONITORING = 1;</code>
     */
    public static final int REMOVE_MONITORING_VALUE = 1;
    /**
     * <pre>
     * No page for consensus or last_run monitoring
     * </pre>
     *
     * <code>INFORMATIVE_MONITORING = 2;</code>
     */
    public static final int INFORMATIVE_MONITORING_VALUE = 2;
    /**
     * <pre>
     * consensus monitoring will be skip but last_run will be monitored (can page)
     * </pre>
     *
     * <code>CONSENSUS_IGNORED = 3;</code>
     */
    public static final int CONSENSUS_IGNORED_VALUE = 3;
    /**
     * <pre>
     * consensus monitoring will be skip and last_run will be monitored as informative (no page)
     * </pre>
     *
     * <code>CONSENSUS_IGNORED_AND_INFORMATIVE_MONITORING = 4;</code>
     */
    public static final int CONSENSUS_IGNORED_AND_INFORMATIVE_MONITORING_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static MonitoringLevel valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static MonitoringLevel forNumber(int value) {
      switch (value) {
        case 0: return DEFAULT;
        case 1: return REMOVE_MONITORING;
        case 2: return INFORMATIVE_MONITORING;
        case 3: return CONSENSUS_IGNORED;
        case 4: return CONSENSUS_IGNORED_AND_INFORMATIVE_MONITORING;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<MonitoringLevel>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        MonitoringLevel> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<MonitoringLevel>() {
            public MonitoringLevel findValueByNumber(int number) {
              return MonitoringLevel.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(4);
    }

    private static final MonitoringLevel[] VALUES = values();

    public static MonitoringLevel valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private MonitoringLevel(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.MonitoringLevel)
  }

  /**
   * <pre>
   * Describes the emitter of a message. 
   * </pre>
   *
   * Protobuf enum {@code Acme.Glup.DataCenter}
   */
  public enum DataCenter
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * If a MARS datacenter gets added, code built before that will see
     * UNSUPPORTED_DATACENTER as the value.
     * Never emit the actual value of UNSUPPORTED_DATACENTER.
     * </pre>
     *
     * <code>UNSUPPORTED_DATACENTER = 0;</code>
     */
    UNSUPPORTED_DATACENTER(0),
    /**
     * <code>AM5 = 2;</code>
     */
    AM5(2),
    /**
     * <code>HK5 = 3;</code>
     */
    HK5(3),
    /**
     * <code>NY8 = 4;</code>
     */
    NY8(4),
    /**
     * <code>PAR = 5;</code>
     */
    PAR(5),
    /**
     * <code>PA4 = 6;</code>
     */
    PA4(6),
    /**
     * <code>SH5 = 7;</code>
     */
    SH5(7),
    /**
     * <code>SV6 = 8;</code>
     */
    SV6(8),
    /**
     * <code>TY5 = 9;</code>
     */
    TY5(9),
    /**
     * <code>VA1 = 10;</code>
     */
    VA1(10),
    /**
     * <code>AM6 = 11;</code>
     */
    AM6(11),
    /**
     * <code>DA1 = 12;</code>
     */
    DA1(12),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * If a MARS datacenter gets added, code built before that will see
     * UNSUPPORTED_DATACENTER as the value.
     * Never emit the actual value of UNSUPPORTED_DATACENTER.
     * </pre>
     *
     * <code>UNSUPPORTED_DATACENTER = 0;</code>
     */
    public static final int UNSUPPORTED_DATACENTER_VALUE = 0;
    /**
     * <code>AM5 = 2;</code>
     */
    public static final int AM5_VALUE = 2;
    /**
     * <code>HK5 = 3;</code>
     */
    public static final int HK5_VALUE = 3;
    /**
     * <code>NY8 = 4;</code>
     */
    public static final int NY8_VALUE = 4;
    /**
     * <code>PAR = 5;</code>
     */
    public static final int PAR_VALUE = 5;
    /**
     * <code>PA4 = 6;</code>
     */
    public static final int PA4_VALUE = 6;
    /**
     * <code>SH5 = 7;</code>
     */
    public static final int SH5_VALUE = 7;
    /**
     * <code>SV6 = 8;</code>
     */
    public static final int SV6_VALUE = 8;
    /**
     * <code>TY5 = 9;</code>
     */
    public static final int TY5_VALUE = 9;
    /**
     * <code>VA1 = 10;</code>
     */
    public static final int VA1_VALUE = 10;
    /**
     * <code>AM6 = 11;</code>
     */
    public static final int AM6_VALUE = 11;
    /**
     * <code>DA1 = 12;</code>
     */
    public static final int DA1_VALUE = 12;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static DataCenter valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static DataCenter forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_DATACENTER;
        case 2: return AM5;
        case 3: return HK5;
        case 4: return NY8;
        case 5: return PAR;
        case 6: return PA4;
        case 7: return SH5;
        case 8: return SV6;
        case 9: return TY5;
        case 10: return VA1;
        case 11: return AM6;
        case 12: return DA1;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<DataCenter>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        DataCenter> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<DataCenter>() {
            public DataCenter findValueByNumber(int number) {
              return DataCenter.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(5);
    }

    private static final DataCenter[] VALUES = values();

    public static DataCenter valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private DataCenter(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.DataCenter)
  }

  /**
   * Protobuf enum {@code Acme.Glup.Environment}
   */
  public enum Environment
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNSUPPORTED_ENVIRONMENT = 0;</code>
     */
    UNSUPPORTED_ENVIRONMENT(0),
    /**
     * <code>PREPROD = 1;</code>
     */
    PREPROD(1),
    /**
     * <code>PROD = 2;</code>
     */
    PROD(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNSUPPORTED_ENVIRONMENT = 0;</code>
     */
    public static final int UNSUPPORTED_ENVIRONMENT_VALUE = 0;
    /**
     * <code>PREPROD = 1;</code>
     */
    public static final int PREPROD_VALUE = 1;
    /**
     * <code>PROD = 2;</code>
     */
    public static final int PROD_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Environment valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Environment forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_ENVIRONMENT;
        case 1: return PREPROD;
        case 2: return PROD;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Environment>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Environment> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Environment>() {
            public Environment findValueByNumber(int number) {
              return Environment.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(6);
    }

    private static final Environment[] VALUES = values();

    public static Environment valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Environment(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.Environment)
  }

  /**
   * <pre>
   * Used in HourlyPlatformPartition to describe where should the message go on HDFS. 
   * </pre>
   *
   * Protobuf enum {@code Acme.Glup.Platform}
   */
  public enum Platform
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * If a MARS platform gets added, code built before that will see
     * UNSUPPORTED_PLATFORM as the value.
     * Never emit the actual value of UNSUPPORTED_PLATFORM.
     * </pre>
     *
     * <code>UNSUPPORTED_PLATFORM = 0;</code>
     */
    UNSUPPORTED_PLATFORM(0),
    /**
     * <code>EU = 2;</code>
     */
    EU(2),
    /**
     * <code>US = 3;</code>
     */
    US(3),
    /**
     * <code>AS = 4;</code>
     */
    AS(4),
    /**
     * <code>CN = 5;</code>
     */
    CN(5),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * If a MARS platform gets added, code built before that will see
     * UNSUPPORTED_PLATFORM as the value.
     * Never emit the actual value of UNSUPPORTED_PLATFORM.
     * </pre>
     *
     * <code>UNSUPPORTED_PLATFORM = 0;</code>
     */
    public static final int UNSUPPORTED_PLATFORM_VALUE = 0;
    /**
     * <code>EU = 2;</code>
     */
    public static final int EU_VALUE = 2;
    /**
     * <code>US = 3;</code>
     */
    public static final int US_VALUE = 3;
    /**
     * <code>AS = 4;</code>
     */
    public static final int AS_VALUE = 4;
    /**
     * <code>CN = 5;</code>
     */
    public static final int CN_VALUE = 5;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Platform valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Platform forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_PLATFORM;
        case 2: return EU;
        case 3: return US;
        case 4: return AS;
        case 5: return CN;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Platform>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Platform> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Platform>() {
            public Platform findValueByNumber(int number) {
              return Platform.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(7);
    }

    private static final Platform[] VALUES = values();

    public static Platform valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Platform(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.Platform)
  }

  /**
   * Protobuf enum {@code Acme.Glup.EventType}
   */
  public enum EventType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNSUPPORTED_EVENT_TYPE = 0;</code>
     */
    UNSUPPORTED_EVENT_TYPE(0),
    /**
     * <code>ItemPageView = 2;</code>
     */
    ItemPageView(2),
    /**
     * <code>Sales = 3;</code>
     */
    Sales(3),
    /**
     * <code>Basket = 4;</code>
     */
    Basket(4),
    /**
     * <code>Other = 5;</code>
     */
    Other(5),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNSUPPORTED_EVENT_TYPE = 0;</code>
     */
    public static final int UNSUPPORTED_EVENT_TYPE_VALUE = 0;
    /**
     * <code>ItemPageView = 2;</code>
     */
    public static final int ItemPageView_VALUE = 2;
    /**
     * <code>Sales = 3;</code>
     */
    public static final int Sales_VALUE = 3;
    /**
     * <code>Basket = 4;</code>
     */
    public static final int Basket_VALUE = 4;
    /**
     * <code>Other = 5;</code>
     */
    public static final int Other_VALUE = 5;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static EventType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static EventType forNumber(int value) {
      switch (value) {
        case 0: return UNSUPPORTED_EVENT_TYPE;
        case 2: return ItemPageView;
        case 3: return Sales;
        case 4: return Basket;
        case 5: return Other;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<EventType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        EventType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<EventType>() {
            public EventType findValueByNumber(int number) {
              return EventType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(8);
    }

    private static final EventType[] VALUES = values();

    public static EventType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private EventType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.EventType)
  }

  /**
   * <pre>
   * Three-state boolean to use when willing to express the absence of
   * information for a field. 
   * </pre>
   *
   * Protobuf enum {@code Acme.Glup.YesNo}
   */
  public enum YesNo
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN = 0;</code>
     */
    UNKNOWN(0),
    /**
     * <code>NO = 1;</code>
     */
    NO(1),
    /**
     * <code>YES = 2;</code>
     */
    YES(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNKNOWN = 0;</code>
     */
    public static final int UNKNOWN_VALUE = 0;
    /**
     * <code>NO = 1;</code>
     */
    public static final int NO_VALUE = 1;
    /**
     * <code>YES = 2;</code>
     */
    public static final int YES_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static YesNo valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static YesNo forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN;
        case 1: return NO;
        case 2: return YES;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<YesNo>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        YesNo> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<YesNo>() {
            public YesNo findValueByNumber(int number) {
              return YesNo.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.getDescriptor().getEnumTypes().get(9);
    }

    private static final YesNo[] VALUES = values();

    public static YesNo valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private YesNo(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Acme.Glup.YesNo)
  }

  public interface KafkaMessageOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.KafkaMessageOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string topic = 1;</code>
     * @return A list containing the topic.
     */
    java.util.List<java.lang.String>
        getTopicList();
    /**
     * <code>repeated string topic = 1;</code>
     * @return The count of topic.
     */
    int getTopicCount();
    /**
     * <code>repeated string topic = 1;</code>
     * @param index The index of the element to return.
     * @return The topic at the given index.
     */
    java.lang.String getTopic(int index);
    /**
     * <code>repeated string topic = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the topic at the given index.
     */
    com.google.protobuf.ByteString
        getTopicBytes(int index);
  }
  /**
   * <pre>
   * It holds the kafka topic name
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.KafkaMessageOptions}
   */
  public  static final class KafkaMessageOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.KafkaMessageOptions)
      KafkaMessageOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use KafkaMessageOptions.newBuilder() to construct.
    private KafkaMessageOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KafkaMessageOptions() {
      topic_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new KafkaMessageOptions();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private KafkaMessageOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                topic_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              topic_.add(s);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          topic_ = topic_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_KafkaMessageOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_KafkaMessageOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.KafkaMessageOptions.class, com.acme.glup.MetadataProto.KafkaMessageOptions.Builder.class);
    }

    public static final int TOPIC_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList topic_;
    /**
     * <code>repeated string topic = 1;</code>
     * @return A list containing the topic.
     */
    public com.google.protobuf.ProtocolStringList
        getTopicList() {
      return topic_;
    }
    /**
     * <code>repeated string topic = 1;</code>
     * @return The count of topic.
     */
    public int getTopicCount() {
      return topic_.size();
    }
    /**
     * <code>repeated string topic = 1;</code>
     * @param index The index of the element to return.
     * @return The topic at the given index.
     */
    public java.lang.String getTopic(int index) {
      return topic_.get(index);
    }
    /**
     * <code>repeated string topic = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the topic at the given index.
     */
    public com.google.protobuf.ByteString
        getTopicBytes(int index) {
      return topic_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < topic_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, topic_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < topic_.size(); i++) {
          dataSize += computeStringSizeNoTag(topic_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTopicList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.KafkaMessageOptions)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.KafkaMessageOptions other = (com.acme.glup.MetadataProto.KafkaMessageOptions) obj;

      if (!getTopicList()
          .equals(other.getTopicList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTopicCount() > 0) {
        hash = (37 * hash) + TOPIC_FIELD_NUMBER;
        hash = (53 * hash) + getTopicList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.KafkaMessageOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.KafkaMessageOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * It holds the kafka topic name
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.KafkaMessageOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.KafkaMessageOptions)
        com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_KafkaMessageOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_KafkaMessageOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.KafkaMessageOptions.class, com.acme.glup.MetadataProto.KafkaMessageOptions.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.KafkaMessageOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        topic_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_KafkaMessageOptions_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.KafkaMessageOptions getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.KafkaMessageOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.KafkaMessageOptions build() {
        com.acme.glup.MetadataProto.KafkaMessageOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.KafkaMessageOptions buildPartial() {
        com.acme.glup.MetadataProto.KafkaMessageOptions result = new com.acme.glup.MetadataProto.KafkaMessageOptions(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          topic_ = topic_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.topic_ = topic_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.KafkaMessageOptions) {
          return mergeFrom((com.acme.glup.MetadataProto.KafkaMessageOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.KafkaMessageOptions other) {
        if (other == com.acme.glup.MetadataProto.KafkaMessageOptions.getDefaultInstance()) return this;
        if (!other.topic_.isEmpty()) {
          if (topic_.isEmpty()) {
            topic_ = other.topic_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTopicIsMutable();
            topic_.addAll(other.topic_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.KafkaMessageOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.KafkaMessageOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList topic_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTopicIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          topic_ = new com.google.protobuf.LazyStringArrayList(topic_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @return A list containing the topic.
       */
      public com.google.protobuf.ProtocolStringList
          getTopicList() {
        return topic_.getUnmodifiableView();
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @return The count of topic.
       */
      public int getTopicCount() {
        return topic_.size();
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @param index The index of the element to return.
       * @return The topic at the given index.
       */
      public java.lang.String getTopic(int index) {
        return topic_.get(index);
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the topic at the given index.
       */
      public com.google.protobuf.ByteString
          getTopicBytes(int index) {
        return topic_.getByteString(index);
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @param index The index to set the value at.
       * @param value The topic to set.
       * @return This builder for chaining.
       */
      public Builder setTopic(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTopicIsMutable();
        topic_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @param value The topic to add.
       * @return This builder for chaining.
       */
      public Builder addTopic(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTopicIsMutable();
        topic_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @param values The topic to add.
       * @return This builder for chaining.
       */
      public Builder addAllTopic(
          java.lang.Iterable<java.lang.String> values) {
        ensureTopicIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, topic_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTopic() {
        topic_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string topic = 1;</code>
       * @param value The bytes of the topic to add.
       * @return This builder for chaining.
       */
      public Builder addTopicBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTopicIsMutable();
        topic_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.KafkaMessageOptions)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.KafkaMessageOptions)
    private static final com.acme.glup.MetadataProto.KafkaMessageOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.KafkaMessageOptions();
    }

    public static com.acme.glup.MetadataProto.KafkaMessageOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<KafkaMessageOptions>
        PARSER = new com.google.protobuf.AbstractParser<KafkaMessageOptions>() {
      @java.lang.Override
      public KafkaMessageOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new KafkaMessageOptions(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<KafkaMessageOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<KafkaMessageOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.KafkaMessageOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DataSetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.DataSet)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A uniq identifier for this dataset.
     * This string must be lowercase and only contain alphanumerical characters
     * or underscores.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * A uniq identifier for this dataset.
     * This string must be lowercase and only contain alphanumerical characters
     * or underscores.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    java.util.List<com.acme.glup.MetadataProto.DataSetFormat> 
        getFormatList();
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    com.acme.glup.MetadataProto.DataSetFormat getFormat(int index);
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    int getFormatCount();
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    java.util.List<? extends com.acme.glup.MetadataProto.DataSetFormatOrBuilder> 
        getFormatOrBuilderList();
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    com.acme.glup.MetadataProto.DataSetFormatOrBuilder getFormatOrBuilder(
        int index);

    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The enum numeric value on the wire for partitionScheme.
     */
    int getPartitionSchemeValue();
    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The partitionScheme.
     */
    com.acme.glup.MetadataProto.PartitionScheme getPartitionScheme();

    /**
     * <pre>
     * (Mandatory) This should be java class which will represent the dataset's schema.
     * </pre>
     *
     * <code>string java_class = 4;</code>
     * @return The javaClass.
     */
    java.lang.String getJavaClass();
    /**
     * <pre>
     * (Mandatory) This should be java class which will represent the dataset's schema.
     * </pre>
     *
     * <code>string java_class = 4;</code>
     * @return The bytes for javaClass.
     */
    com.google.protobuf.ByteString
        getJavaClassBytes();

    /**
     * <pre>
     * is this dataset a unit test dataset
     * </pre>
     *
     * <code>bool for_tests = 5;</code>
     * @return The forTests.
     */
    boolean getForTests();

    /**
     * <pre>
     * owner of this dataset
     * </pre>
     *
     * <code>string owner = 6;</code>
     * @return The owner.
     */
    java.lang.String getOwner();
    /**
     * <pre>
     * owner of this dataset
     * </pre>
     *
     * <code>string owner = 6;</code>
     * @return The bytes for owner.
     */
    com.google.protobuf.ByteString
        getOwnerBytes();

    /**
     * <pre>
     * is this dataset private
     * </pre>
     *
     * <code>bool private = 7;</code>
     * @return The private.
     */
    boolean getPrivate();

    /**
     * <pre>
     * kind of dataset
     * </pre>
     *
     * <code>.Acme.Glup.DataSetKind kind = 8;</code>
     * @return The enum numeric value on the wire for kind.
     */
    int getKindValue();
    /**
     * <pre>
     * kind of dataset
     * </pre>
     *
     * <code>.Acme.Glup.DataSetKind kind = 8;</code>
     * @return The kind.
     */
    com.acme.glup.MetadataProto.DataSetKind getKind();

    /**
     * <pre>
     * retention period (in days)
     * </pre>
     *
     * <code>int32 retention_days = 9;</code>
     * @return The retentionDays.
     */
    int getRetentionDays();
  }
  /**
   * <pre>
   * Defines a data set with its underlying available formats
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.DataSet}
   */
  public  static final class DataSet extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.DataSet)
      DataSetOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DataSet.newBuilder() to construct.
    private DataSet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DataSet() {
      id_ = "";
      format_ = java.util.Collections.emptyList();
      partitionScheme_ = 0;
      javaClass_ = "";
      owner_ = "";
      kind_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DataSet();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DataSet(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                format_ = new java.util.ArrayList<com.acme.glup.MetadataProto.DataSetFormat>();
                mutable_bitField0_ |= 0x00000001;
              }
              format_.add(
                  input.readMessage(com.acme.glup.MetadataProto.DataSetFormat.parser(), extensionRegistry));
              break;
            }
            case 24: {
              int rawValue = input.readEnum();

              partitionScheme_ = rawValue;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              javaClass_ = s;
              break;
            }
            case 40: {

              forTests_ = input.readBool();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              owner_ = s;
              break;
            }
            case 56: {

              private_ = input.readBool();
              break;
            }
            case 64: {
              int rawValue = input.readEnum();

              kind_ = rawValue;
              break;
            }
            case 72: {

              retentionDays_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          format_ = java.util.Collections.unmodifiableList(format_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSet_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSet_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.DataSet.class, com.acme.glup.MetadataProto.DataSet.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * A uniq identifier for this dataset.
     * This string must be lowercase and only contain alphanumerical characters
     * or underscores.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * A uniq identifier for this dataset.
     * This string must be lowercase and only contain alphanumerical characters
     * or underscores.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FORMAT_FIELD_NUMBER = 2;
    private java.util.List<com.acme.glup.MetadataProto.DataSetFormat> format_;
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    public java.util.List<com.acme.glup.MetadataProto.DataSetFormat> getFormatList() {
      return format_;
    }
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    public java.util.List<? extends com.acme.glup.MetadataProto.DataSetFormatOrBuilder> 
        getFormatOrBuilderList() {
      return format_;
    }
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    public int getFormatCount() {
      return format_.size();
    }
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    public com.acme.glup.MetadataProto.DataSetFormat getFormat(int index) {
      return format_.get(index);
    }
    /**
     * <pre>
     * A set of formats available for this dataset.
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
     */
    public com.acme.glup.MetadataProto.DataSetFormatOrBuilder getFormatOrBuilder(
        int index) {
      return format_.get(index);
    }

    public static final int PARTITION_SCHEME_FIELD_NUMBER = 3;
    private int partitionScheme_;
    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The enum numeric value on the wire for partitionScheme.
     */
    public int getPartitionSchemeValue() {
      return partitionScheme_;
    }
    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The partitionScheme.
     */
    public com.acme.glup.MetadataProto.PartitionScheme getPartitionScheme() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitionScheme_);
      return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
    }

    public static final int JAVA_CLASS_FIELD_NUMBER = 4;
    private volatile java.lang.Object javaClass_;
    /**
     * <pre>
     * (Mandatory) This should be java class which will represent the dataset's schema.
     * </pre>
     *
     * <code>string java_class = 4;</code>
     * @return The javaClass.
     */
    public java.lang.String getJavaClass() {
      java.lang.Object ref = javaClass_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        javaClass_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * (Mandatory) This should be java class which will represent the dataset's schema.
     * </pre>
     *
     * <code>string java_class = 4;</code>
     * @return The bytes for javaClass.
     */
    public com.google.protobuf.ByteString
        getJavaClassBytes() {
      java.lang.Object ref = javaClass_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        javaClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FOR_TESTS_FIELD_NUMBER = 5;
    private boolean forTests_;
    /**
     * <pre>
     * is this dataset a unit test dataset
     * </pre>
     *
     * <code>bool for_tests = 5;</code>
     * @return The forTests.
     */
    public boolean getForTests() {
      return forTests_;
    }

    public static final int OWNER_FIELD_NUMBER = 6;
    private volatile java.lang.Object owner_;
    /**
     * <pre>
     * owner of this dataset
     * </pre>
     *
     * <code>string owner = 6;</code>
     * @return The owner.
     */
    public java.lang.String getOwner() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        owner_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * owner of this dataset
     * </pre>
     *
     * <code>string owner = 6;</code>
     * @return The bytes for owner.
     */
    public com.google.protobuf.ByteString
        getOwnerBytes() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRIVATE_FIELD_NUMBER = 7;
    private boolean private_;
    /**
     * <pre>
     * is this dataset private
     * </pre>
     *
     * <code>bool private = 7;</code>
     * @return The private.
     */
    public boolean getPrivate() {
      return private_;
    }

    public static final int KIND_FIELD_NUMBER = 8;
    private int kind_;
    /**
     * <pre>
     * kind of dataset
     * </pre>
     *
     * <code>.Acme.Glup.DataSetKind kind = 8;</code>
     * @return The enum numeric value on the wire for kind.
     */
    public int getKindValue() {
      return kind_;
    }
    /**
     * <pre>
     * kind of dataset
     * </pre>
     *
     * <code>.Acme.Glup.DataSetKind kind = 8;</code>
     * @return The kind.
     */
    public com.acme.glup.MetadataProto.DataSetKind getKind() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.DataSetKind result = com.acme.glup.MetadataProto.DataSetKind.valueOf(kind_);
      return result == null ? com.acme.glup.MetadataProto.DataSetKind.UNRECOGNIZED : result;
    }

    public static final int RETENTION_DAYS_FIELD_NUMBER = 9;
    private int retentionDays_;
    /**
     * <pre>
     * retention period (in days)
     * </pre>
     *
     * <code>int32 retention_days = 9;</code>
     * @return The retentionDays.
     */
    public int getRetentionDays() {
      return retentionDays_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      for (int i = 0; i < format_.size(); i++) {
        output.writeMessage(2, format_.get(i));
      }
      if (partitionScheme_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
        output.writeEnum(3, partitionScheme_);
      }
      if (!getJavaClassBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, javaClass_);
      }
      if (forTests_ != false) {
        output.writeBool(5, forTests_);
      }
      if (!getOwnerBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, owner_);
      }
      if (private_ != false) {
        output.writeBool(7, private_);
      }
      if (kind_ != com.acme.glup.MetadataProto.DataSetKind.UNSUPPORTED_KIND.getNumber()) {
        output.writeEnum(8, kind_);
      }
      if (retentionDays_ != 0) {
        output.writeInt32(9, retentionDays_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      for (int i = 0; i < format_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, format_.get(i));
      }
      if (partitionScheme_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, partitionScheme_);
      }
      if (!getJavaClassBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, javaClass_);
      }
      if (forTests_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, forTests_);
      }
      if (!getOwnerBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, owner_);
      }
      if (private_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, private_);
      }
      if (kind_ != com.acme.glup.MetadataProto.DataSetKind.UNSUPPORTED_KIND.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(8, kind_);
      }
      if (retentionDays_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, retentionDays_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.DataSet)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.DataSet other = (com.acme.glup.MetadataProto.DataSet) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!getFormatList()
          .equals(other.getFormatList())) return false;
      if (partitionScheme_ != other.partitionScheme_) return false;
      if (!getJavaClass()
          .equals(other.getJavaClass())) return false;
      if (getForTests()
          != other.getForTests()) return false;
      if (!getOwner()
          .equals(other.getOwner())) return false;
      if (getPrivate()
          != other.getPrivate()) return false;
      if (kind_ != other.kind_) return false;
      if (getRetentionDays()
          != other.getRetentionDays()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      if (getFormatCount() > 0) {
        hash = (37 * hash) + FORMAT_FIELD_NUMBER;
        hash = (53 * hash) + getFormatList().hashCode();
      }
      hash = (37 * hash) + PARTITION_SCHEME_FIELD_NUMBER;
      hash = (53 * hash) + partitionScheme_;
      hash = (37 * hash) + JAVA_CLASS_FIELD_NUMBER;
      hash = (53 * hash) + getJavaClass().hashCode();
      hash = (37 * hash) + FOR_TESTS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getForTests());
      hash = (37 * hash) + OWNER_FIELD_NUMBER;
      hash = (53 * hash) + getOwner().hashCode();
      hash = (37 * hash) + PRIVATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getPrivate());
      hash = (37 * hash) + KIND_FIELD_NUMBER;
      hash = (53 * hash) + kind_;
      hash = (37 * hash) + RETENTION_DAYS_FIELD_NUMBER;
      hash = (53 * hash) + getRetentionDays();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSet parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSet parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.DataSet prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Defines a data set with its underlying available formats
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.DataSet}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.DataSet)
        com.acme.glup.MetadataProto.DataSetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSet_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.DataSet.class, com.acme.glup.MetadataProto.DataSet.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.DataSet.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFormatFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        if (formatBuilder_ == null) {
          format_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          formatBuilder_.clear();
        }
        partitionScheme_ = 0;

        javaClass_ = "";

        forTests_ = false;

        owner_ = "";

        private_ = false;

        kind_ = 0;

        retentionDays_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSet_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSet getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.DataSet.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSet build() {
        com.acme.glup.MetadataProto.DataSet result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSet buildPartial() {
        com.acme.glup.MetadataProto.DataSet result = new com.acme.glup.MetadataProto.DataSet(this);
        int from_bitField0_ = bitField0_;
        result.id_ = id_;
        if (formatBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            format_ = java.util.Collections.unmodifiableList(format_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.format_ = format_;
        } else {
          result.format_ = formatBuilder_.build();
        }
        result.partitionScheme_ = partitionScheme_;
        result.javaClass_ = javaClass_;
        result.forTests_ = forTests_;
        result.owner_ = owner_;
        result.private_ = private_;
        result.kind_ = kind_;
        result.retentionDays_ = retentionDays_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.DataSet) {
          return mergeFrom((com.acme.glup.MetadataProto.DataSet)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.DataSet other) {
        if (other == com.acme.glup.MetadataProto.DataSet.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (formatBuilder_ == null) {
          if (!other.format_.isEmpty()) {
            if (format_.isEmpty()) {
              format_ = other.format_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFormatIsMutable();
              format_.addAll(other.format_);
            }
            onChanged();
          }
        } else {
          if (!other.format_.isEmpty()) {
            if (formatBuilder_.isEmpty()) {
              formatBuilder_.dispose();
              formatBuilder_ = null;
              format_ = other.format_;
              bitField0_ = (bitField0_ & ~0x00000001);
              formatBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFormatFieldBuilder() : null;
            } else {
              formatBuilder_.addAllMessages(other.format_);
            }
          }
        }
        if (other.partitionScheme_ != 0) {
          setPartitionSchemeValue(other.getPartitionSchemeValue());
        }
        if (!other.getJavaClass().isEmpty()) {
          javaClass_ = other.javaClass_;
          onChanged();
        }
        if (other.getForTests() != false) {
          setForTests(other.getForTests());
        }
        if (!other.getOwner().isEmpty()) {
          owner_ = other.owner_;
          onChanged();
        }
        if (other.getPrivate() != false) {
          setPrivate(other.getPrivate());
        }
        if (other.kind_ != 0) {
          setKindValue(other.getKindValue());
        }
        if (other.getRetentionDays() != 0) {
          setRetentionDays(other.getRetentionDays());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.DataSet parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.DataSet) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * A uniq identifier for this dataset.
       * This string must be lowercase and only contain alphanumerical characters
       * or underscores.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A uniq identifier for this dataset.
       * This string must be lowercase and only contain alphanumerical characters
       * or underscores.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A uniq identifier for this dataset.
       * This string must be lowercase and only contain alphanumerical characters
       * or underscores.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A uniq identifier for this dataset.
       * This string must be lowercase and only contain alphanumerical characters
       * or underscores.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A uniq identifier for this dataset.
       * This string must be lowercase and only contain alphanumerical characters
       * or underscores.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.acme.glup.MetadataProto.DataSetFormat> format_ =
        java.util.Collections.emptyList();
      private void ensureFormatIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          format_ = new java.util.ArrayList<com.acme.glup.MetadataProto.DataSetFormat>(format_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.DataSetFormat, com.acme.glup.MetadataProto.DataSetFormat.Builder, com.acme.glup.MetadataProto.DataSetFormatOrBuilder> formatBuilder_;

      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.DataSetFormat> getFormatList() {
        if (formatBuilder_ == null) {
          return java.util.Collections.unmodifiableList(format_);
        } else {
          return formatBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public int getFormatCount() {
        if (formatBuilder_ == null) {
          return format_.size();
        } else {
          return formatBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormat getFormat(int index) {
        if (formatBuilder_ == null) {
          return format_.get(index);
        } else {
          return formatBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder setFormat(
          int index, com.acme.glup.MetadataProto.DataSetFormat value) {
        if (formatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFormatIsMutable();
          format_.set(index, value);
          onChanged();
        } else {
          formatBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder setFormat(
          int index, com.acme.glup.MetadataProto.DataSetFormat.Builder builderForValue) {
        if (formatBuilder_ == null) {
          ensureFormatIsMutable();
          format_.set(index, builderForValue.build());
          onChanged();
        } else {
          formatBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder addFormat(com.acme.glup.MetadataProto.DataSetFormat value) {
        if (formatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFormatIsMutable();
          format_.add(value);
          onChanged();
        } else {
          formatBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder addFormat(
          int index, com.acme.glup.MetadataProto.DataSetFormat value) {
        if (formatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFormatIsMutable();
          format_.add(index, value);
          onChanged();
        } else {
          formatBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder addFormat(
          com.acme.glup.MetadataProto.DataSetFormat.Builder builderForValue) {
        if (formatBuilder_ == null) {
          ensureFormatIsMutable();
          format_.add(builderForValue.build());
          onChanged();
        } else {
          formatBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder addFormat(
          int index, com.acme.glup.MetadataProto.DataSetFormat.Builder builderForValue) {
        if (formatBuilder_ == null) {
          ensureFormatIsMutable();
          format_.add(index, builderForValue.build());
          onChanged();
        } else {
          formatBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder addAllFormat(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.DataSetFormat> values) {
        if (formatBuilder_ == null) {
          ensureFormatIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, format_);
          onChanged();
        } else {
          formatBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder clearFormat() {
        if (formatBuilder_ == null) {
          format_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          formatBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder removeFormat(int index) {
        if (formatBuilder_ == null) {
          ensureFormatIsMutable();
          format_.remove(index);
          onChanged();
        } else {
          formatBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormat.Builder getFormatBuilder(
          int index) {
        return getFormatFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormatOrBuilder getFormatOrBuilder(
          int index) {
        if (formatBuilder_ == null) {
          return format_.get(index);  } else {
          return formatBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.DataSetFormatOrBuilder> 
           getFormatOrBuilderList() {
        if (formatBuilder_ != null) {
          return formatBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(format_);
        }
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormat.Builder addFormatBuilder() {
        return getFormatFieldBuilder().addBuilder(
            com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance());
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormat.Builder addFormatBuilder(
          int index) {
        return getFormatFieldBuilder().addBuilder(
            index, com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance());
      }
      /**
       * <pre>
       * A set of formats available for this dataset.
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSetFormat format = 2;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.DataSetFormat.Builder> 
           getFormatBuilderList() {
        return getFormatFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.DataSetFormat, com.acme.glup.MetadataProto.DataSetFormat.Builder, com.acme.glup.MetadataProto.DataSetFormatOrBuilder> 
          getFormatFieldBuilder() {
        if (formatBuilder_ == null) {
          formatBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.DataSetFormat, com.acme.glup.MetadataProto.DataSetFormat.Builder, com.acme.glup.MetadataProto.DataSetFormatOrBuilder>(
                  format_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          format_ = null;
        }
        return formatBuilder_;
      }

      private int partitionScheme_ = 0;
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @return The enum numeric value on the wire for partitionScheme.
       */
      public int getPartitionSchemeValue() {
        return partitionScheme_;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @param value The enum numeric value on the wire for partitionScheme to set.
       * @return This builder for chaining.
       */
      public Builder setPartitionSchemeValue(int value) {
        partitionScheme_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @return The partitionScheme.
       */
      public com.acme.glup.MetadataProto.PartitionScheme getPartitionScheme() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitionScheme_);
        return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @param value The partitionScheme to set.
       * @return This builder for chaining.
       */
      public Builder setPartitionScheme(com.acme.glup.MetadataProto.PartitionScheme value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        partitionScheme_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPartitionScheme() {
        
        partitionScheme_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object javaClass_ = "";
      /**
       * <pre>
       * (Mandatory) This should be java class which will represent the dataset's schema.
       * </pre>
       *
       * <code>string java_class = 4;</code>
       * @return The javaClass.
       */
      public java.lang.String getJavaClass() {
        java.lang.Object ref = javaClass_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          javaClass_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * (Mandatory) This should be java class which will represent the dataset's schema.
       * </pre>
       *
       * <code>string java_class = 4;</code>
       * @return The bytes for javaClass.
       */
      public com.google.protobuf.ByteString
          getJavaClassBytes() {
        java.lang.Object ref = javaClass_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          javaClass_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * (Mandatory) This should be java class which will represent the dataset's schema.
       * </pre>
       *
       * <code>string java_class = 4;</code>
       * @param value The javaClass to set.
       * @return This builder for chaining.
       */
      public Builder setJavaClass(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        javaClass_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (Mandatory) This should be java class which will represent the dataset's schema.
       * </pre>
       *
       * <code>string java_class = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearJavaClass() {
        
        javaClass_ = getDefaultInstance().getJavaClass();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (Mandatory) This should be java class which will represent the dataset's schema.
       * </pre>
       *
       * <code>string java_class = 4;</code>
       * @param value The bytes for javaClass to set.
       * @return This builder for chaining.
       */
      public Builder setJavaClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        javaClass_ = value;
        onChanged();
        return this;
      }

      private boolean forTests_ ;
      /**
       * <pre>
       * is this dataset a unit test dataset
       * </pre>
       *
       * <code>bool for_tests = 5;</code>
       * @return The forTests.
       */
      public boolean getForTests() {
        return forTests_;
      }
      /**
       * <pre>
       * is this dataset a unit test dataset
       * </pre>
       *
       * <code>bool for_tests = 5;</code>
       * @param value The forTests to set.
       * @return This builder for chaining.
       */
      public Builder setForTests(boolean value) {
        
        forTests_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * is this dataset a unit test dataset
       * </pre>
       *
       * <code>bool for_tests = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearForTests() {
        
        forTests_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object owner_ = "";
      /**
       * <pre>
       * owner of this dataset
       * </pre>
       *
       * <code>string owner = 6;</code>
       * @return The owner.
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          owner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * owner of this dataset
       * </pre>
       *
       * <code>string owner = 6;</code>
       * @return The bytes for owner.
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * owner of this dataset
       * </pre>
       *
       * <code>string owner = 6;</code>
       * @param value The owner to set.
       * @return This builder for chaining.
       */
      public Builder setOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        owner_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * owner of this dataset
       * </pre>
       *
       * <code>string owner = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearOwner() {
        
        owner_ = getDefaultInstance().getOwner();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * owner of this dataset
       * </pre>
       *
       * <code>string owner = 6;</code>
       * @param value The bytes for owner to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        owner_ = value;
        onChanged();
        return this;
      }

      private boolean private_ ;
      /**
       * <pre>
       * is this dataset private
       * </pre>
       *
       * <code>bool private = 7;</code>
       * @return The private.
       */
      public boolean getPrivate() {
        return private_;
      }
      /**
       * <pre>
       * is this dataset private
       * </pre>
       *
       * <code>bool private = 7;</code>
       * @param value The private to set.
       * @return This builder for chaining.
       */
      public Builder setPrivate(boolean value) {
        
        private_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * is this dataset private
       * </pre>
       *
       * <code>bool private = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrivate() {
        
        private_ = false;
        onChanged();
        return this;
      }

      private int kind_ = 0;
      /**
       * <pre>
       * kind of dataset
       * </pre>
       *
       * <code>.Acme.Glup.DataSetKind kind = 8;</code>
       * @return The enum numeric value on the wire for kind.
       */
      public int getKindValue() {
        return kind_;
      }
      /**
       * <pre>
       * kind of dataset
       * </pre>
       *
       * <code>.Acme.Glup.DataSetKind kind = 8;</code>
       * @param value The enum numeric value on the wire for kind to set.
       * @return This builder for chaining.
       */
      public Builder setKindValue(int value) {
        kind_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kind of dataset
       * </pre>
       *
       * <code>.Acme.Glup.DataSetKind kind = 8;</code>
       * @return The kind.
       */
      public com.acme.glup.MetadataProto.DataSetKind getKind() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.DataSetKind result = com.acme.glup.MetadataProto.DataSetKind.valueOf(kind_);
        return result == null ? com.acme.glup.MetadataProto.DataSetKind.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * kind of dataset
       * </pre>
       *
       * <code>.Acme.Glup.DataSetKind kind = 8;</code>
       * @param value The kind to set.
       * @return This builder for chaining.
       */
      public Builder setKind(com.acme.glup.MetadataProto.DataSetKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        kind_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kind of dataset
       * </pre>
       *
       * <code>.Acme.Glup.DataSetKind kind = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        
        kind_ = 0;
        onChanged();
        return this;
      }

      private int retentionDays_ ;
      /**
       * <pre>
       * retention period (in days)
       * </pre>
       *
       * <code>int32 retention_days = 9;</code>
       * @return The retentionDays.
       */
      public int getRetentionDays() {
        return retentionDays_;
      }
      /**
       * <pre>
       * retention period (in days)
       * </pre>
       *
       * <code>int32 retention_days = 9;</code>
       * @param value The retentionDays to set.
       * @return This builder for chaining.
       */
      public Builder setRetentionDays(int value) {
        
        retentionDays_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * retention period (in days)
       * </pre>
       *
       * <code>int32 retention_days = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearRetentionDays() {
        
        retentionDays_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.DataSet)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.DataSet)
    private static final com.acme.glup.MetadataProto.DataSet DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.DataSet();
    }

    public static com.acme.glup.MetadataProto.DataSet getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DataSet>
        PARSER = new com.google.protobuf.AbstractParser<DataSet>() {
      @java.lang.Override
      public DataSet parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DataSet(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DataSet> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DataSet> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.DataSet getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DataSetChunkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.DataSetChunk)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    java.util.List<com.acme.glup.MetadataProto.Partition> 
        getPartitionList();
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    com.acme.glup.MetadataProto.Partition getPartition(int index);
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    int getPartitionCount();
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    java.util.List<? extends com.acme.glup.MetadataProto.PartitionOrBuilder> 
        getPartitionOrBuilderList();
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    com.acme.glup.MetadataProto.PartitionOrBuilder getPartitionOrBuilder(
        int index);

    /**
     * <code>.Acme.Glup.DataSetFormat format = 2;</code>
     * @return Whether the format field is set.
     */
    boolean hasFormat();
    /**
     * <code>.Acme.Glup.DataSetFormat format = 2;</code>
     * @return The format.
     */
    com.acme.glup.MetadataProto.DataSetFormat getFormat();
    /**
     * <code>.Acme.Glup.DataSetFormat format = 2;</code>
     */
    com.acme.glup.MetadataProto.DataSetFormatOrBuilder getFormatOrBuilder();

    /**
     * <code>string datasetId = 3;</code>
     * @return The datasetId.
     */
    java.lang.String getDatasetId();
    /**
     * <code>string datasetId = 3;</code>
     * @return The bytes for datasetId.
     */
    com.google.protobuf.ByteString
        getDatasetIdBytes();
  }
  /**
   * <pre>
   * Defines a set of dataset partitions
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.DataSetChunk}
   */
  public  static final class DataSetChunk extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.DataSetChunk)
      DataSetChunkOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DataSetChunk.newBuilder() to construct.
    private DataSetChunk(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DataSetChunk() {
      partition_ = java.util.Collections.emptyList();
      datasetId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DataSetChunk();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DataSetChunk(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                partition_ = new java.util.ArrayList<com.acme.glup.MetadataProto.Partition>();
                mutable_bitField0_ |= 0x00000001;
              }
              partition_.add(
                  input.readMessage(com.acme.glup.MetadataProto.Partition.parser(), extensionRegistry));
              break;
            }
            case 18: {
              com.acme.glup.MetadataProto.DataSetFormat.Builder subBuilder = null;
              if (format_ != null) {
                subBuilder = format_.toBuilder();
              }
              format_ = input.readMessage(com.acme.glup.MetadataProto.DataSetFormat.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(format_);
                format_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              datasetId_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          partition_ = java.util.Collections.unmodifiableList(partition_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetChunk_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetChunk_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.DataSetChunk.class, com.acme.glup.MetadataProto.DataSetChunk.Builder.class);
    }

    public static final int PARTITION_FIELD_NUMBER = 1;
    private java.util.List<com.acme.glup.MetadataProto.Partition> partition_;
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    public java.util.List<com.acme.glup.MetadataProto.Partition> getPartitionList() {
      return partition_;
    }
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    public java.util.List<? extends com.acme.glup.MetadataProto.PartitionOrBuilder> 
        getPartitionOrBuilderList() {
      return partition_;
    }
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    public int getPartitionCount() {
      return partition_.size();
    }
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    public com.acme.glup.MetadataProto.Partition getPartition(int index) {
      return partition_.get(index);
    }
    /**
     * <code>repeated .Acme.Glup.Partition partition = 1;</code>
     */
    public com.acme.glup.MetadataProto.PartitionOrBuilder getPartitionOrBuilder(
        int index) {
      return partition_.get(index);
    }

    public static final int FORMAT_FIELD_NUMBER = 2;
    private com.acme.glup.MetadataProto.DataSetFormat format_;
    /**
     * <code>.Acme.Glup.DataSetFormat format = 2;</code>
     * @return Whether the format field is set.
     */
    public boolean hasFormat() {
      return format_ != null;
    }
    /**
     * <code>.Acme.Glup.DataSetFormat format = 2;</code>
     * @return The format.
     */
    public com.acme.glup.MetadataProto.DataSetFormat getFormat() {
      return format_ == null ? com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance() : format_;
    }
    /**
     * <code>.Acme.Glup.DataSetFormat format = 2;</code>
     */
    public com.acme.glup.MetadataProto.DataSetFormatOrBuilder getFormatOrBuilder() {
      return getFormat();
    }

    public static final int DATASETID_FIELD_NUMBER = 3;
    private volatile java.lang.Object datasetId_;
    /**
     * <code>string datasetId = 3;</code>
     * @return The datasetId.
     */
    public java.lang.String getDatasetId() {
      java.lang.Object ref = datasetId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        datasetId_ = s;
        return s;
      }
    }
    /**
     * <code>string datasetId = 3;</code>
     * @return The bytes for datasetId.
     */
    public com.google.protobuf.ByteString
        getDatasetIdBytes() {
      java.lang.Object ref = datasetId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datasetId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < partition_.size(); i++) {
        output.writeMessage(1, partition_.get(i));
      }
      if (format_ != null) {
        output.writeMessage(2, getFormat());
      }
      if (!getDatasetIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, datasetId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < partition_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, partition_.get(i));
      }
      if (format_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFormat());
      }
      if (!getDatasetIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, datasetId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.DataSetChunk)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.DataSetChunk other = (com.acme.glup.MetadataProto.DataSetChunk) obj;

      if (!getPartitionList()
          .equals(other.getPartitionList())) return false;
      if (hasFormat() != other.hasFormat()) return false;
      if (hasFormat()) {
        if (!getFormat()
            .equals(other.getFormat())) return false;
      }
      if (!getDatasetId()
          .equals(other.getDatasetId())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPartitionCount() > 0) {
        hash = (37 * hash) + PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getPartitionList().hashCode();
      }
      if (hasFormat()) {
        hash = (37 * hash) + FORMAT_FIELD_NUMBER;
        hash = (53 * hash) + getFormat().hashCode();
      }
      hash = (37 * hash) + DATASETID_FIELD_NUMBER;
      hash = (53 * hash) + getDatasetId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSetChunk parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.DataSetChunk prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Defines a set of dataset partitions
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.DataSetChunk}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.DataSetChunk)
        com.acme.glup.MetadataProto.DataSetChunkOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetChunk_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetChunk_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.DataSetChunk.class, com.acme.glup.MetadataProto.DataSetChunk.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.DataSetChunk.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPartitionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (partitionBuilder_ == null) {
          partition_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          partitionBuilder_.clear();
        }
        if (formatBuilder_ == null) {
          format_ = null;
        } else {
          format_ = null;
          formatBuilder_ = null;
        }
        datasetId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetChunk_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSetChunk getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.DataSetChunk.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSetChunk build() {
        com.acme.glup.MetadataProto.DataSetChunk result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSetChunk buildPartial() {
        com.acme.glup.MetadataProto.DataSetChunk result = new com.acme.glup.MetadataProto.DataSetChunk(this);
        int from_bitField0_ = bitField0_;
        if (partitionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            partition_ = java.util.Collections.unmodifiableList(partition_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.partition_ = partition_;
        } else {
          result.partition_ = partitionBuilder_.build();
        }
        if (formatBuilder_ == null) {
          result.format_ = format_;
        } else {
          result.format_ = formatBuilder_.build();
        }
        result.datasetId_ = datasetId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.DataSetChunk) {
          return mergeFrom((com.acme.glup.MetadataProto.DataSetChunk)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.DataSetChunk other) {
        if (other == com.acme.glup.MetadataProto.DataSetChunk.getDefaultInstance()) return this;
        if (partitionBuilder_ == null) {
          if (!other.partition_.isEmpty()) {
            if (partition_.isEmpty()) {
              partition_ = other.partition_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePartitionIsMutable();
              partition_.addAll(other.partition_);
            }
            onChanged();
          }
        } else {
          if (!other.partition_.isEmpty()) {
            if (partitionBuilder_.isEmpty()) {
              partitionBuilder_.dispose();
              partitionBuilder_ = null;
              partition_ = other.partition_;
              bitField0_ = (bitField0_ & ~0x00000001);
              partitionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPartitionFieldBuilder() : null;
            } else {
              partitionBuilder_.addAllMessages(other.partition_);
            }
          }
        }
        if (other.hasFormat()) {
          mergeFormat(other.getFormat());
        }
        if (!other.getDatasetId().isEmpty()) {
          datasetId_ = other.datasetId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.DataSetChunk parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.DataSetChunk) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.acme.glup.MetadataProto.Partition> partition_ =
        java.util.Collections.emptyList();
      private void ensurePartitionIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          partition_ = new java.util.ArrayList<com.acme.glup.MetadataProto.Partition>(partition_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.Partition, com.acme.glup.MetadataProto.Partition.Builder, com.acme.glup.MetadataProto.PartitionOrBuilder> partitionBuilder_;

      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.Partition> getPartitionList() {
        if (partitionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(partition_);
        } else {
          return partitionBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public int getPartitionCount() {
        if (partitionBuilder_ == null) {
          return partition_.size();
        } else {
          return partitionBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public com.acme.glup.MetadataProto.Partition getPartition(int index) {
        if (partitionBuilder_ == null) {
          return partition_.get(index);
        } else {
          return partitionBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder setPartition(
          int index, com.acme.glup.MetadataProto.Partition value) {
        if (partitionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionIsMutable();
          partition_.set(index, value);
          onChanged();
        } else {
          partitionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder setPartition(
          int index, com.acme.glup.MetadataProto.Partition.Builder builderForValue) {
        if (partitionBuilder_ == null) {
          ensurePartitionIsMutable();
          partition_.set(index, builderForValue.build());
          onChanged();
        } else {
          partitionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder addPartition(com.acme.glup.MetadataProto.Partition value) {
        if (partitionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionIsMutable();
          partition_.add(value);
          onChanged();
        } else {
          partitionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder addPartition(
          int index, com.acme.glup.MetadataProto.Partition value) {
        if (partitionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionIsMutable();
          partition_.add(index, value);
          onChanged();
        } else {
          partitionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder addPartition(
          com.acme.glup.MetadataProto.Partition.Builder builderForValue) {
        if (partitionBuilder_ == null) {
          ensurePartitionIsMutable();
          partition_.add(builderForValue.build());
          onChanged();
        } else {
          partitionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder addPartition(
          int index, com.acme.glup.MetadataProto.Partition.Builder builderForValue) {
        if (partitionBuilder_ == null) {
          ensurePartitionIsMutable();
          partition_.add(index, builderForValue.build());
          onChanged();
        } else {
          partitionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder addAllPartition(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.Partition> values) {
        if (partitionBuilder_ == null) {
          ensurePartitionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, partition_);
          onChanged();
        } else {
          partitionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder clearPartition() {
        if (partitionBuilder_ == null) {
          partition_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          partitionBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public Builder removePartition(int index) {
        if (partitionBuilder_ == null) {
          ensurePartitionIsMutable();
          partition_.remove(index);
          onChanged();
        } else {
          partitionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public com.acme.glup.MetadataProto.Partition.Builder getPartitionBuilder(
          int index) {
        return getPartitionFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public com.acme.glup.MetadataProto.PartitionOrBuilder getPartitionOrBuilder(
          int index) {
        if (partitionBuilder_ == null) {
          return partition_.get(index);  } else {
          return partitionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.PartitionOrBuilder> 
           getPartitionOrBuilderList() {
        if (partitionBuilder_ != null) {
          return partitionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(partition_);
        }
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public com.acme.glup.MetadataProto.Partition.Builder addPartitionBuilder() {
        return getPartitionFieldBuilder().addBuilder(
            com.acme.glup.MetadataProto.Partition.getDefaultInstance());
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public com.acme.glup.MetadataProto.Partition.Builder addPartitionBuilder(
          int index) {
        return getPartitionFieldBuilder().addBuilder(
            index, com.acme.glup.MetadataProto.Partition.getDefaultInstance());
      }
      /**
       * <code>repeated .Acme.Glup.Partition partition = 1;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.Partition.Builder> 
           getPartitionBuilderList() {
        return getPartitionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.Partition, com.acme.glup.MetadataProto.Partition.Builder, com.acme.glup.MetadataProto.PartitionOrBuilder> 
          getPartitionFieldBuilder() {
        if (partitionBuilder_ == null) {
          partitionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.Partition, com.acme.glup.MetadataProto.Partition.Builder, com.acme.glup.MetadataProto.PartitionOrBuilder>(
                  partition_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          partition_ = null;
        }
        return partitionBuilder_;
      }

      private com.acme.glup.MetadataProto.DataSetFormat format_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.DataSetFormat, com.acme.glup.MetadataProto.DataSetFormat.Builder, com.acme.glup.MetadataProto.DataSetFormatOrBuilder> formatBuilder_;
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       * @return Whether the format field is set.
       */
      public boolean hasFormat() {
        return formatBuilder_ != null || format_ != null;
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       * @return The format.
       */
      public com.acme.glup.MetadataProto.DataSetFormat getFormat() {
        if (formatBuilder_ == null) {
          return format_ == null ? com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance() : format_;
        } else {
          return formatBuilder_.getMessage();
        }
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder setFormat(com.acme.glup.MetadataProto.DataSetFormat value) {
        if (formatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          format_ = value;
          onChanged();
        } else {
          formatBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder setFormat(
          com.acme.glup.MetadataProto.DataSetFormat.Builder builderForValue) {
        if (formatBuilder_ == null) {
          format_ = builderForValue.build();
          onChanged();
        } else {
          formatBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder mergeFormat(com.acme.glup.MetadataProto.DataSetFormat value) {
        if (formatBuilder_ == null) {
          if (format_ != null) {
            format_ =
              com.acme.glup.MetadataProto.DataSetFormat.newBuilder(format_).mergeFrom(value).buildPartial();
          } else {
            format_ = value;
          }
          onChanged();
        } else {
          formatBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      public Builder clearFormat() {
        if (formatBuilder_ == null) {
          format_ = null;
          onChanged();
        } else {
          format_ = null;
          formatBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormat.Builder getFormatBuilder() {
        
        onChanged();
        return getFormatFieldBuilder().getBuilder();
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      public com.acme.glup.MetadataProto.DataSetFormatOrBuilder getFormatOrBuilder() {
        if (formatBuilder_ != null) {
          return formatBuilder_.getMessageOrBuilder();
        } else {
          return format_ == null ?
              com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance() : format_;
        }
      }
      /**
       * <code>.Acme.Glup.DataSetFormat format = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.DataSetFormat, com.acme.glup.MetadataProto.DataSetFormat.Builder, com.acme.glup.MetadataProto.DataSetFormatOrBuilder> 
          getFormatFieldBuilder() {
        if (formatBuilder_ == null) {
          formatBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.DataSetFormat, com.acme.glup.MetadataProto.DataSetFormat.Builder, com.acme.glup.MetadataProto.DataSetFormatOrBuilder>(
                  getFormat(),
                  getParentForChildren(),
                  isClean());
          format_ = null;
        }
        return formatBuilder_;
      }

      private java.lang.Object datasetId_ = "";
      /**
       * <code>string datasetId = 3;</code>
       * @return The datasetId.
       */
      public java.lang.String getDatasetId() {
        java.lang.Object ref = datasetId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          datasetId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string datasetId = 3;</code>
       * @return The bytes for datasetId.
       */
      public com.google.protobuf.ByteString
          getDatasetIdBytes() {
        java.lang.Object ref = datasetId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datasetId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string datasetId = 3;</code>
       * @param value The datasetId to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        datasetId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string datasetId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetId() {
        
        datasetId_ = getDefaultInstance().getDatasetId();
        onChanged();
        return this;
      }
      /**
       * <code>string datasetId = 3;</code>
       * @param value The bytes for datasetId to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        datasetId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.DataSetChunk)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.DataSetChunk)
    private static final com.acme.glup.MetadataProto.DataSetChunk DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.DataSetChunk();
    }

    public static com.acme.glup.MetadataProto.DataSetChunk getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DataSetChunk>
        PARSER = new com.google.protobuf.AbstractParser<DataSetChunk>() {
      @java.lang.Override
      public DataSetChunk parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DataSetChunk(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DataSetChunk> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DataSetChunk> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.DataSetChunk getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DataSetFormatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.DataSetFormat)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Location of the data.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Location of the data.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * File format used to store records.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
     * @return The enum numeric value on the wire for fileFormat.
     */
    int getFileFormatValue();
    /**
     * <pre>
     * File format used to store records.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
     * @return The fileFormat.
     */
    com.acme.glup.MetadataProto.HDFSDataFormat getFileFormat();

    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The enum numeric value on the wire for partitionScheme.
     */
    int getPartitionSchemeValue();
    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The partitionScheme.
     */
    com.acme.glup.MetadataProto.PartitionScheme getPartitionScheme();

    /**
     * <pre>
     * The minimum defined partition for this format inclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
     * @return Whether the startPartition field is set.
     */
    boolean hasStartPartition();
    /**
     * <pre>
     * The minimum defined partition for this format inclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
     * @return The startPartition.
     */
    com.acme.glup.MetadataProto.HDFSPartition getStartPartition();
    /**
     * <pre>
     * The minimum defined partition for this format inclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
     */
    com.acme.glup.MetadataProto.HDFSPartitionOrBuilder getStartPartitionOrBuilder();

    /**
     * <pre>
     * The maximum defined partition for this format exclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
     * @return Whether the endPartition field is set.
     */
    boolean hasEndPartition();
    /**
     * <pre>
     * The maximum defined partition for this format exclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
     * @return The endPartition.
     */
    com.acme.glup.MetadataProto.HDFSPartition getEndPartition();
    /**
     * <pre>
     * The maximum defined partition for this format exclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
     */
    com.acme.glup.MetadataProto.HDFSPartitionOrBuilder getEndPartitionOrBuilder();

    /**
     * <pre>
     * Retention in days
     * </pre>
     *
     * <code>int32 retention_days = 7;</code>
     * @return The retentionDays.
     */
    int getRetentionDays();

    /**
     * <pre>
     * Priority, bigger number means higher priority, 0 as the lowest, used to decide which format to use when several are available.
     * </pre>
     *
     * <code>int32 priority = 8;</code>
     * @return The priority.
     */
    int getPriority();

    /**
     * <pre>
     * Label, should be unique across all formats in a same dataset.
     * </pre>
     *
     * <code>string label = 9;</code>
     * @return The label.
     */
    java.lang.String getLabel();
    /**
     * <pre>
     * Label, should be unique across all formats in a same dataset.
     * </pre>
     *
     * <code>string label = 9;</code>
     * @return The bytes for label.
     */
    com.google.protobuf.ByteString
        getLabelBytes();

    /**
     * <pre>
     *Monitoring level, if not set DEFAULT will be applied
     * </pre>
     *
     * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
     * @return The enum numeric value on the wire for monitoringLevel.
     */
    int getMonitoringLevelValue();
    /**
     * <pre>
     *Monitoring level, if not set DEFAULT will be applied
     * </pre>
     *
     * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
     * @return The monitoringLevel.
     */
    com.acme.glup.MetadataProto.MonitoringLevel getMonitoringLevel();
  }
  /**
   * <pre>
   * Defines a dataset format.
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.DataSetFormat}
   */
  public  static final class DataSetFormat extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.DataSetFormat)
      DataSetFormatOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DataSetFormat.newBuilder() to construct.
    private DataSetFormat(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DataSetFormat() {
      path_ = "";
      fileFormat_ = 0;
      partitionScheme_ = 0;
      label_ = "";
      monitoringLevel_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DataSetFormat();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DataSetFormat(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              path_ = s;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              fileFormat_ = rawValue;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();

              partitionScheme_ = rawValue;
              break;
            }
            case 34: {
              com.acme.glup.MetadataProto.HDFSPartition.Builder subBuilder = null;
              if (startPartition_ != null) {
                subBuilder = startPartition_.toBuilder();
              }
              startPartition_ = input.readMessage(com.acme.glup.MetadataProto.HDFSPartition.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(startPartition_);
                startPartition_ = subBuilder.buildPartial();
              }

              break;
            }
            case 42: {
              com.acme.glup.MetadataProto.HDFSPartition.Builder subBuilder = null;
              if (endPartition_ != null) {
                subBuilder = endPartition_.toBuilder();
              }
              endPartition_ = input.readMessage(com.acme.glup.MetadataProto.HDFSPartition.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endPartition_);
                endPartition_ = subBuilder.buildPartial();
              }

              break;
            }
            case 56: {

              retentionDays_ = input.readInt32();
              break;
            }
            case 64: {

              priority_ = input.readInt32();
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();

              label_ = s;
              break;
            }
            case 80: {
              int rawValue = input.readEnum();

              monitoringLevel_ = rawValue;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetFormat_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetFormat_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.DataSetFormat.class, com.acme.glup.MetadataProto.DataSetFormat.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object path_;
    /**
     * <pre>
     * Location of the data.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Location of the data.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILE_FORMAT_FIELD_NUMBER = 2;
    private int fileFormat_;
    /**
     * <pre>
     * File format used to store records.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
     * @return The enum numeric value on the wire for fileFormat.
     */
    public int getFileFormatValue() {
      return fileFormat_;
    }
    /**
     * <pre>
     * File format used to store records.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
     * @return The fileFormat.
     */
    public com.acme.glup.MetadataProto.HDFSDataFormat getFileFormat() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(fileFormat_);
      return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
    }

    public static final int PARTITION_SCHEME_FIELD_NUMBER = 3;
    private int partitionScheme_;
    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The enum numeric value on the wire for partitionScheme.
     */
    public int getPartitionSchemeValue() {
      return partitionScheme_;
    }
    /**
     * <pre>
     * Partition scheme used to store data inside the path.
     * </pre>
     *
     * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
     * @return The partitionScheme.
     */
    public com.acme.glup.MetadataProto.PartitionScheme getPartitionScheme() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitionScheme_);
      return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
    }

    public static final int START_PARTITION_FIELD_NUMBER = 4;
    private com.acme.glup.MetadataProto.HDFSPartition startPartition_;
    /**
     * <pre>
     * The minimum defined partition for this format inclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
     * @return Whether the startPartition field is set.
     */
    public boolean hasStartPartition() {
      return startPartition_ != null;
    }
    /**
     * <pre>
     * The minimum defined partition for this format inclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
     * @return The startPartition.
     */
    public com.acme.glup.MetadataProto.HDFSPartition getStartPartition() {
      return startPartition_ == null ? com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance() : startPartition_;
    }
    /**
     * <pre>
     * The minimum defined partition for this format inclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
     */
    public com.acme.glup.MetadataProto.HDFSPartitionOrBuilder getStartPartitionOrBuilder() {
      return getStartPartition();
    }

    public static final int END_PARTITION_FIELD_NUMBER = 5;
    private com.acme.glup.MetadataProto.HDFSPartition endPartition_;
    /**
     * <pre>
     * The maximum defined partition for this format exclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
     * @return Whether the endPartition field is set.
     */
    public boolean hasEndPartition() {
      return endPartition_ != null;
    }
    /**
     * <pre>
     * The maximum defined partition for this format exclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
     * @return The endPartition.
     */
    public com.acme.glup.MetadataProto.HDFSPartition getEndPartition() {
      return endPartition_ == null ? com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance() : endPartition_;
    }
    /**
     * <pre>
     * The maximum defined partition for this format exclusive.
     * </pre>
     *
     * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
     */
    public com.acme.glup.MetadataProto.HDFSPartitionOrBuilder getEndPartitionOrBuilder() {
      return getEndPartition();
    }

    public static final int RETENTION_DAYS_FIELD_NUMBER = 7;
    private int retentionDays_;
    /**
     * <pre>
     * Retention in days
     * </pre>
     *
     * <code>int32 retention_days = 7;</code>
     * @return The retentionDays.
     */
    public int getRetentionDays() {
      return retentionDays_;
    }

    public static final int PRIORITY_FIELD_NUMBER = 8;
    private int priority_;
    /**
     * <pre>
     * Priority, bigger number means higher priority, 0 as the lowest, used to decide which format to use when several are available.
     * </pre>
     *
     * <code>int32 priority = 8;</code>
     * @return The priority.
     */
    public int getPriority() {
      return priority_;
    }

    public static final int LABEL_FIELD_NUMBER = 9;
    private volatile java.lang.Object label_;
    /**
     * <pre>
     * Label, should be unique across all formats in a same dataset.
     * </pre>
     *
     * <code>string label = 9;</code>
     * @return The label.
     */
    public java.lang.String getLabel() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        label_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Label, should be unique across all formats in a same dataset.
     * </pre>
     *
     * <code>string label = 9;</code>
     * @return The bytes for label.
     */
    public com.google.protobuf.ByteString
        getLabelBytes() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        label_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MONITORING_LEVEL_FIELD_NUMBER = 10;
    private int monitoringLevel_;
    /**
     * <pre>
     *Monitoring level, if not set DEFAULT will be applied
     * </pre>
     *
     * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
     * @return The enum numeric value on the wire for monitoringLevel.
     */
    public int getMonitoringLevelValue() {
      return monitoringLevel_;
    }
    /**
     * <pre>
     *Monitoring level, if not set DEFAULT will be applied
     * </pre>
     *
     * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
     * @return The monitoringLevel.
     */
    public com.acme.glup.MetadataProto.MonitoringLevel getMonitoringLevel() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.MonitoringLevel result = com.acme.glup.MetadataProto.MonitoringLevel.valueOf(monitoringLevel_);
      return result == null ? com.acme.glup.MetadataProto.MonitoringLevel.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (fileFormat_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
        output.writeEnum(2, fileFormat_);
      }
      if (partitionScheme_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
        output.writeEnum(3, partitionScheme_);
      }
      if (startPartition_ != null) {
        output.writeMessage(4, getStartPartition());
      }
      if (endPartition_ != null) {
        output.writeMessage(5, getEndPartition());
      }
      if (retentionDays_ != 0) {
        output.writeInt32(7, retentionDays_);
      }
      if (priority_ != 0) {
        output.writeInt32(8, priority_);
      }
      if (!getLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, label_);
      }
      if (monitoringLevel_ != com.acme.glup.MetadataProto.MonitoringLevel.DEFAULT.getNumber()) {
        output.writeEnum(10, monitoringLevel_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (fileFormat_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, fileFormat_);
      }
      if (partitionScheme_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, partitionScheme_);
      }
      if (startPartition_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getStartPartition());
      }
      if (endPartition_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getEndPartition());
      }
      if (retentionDays_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, retentionDays_);
      }
      if (priority_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, priority_);
      }
      if (!getLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, label_);
      }
      if (monitoringLevel_ != com.acme.glup.MetadataProto.MonitoringLevel.DEFAULT.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(10, monitoringLevel_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.DataSetFormat)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.DataSetFormat other = (com.acme.glup.MetadataProto.DataSetFormat) obj;

      if (!getPath()
          .equals(other.getPath())) return false;
      if (fileFormat_ != other.fileFormat_) return false;
      if (partitionScheme_ != other.partitionScheme_) return false;
      if (hasStartPartition() != other.hasStartPartition()) return false;
      if (hasStartPartition()) {
        if (!getStartPartition()
            .equals(other.getStartPartition())) return false;
      }
      if (hasEndPartition() != other.hasEndPartition()) return false;
      if (hasEndPartition()) {
        if (!getEndPartition()
            .equals(other.getEndPartition())) return false;
      }
      if (getRetentionDays()
          != other.getRetentionDays()) return false;
      if (getPriority()
          != other.getPriority()) return false;
      if (!getLabel()
          .equals(other.getLabel())) return false;
      if (monitoringLevel_ != other.monitoringLevel_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + FILE_FORMAT_FIELD_NUMBER;
      hash = (53 * hash) + fileFormat_;
      hash = (37 * hash) + PARTITION_SCHEME_FIELD_NUMBER;
      hash = (53 * hash) + partitionScheme_;
      if (hasStartPartition()) {
        hash = (37 * hash) + START_PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getStartPartition().hashCode();
      }
      if (hasEndPartition()) {
        hash = (37 * hash) + END_PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getEndPartition().hashCode();
      }
      hash = (37 * hash) + RETENTION_DAYS_FIELD_NUMBER;
      hash = (53 * hash) + getRetentionDays();
      hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
      hash = (53 * hash) + getPriority();
      hash = (37 * hash) + LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getLabel().hashCode();
      hash = (37 * hash) + MONITORING_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + monitoringLevel_;
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.DataSetFormat parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.DataSetFormat prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Defines a dataset format.
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.DataSetFormat}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.DataSetFormat)
        com.acme.glup.MetadataProto.DataSetFormatOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetFormat_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetFormat_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.DataSetFormat.class, com.acme.glup.MetadataProto.DataSetFormat.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.DataSetFormat.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        path_ = "";

        fileFormat_ = 0;

        partitionScheme_ = 0;

        if (startPartitionBuilder_ == null) {
          startPartition_ = null;
        } else {
          startPartition_ = null;
          startPartitionBuilder_ = null;
        }
        if (endPartitionBuilder_ == null) {
          endPartition_ = null;
        } else {
          endPartition_ = null;
          endPartitionBuilder_ = null;
        }
        retentionDays_ = 0;

        priority_ = 0;

        label_ = "";

        monitoringLevel_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_DataSetFormat_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSetFormat getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSetFormat build() {
        com.acme.glup.MetadataProto.DataSetFormat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.DataSetFormat buildPartial() {
        com.acme.glup.MetadataProto.DataSetFormat result = new com.acme.glup.MetadataProto.DataSetFormat(this);
        result.path_ = path_;
        result.fileFormat_ = fileFormat_;
        result.partitionScheme_ = partitionScheme_;
        if (startPartitionBuilder_ == null) {
          result.startPartition_ = startPartition_;
        } else {
          result.startPartition_ = startPartitionBuilder_.build();
        }
        if (endPartitionBuilder_ == null) {
          result.endPartition_ = endPartition_;
        } else {
          result.endPartition_ = endPartitionBuilder_.build();
        }
        result.retentionDays_ = retentionDays_;
        result.priority_ = priority_;
        result.label_ = label_;
        result.monitoringLevel_ = monitoringLevel_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.DataSetFormat) {
          return mergeFrom((com.acme.glup.MetadataProto.DataSetFormat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.DataSetFormat other) {
        if (other == com.acme.glup.MetadataProto.DataSetFormat.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (other.fileFormat_ != 0) {
          setFileFormatValue(other.getFileFormatValue());
        }
        if (other.partitionScheme_ != 0) {
          setPartitionSchemeValue(other.getPartitionSchemeValue());
        }
        if (other.hasStartPartition()) {
          mergeStartPartition(other.getStartPartition());
        }
        if (other.hasEndPartition()) {
          mergeEndPartition(other.getEndPartition());
        }
        if (other.getRetentionDays() != 0) {
          setRetentionDays(other.getRetentionDays());
        }
        if (other.getPriority() != 0) {
          setPriority(other.getPriority());
        }
        if (!other.getLabel().isEmpty()) {
          label_ = other.label_;
          onChanged();
        }
        if (other.monitoringLevel_ != 0) {
          setMonitoringLevelValue(other.getMonitoringLevelValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.DataSetFormat parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.DataSetFormat) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * Location of the data.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Location of the data.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Location of the data.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location of the data.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location of the data.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        path_ = value;
        onChanged();
        return this;
      }

      private int fileFormat_ = 0;
      /**
       * <pre>
       * File format used to store records.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
       * @return The enum numeric value on the wire for fileFormat.
       */
      public int getFileFormatValue() {
        return fileFormat_;
      }
      /**
       * <pre>
       * File format used to store records.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
       * @param value The enum numeric value on the wire for fileFormat to set.
       * @return This builder for chaining.
       */
      public Builder setFileFormatValue(int value) {
        fileFormat_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * File format used to store records.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
       * @return The fileFormat.
       */
      public com.acme.glup.MetadataProto.HDFSDataFormat getFileFormat() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(fileFormat_);
        return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * File format used to store records.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
       * @param value The fileFormat to set.
       * @return This builder for chaining.
       */
      public Builder setFileFormat(com.acme.glup.MetadataProto.HDFSDataFormat value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        fileFormat_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * File format used to store records.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSDataFormat file_format = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFileFormat() {
        
        fileFormat_ = 0;
        onChanged();
        return this;
      }

      private int partitionScheme_ = 0;
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @return The enum numeric value on the wire for partitionScheme.
       */
      public int getPartitionSchemeValue() {
        return partitionScheme_;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @param value The enum numeric value on the wire for partitionScheme to set.
       * @return This builder for chaining.
       */
      public Builder setPartitionSchemeValue(int value) {
        partitionScheme_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @return The partitionScheme.
       */
      public com.acme.glup.MetadataProto.PartitionScheme getPartitionScheme() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitionScheme_);
        return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @param value The partitionScheme to set.
       * @return This builder for chaining.
       */
      public Builder setPartitionScheme(com.acme.glup.MetadataProto.PartitionScheme value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        partitionScheme_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Partition scheme used to store data inside the path.
       * </pre>
       *
       * <code>.Acme.Glup.PartitionScheme partition_scheme = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPartitionScheme() {
        
        partitionScheme_ = 0;
        onChanged();
        return this;
      }

      private com.acme.glup.MetadataProto.HDFSPartition startPartition_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSPartition, com.acme.glup.MetadataProto.HDFSPartition.Builder, com.acme.glup.MetadataProto.HDFSPartitionOrBuilder> startPartitionBuilder_;
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       * @return Whether the startPartition field is set.
       */
      public boolean hasStartPartition() {
        return startPartitionBuilder_ != null || startPartition_ != null;
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       * @return The startPartition.
       */
      public com.acme.glup.MetadataProto.HDFSPartition getStartPartition() {
        if (startPartitionBuilder_ == null) {
          return startPartition_ == null ? com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance() : startPartition_;
        } else {
          return startPartitionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      public Builder setStartPartition(com.acme.glup.MetadataProto.HDFSPartition value) {
        if (startPartitionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startPartition_ = value;
          onChanged();
        } else {
          startPartitionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      public Builder setStartPartition(
          com.acme.glup.MetadataProto.HDFSPartition.Builder builderForValue) {
        if (startPartitionBuilder_ == null) {
          startPartition_ = builderForValue.build();
          onChanged();
        } else {
          startPartitionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      public Builder mergeStartPartition(com.acme.glup.MetadataProto.HDFSPartition value) {
        if (startPartitionBuilder_ == null) {
          if (startPartition_ != null) {
            startPartition_ =
              com.acme.glup.MetadataProto.HDFSPartition.newBuilder(startPartition_).mergeFrom(value).buildPartial();
          } else {
            startPartition_ = value;
          }
          onChanged();
        } else {
          startPartitionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      public Builder clearStartPartition() {
        if (startPartitionBuilder_ == null) {
          startPartition_ = null;
          onChanged();
        } else {
          startPartition_ = null;
          startPartitionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      public com.acme.glup.MetadataProto.HDFSPartition.Builder getStartPartitionBuilder() {
        
        onChanged();
        return getStartPartitionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      public com.acme.glup.MetadataProto.HDFSPartitionOrBuilder getStartPartitionOrBuilder() {
        if (startPartitionBuilder_ != null) {
          return startPartitionBuilder_.getMessageOrBuilder();
        } else {
          return startPartition_ == null ?
              com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance() : startPartition_;
        }
      }
      /**
       * <pre>
       * The minimum defined partition for this format inclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition start_partition = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSPartition, com.acme.glup.MetadataProto.HDFSPartition.Builder, com.acme.glup.MetadataProto.HDFSPartitionOrBuilder> 
          getStartPartitionFieldBuilder() {
        if (startPartitionBuilder_ == null) {
          startPartitionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSPartition, com.acme.glup.MetadataProto.HDFSPartition.Builder, com.acme.glup.MetadataProto.HDFSPartitionOrBuilder>(
                  getStartPartition(),
                  getParentForChildren(),
                  isClean());
          startPartition_ = null;
        }
        return startPartitionBuilder_;
      }

      private com.acme.glup.MetadataProto.HDFSPartition endPartition_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSPartition, com.acme.glup.MetadataProto.HDFSPartition.Builder, com.acme.glup.MetadataProto.HDFSPartitionOrBuilder> endPartitionBuilder_;
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       * @return Whether the endPartition field is set.
       */
      public boolean hasEndPartition() {
        return endPartitionBuilder_ != null || endPartition_ != null;
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       * @return The endPartition.
       */
      public com.acme.glup.MetadataProto.HDFSPartition getEndPartition() {
        if (endPartitionBuilder_ == null) {
          return endPartition_ == null ? com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance() : endPartition_;
        } else {
          return endPartitionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      public Builder setEndPartition(com.acme.glup.MetadataProto.HDFSPartition value) {
        if (endPartitionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endPartition_ = value;
          onChanged();
        } else {
          endPartitionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      public Builder setEndPartition(
          com.acme.glup.MetadataProto.HDFSPartition.Builder builderForValue) {
        if (endPartitionBuilder_ == null) {
          endPartition_ = builderForValue.build();
          onChanged();
        } else {
          endPartitionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      public Builder mergeEndPartition(com.acme.glup.MetadataProto.HDFSPartition value) {
        if (endPartitionBuilder_ == null) {
          if (endPartition_ != null) {
            endPartition_ =
              com.acme.glup.MetadataProto.HDFSPartition.newBuilder(endPartition_).mergeFrom(value).buildPartial();
          } else {
            endPartition_ = value;
          }
          onChanged();
        } else {
          endPartitionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      public Builder clearEndPartition() {
        if (endPartitionBuilder_ == null) {
          endPartition_ = null;
          onChanged();
        } else {
          endPartition_ = null;
          endPartitionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      public com.acme.glup.MetadataProto.HDFSPartition.Builder getEndPartitionBuilder() {
        
        onChanged();
        return getEndPartitionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      public com.acme.glup.MetadataProto.HDFSPartitionOrBuilder getEndPartitionOrBuilder() {
        if (endPartitionBuilder_ != null) {
          return endPartitionBuilder_.getMessageOrBuilder();
        } else {
          return endPartition_ == null ?
              com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance() : endPartition_;
        }
      }
      /**
       * <pre>
       * The maximum defined partition for this format exclusive.
       * </pre>
       *
       * <code>.Acme.Glup.HDFSPartition end_partition = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSPartition, com.acme.glup.MetadataProto.HDFSPartition.Builder, com.acme.glup.MetadataProto.HDFSPartitionOrBuilder> 
          getEndPartitionFieldBuilder() {
        if (endPartitionBuilder_ == null) {
          endPartitionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSPartition, com.acme.glup.MetadataProto.HDFSPartition.Builder, com.acme.glup.MetadataProto.HDFSPartitionOrBuilder>(
                  getEndPartition(),
                  getParentForChildren(),
                  isClean());
          endPartition_ = null;
        }
        return endPartitionBuilder_;
      }

      private int retentionDays_ ;
      /**
       * <pre>
       * Retention in days
       * </pre>
       *
       * <code>int32 retention_days = 7;</code>
       * @return The retentionDays.
       */
      public int getRetentionDays() {
        return retentionDays_;
      }
      /**
       * <pre>
       * Retention in days
       * </pre>
       *
       * <code>int32 retention_days = 7;</code>
       * @param value The retentionDays to set.
       * @return This builder for chaining.
       */
      public Builder setRetentionDays(int value) {
        
        retentionDays_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Retention in days
       * </pre>
       *
       * <code>int32 retention_days = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearRetentionDays() {
        
        retentionDays_ = 0;
        onChanged();
        return this;
      }

      private int priority_ ;
      /**
       * <pre>
       * Priority, bigger number means higher priority, 0 as the lowest, used to decide which format to use when several are available.
       * </pre>
       *
       * <code>int32 priority = 8;</code>
       * @return The priority.
       */
      public int getPriority() {
        return priority_;
      }
      /**
       * <pre>
       * Priority, bigger number means higher priority, 0 as the lowest, used to decide which format to use when several are available.
       * </pre>
       *
       * <code>int32 priority = 8;</code>
       * @param value The priority to set.
       * @return This builder for chaining.
       */
      public Builder setPriority(int value) {
        
        priority_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Priority, bigger number means higher priority, 0 as the lowest, used to decide which format to use when several are available.
       * </pre>
       *
       * <code>int32 priority = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearPriority() {
        
        priority_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object label_ = "";
      /**
       * <pre>
       * Label, should be unique across all formats in a same dataset.
       * </pre>
       *
       * <code>string label = 9;</code>
       * @return The label.
       */
      public java.lang.String getLabel() {
        java.lang.Object ref = label_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          label_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Label, should be unique across all formats in a same dataset.
       * </pre>
       *
       * <code>string label = 9;</code>
       * @return The bytes for label.
       */
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Label, should be unique across all formats in a same dataset.
       * </pre>
       *
       * <code>string label = 9;</code>
       * @param value The label to set.
       * @return This builder for chaining.
       */
      public Builder setLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        label_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Label, should be unique across all formats in a same dataset.
       * </pre>
       *
       * <code>string label = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearLabel() {
        
        label_ = getDefaultInstance().getLabel();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Label, should be unique across all formats in a same dataset.
       * </pre>
       *
       * <code>string label = 9;</code>
       * @param value The bytes for label to set.
       * @return This builder for chaining.
       */
      public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        label_ = value;
        onChanged();
        return this;
      }

      private int monitoringLevel_ = 0;
      /**
       * <pre>
       *Monitoring level, if not set DEFAULT will be applied
       * </pre>
       *
       * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
       * @return The enum numeric value on the wire for monitoringLevel.
       */
      public int getMonitoringLevelValue() {
        return monitoringLevel_;
      }
      /**
       * <pre>
       *Monitoring level, if not set DEFAULT will be applied
       * </pre>
       *
       * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
       * @param value The enum numeric value on the wire for monitoringLevel to set.
       * @return This builder for chaining.
       */
      public Builder setMonitoringLevelValue(int value) {
        monitoringLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Monitoring level, if not set DEFAULT will be applied
       * </pre>
       *
       * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
       * @return The monitoringLevel.
       */
      public com.acme.glup.MetadataProto.MonitoringLevel getMonitoringLevel() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.MonitoringLevel result = com.acme.glup.MetadataProto.MonitoringLevel.valueOf(monitoringLevel_);
        return result == null ? com.acme.glup.MetadataProto.MonitoringLevel.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       *Monitoring level, if not set DEFAULT will be applied
       * </pre>
       *
       * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
       * @param value The monitoringLevel to set.
       * @return This builder for chaining.
       */
      public Builder setMonitoringLevel(com.acme.glup.MetadataProto.MonitoringLevel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        monitoringLevel_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Monitoring level, if not set DEFAULT will be applied
       * </pre>
       *
       * <code>.Acme.Glup.MonitoringLevel monitoring_level = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearMonitoringLevel() {
        
        monitoringLevel_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.DataSetFormat)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.DataSetFormat)
    private static final com.acme.glup.MetadataProto.DataSetFormat DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.DataSetFormat();
    }

    public static com.acme.glup.MetadataProto.DataSetFormat getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DataSetFormat>
        PARSER = new com.google.protobuf.AbstractParser<DataSetFormat>() {
      @java.lang.Override
      public DataSetFormat parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DataSetFormat(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DataSetFormat> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DataSetFormat> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.DataSetFormat getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HDFSOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions> 
        getImportList();
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions getImport(int index);
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    int getImportCount();
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder> 
        getImportOrBuilderList();
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder getImportOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Acme.Glup.HDFSOptions}
   */
  public  static final class HDFSOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions)
      HDFSOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HDFSOptions.newBuilder() to construct.
    private HDFSOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HDFSOptions() {
      import_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HDFSOptions();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HDFSOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                import_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions>();
                mutable_bitField0_ |= 0x00000001;
              }
              import_.add(
                  input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          import_ = java.util.Collections.unmodifiableList(import_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.HDFSOptions.class, com.acme.glup.MetadataProto.HDFSOptions.Builder.class);
    }

    public interface ImportOptionsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * location on hdfs
       * </pre>
       *
       * <code>string owner = 1;</code>
       * @return The owner.
       */
      java.lang.String getOwner();
      /**
       * <pre>
       * location on hdfs
       * </pre>
       *
       * <code>string owner = 1;</code>
       * @return The bytes for owner.
       */
      com.google.protobuf.ByteString
          getOwnerBytes();

      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      java.lang.String getName();
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
       * @return The enum numeric value on the wire for partitioning.
       */
      int getPartitioningValue();
      /**
       * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
       * @return The partitioning.
       */
      com.acme.glup.MetadataProto.PartitionScheme getPartitioning();

      /**
       * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
       * @return The enum numeric value on the wire for format.
       */
      int getFormatValue();
      /**
       * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
       * @return The format.
       */
      com.acme.glup.MetadataProto.HDFSDataFormat getFormat();

      /**
       * <pre>
       * if set to true, imported data won't be readable from other users
       * (permission o-rwx)
       * </pre>
       *
       * <code>bool private = 6;</code>
       * @return The private.
       */
      boolean getPrivate();

      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator> 
          getGeneratorList();
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator getGenerator(int index);
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      int getGeneratorCount();
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder> 
          getGeneratorOrBuilderList();
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder getGeneratorOrBuilder(
          int index);

      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View> 
          getViewList();
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View getView(int index);
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      int getViewCount();
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder> 
          getViewOrBuilderList();
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder getViewOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions}
     */
    public  static final class ImportOptions extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions)
        ImportOptionsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ImportOptions.newBuilder() to construct.
      private ImportOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ImportOptions() {
        owner_ = "";
        name_ = "";
        partitioning_ = 0;
        format_ = 0;
        generator_ = java.util.Collections.emptyList();
        view_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ImportOptions();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ImportOptions(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();

                owner_ = s;
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 32: {
                int rawValue = input.readEnum();

                partitioning_ = rawValue;
                break;
              }
              case 40: {
                int rawValue = input.readEnum();

                format_ = rawValue;
                break;
              }
              case 48: {

                private_ = input.readBool();
                break;
              }
              case 90: {
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  generator_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator>();
                  mutable_bitField0_ |= 0x00000001;
                }
                generator_.add(
                    input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.parser(), extensionRegistry));
                break;
              }
              case 98: {
                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                  view_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View>();
                  mutable_bitField0_ |= 0x00000002;
                }
                view_.add(
                    input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.parser(), extensionRegistry));
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) != 0)) {
            generator_ = java.util.Collections.unmodifiableList(generator_);
          }
          if (((mutable_bitField0_ & 0x00000002) != 0)) {
            view_ = java.util.Collections.unmodifiableList(view_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder.class);
      }

      public interface ViewOrBuilder extends
          // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.View)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * define table mapping in hive
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
         * @return Whether the hive field is set.
         */
        boolean hasHive();
        /**
         * <pre>
         * define table mapping in hive
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
         * @return The hive.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions getHive();
        /**
         * <pre>
         * define table mapping in hive
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder getHiveOrBuilder();
      }
      /**
       * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.View}
       */
      public  static final class View extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.View)
          ViewOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use View.newBuilder() to construct.
        private View(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private View() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new View();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private View(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 82: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder subBuilder = null;
                  if (hive_ != null) {
                    subBuilder = hive_.toBuilder();
                  }
                  hive_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(hive_);
                    hive_ = subBuilder.buildPartial();
                  }

                  break;
                }
                default: {
                  if (!parseUnknownField(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder.class);
        }

        public interface HiveOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * if not provided it will default to the glup partition_scheme
           * </pre>
           *
           * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
           * @return The enum numeric value on the wire for partitioning.
           */
          int getPartitioningValue();
          /**
           * <pre>
           * if not provided it will default to the glup partition_scheme
           * </pre>
           *
           * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
           * @return The partitioning.
           */
          com.acme.glup.MetadataProto.PartitionScheme getPartitioning();
        }
        /**
         * <pre>
         * Defines a table view of a surrounding hdfs import into hive.
         * All other settings (owner, namespace, name) are already
         * in the surrounding block.
         * </pre>
         *
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions}
         */
        public  static final class HiveOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions)
            HiveOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use HiveOptions.newBuilder() to construct.
          private HiveOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private HiveOptions() {
            partitioning_ = 0;
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new HiveOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private HiveOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 24: {
                    int rawValue = input.readEnum();

                    partitioning_ = rawValue;
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder.class);
          }

          public static final int PARTITIONING_FIELD_NUMBER = 3;
          private int partitioning_;
          /**
           * <pre>
           * if not provided it will default to the glup partition_scheme
           * </pre>
           *
           * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
           * @return The enum numeric value on the wire for partitioning.
           */
          public int getPartitioningValue() {
            return partitioning_;
          }
          /**
           * <pre>
           * if not provided it will default to the glup partition_scheme
           * </pre>
           *
           * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
           * @return The partitioning.
           */
          public com.acme.glup.MetadataProto.PartitionScheme getPartitioning() {
            @SuppressWarnings("deprecation")
            com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitioning_);
            return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (partitioning_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
              output.writeEnum(3, partitioning_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (partitioning_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
              size += com.google.protobuf.CodedOutputStream
                .computeEnumSize(3, partitioning_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions) obj;

            if (partitioning_ != other.partitioning_) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + PARTITIONING_FIELD_NUMBER;
            hash = (53 * hash) + partitioning_;
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * <pre>
           * Defines a table view of a surrounding hdfs import into hive.
           * All other settings (owner, namespace, name) are already
           * in the surrounding block.
           * </pre>
           *
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              partitioning_ = 0;

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions(this);
              result.partitioning_ = partitioning_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.getDefaultInstance()) return this;
              if (other.partitioning_ != 0) {
                setPartitioningValue(other.getPartitioningValue());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private int partitioning_ = 0;
            /**
             * <pre>
             * if not provided it will default to the glup partition_scheme
             * </pre>
             *
             * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
             * @return The enum numeric value on the wire for partitioning.
             */
            public int getPartitioningValue() {
              return partitioning_;
            }
            /**
             * <pre>
             * if not provided it will default to the glup partition_scheme
             * </pre>
             *
             * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
             * @param value The enum numeric value on the wire for partitioning to set.
             * @return This builder for chaining.
             */
            public Builder setPartitioningValue(int value) {
              partitioning_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * if not provided it will default to the glup partition_scheme
             * </pre>
             *
             * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
             * @return The partitioning.
             */
            public com.acme.glup.MetadataProto.PartitionScheme getPartitioning() {
              @SuppressWarnings("deprecation")
              com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitioning_);
              return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
            }
            /**
             * <pre>
             * if not provided it will default to the glup partition_scheme
             * </pre>
             *
             * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
             * @param value The partitioning to set.
             * @return This builder for chaining.
             */
            public Builder setPartitioning(com.acme.glup.MetadataProto.PartitionScheme value) {
              if (value == null) {
                throw new NullPointerException();
              }
              
              partitioning_ = value.getNumber();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * if not provided it will default to the glup partition_scheme
             * </pre>
             *
             * <code>.Acme.Glup.PartitionScheme partitioning = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearPartitioning() {
              
              partitioning_ = 0;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<HiveOptions>
              PARSER = new com.google.protobuf.AbstractParser<HiveOptions>() {
            @java.lang.Override
            public HiveOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new HiveOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<HiveOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<HiveOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public static final int HIVE_FIELD_NUMBER = 10;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions hive_;
        /**
         * <pre>
         * define table mapping in hive
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
         * @return Whether the hive field is set.
         */
        public boolean hasHive() {
          return hive_ != null;
        }
        /**
         * <pre>
         * define table mapping in hive
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
         * @return The hive.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions getHive() {
          return hive_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.getDefaultInstance() : hive_;
        }
        /**
         * <pre>
         * define table mapping in hive
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder getHiveOrBuilder() {
          return getHive();
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (hive_ != null) {
            output.writeMessage(10, getHive());
          }
          unknownFields.writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          if (hive_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(10, getHive());
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View)) {
            return super.equals(obj);
          }
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View) obj;

          if (hasHive() != other.hasHive()) return false;
          if (hasHive()) {
            if (!getHive()
                .equals(other.getHive())) return false;
          }
          if (!unknownFields.equals(other.unknownFields)) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (hasHive()) {
            hash = (37 * hash) + HIVE_FIELD_NUMBER;
            hash = (53 * hash) + getHive().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.View}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.View)
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder.class);
          }

          // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            if (hiveBuilder_ == null) {
              hive_ = null;
            } else {
              hive_ = null;
              hiveBuilder_ = null;
            }
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View getDefaultInstanceForType() {
            return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.getDefaultInstance();
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View build() {
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View buildPartial() {
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View(this);
            if (hiveBuilder_ == null) {
              result.hive_ = hive_;
            } else {
              result.hive_ = hiveBuilder_.build();
            }
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder clone() {
            return super.clone();
          }
          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.setField(field, value);
          }
          @java.lang.Override
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }
          @java.lang.Override
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }
          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }
          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }
          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View) {
              return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View other) {
            if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.getDefaultInstance()) return this;
            if (other.hasHive()) {
              mergeHive(other.getHive());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions hive_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder> hiveBuilder_;
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           * @return Whether the hive field is set.
           */
          public boolean hasHive() {
            return hiveBuilder_ != null || hive_ != null;
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           * @return The hive.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions getHive() {
            if (hiveBuilder_ == null) {
              return hive_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.getDefaultInstance() : hive_;
            } else {
              return hiveBuilder_.getMessage();
            }
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          public Builder setHive(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions value) {
            if (hiveBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              hive_ = value;
              onChanged();
            } else {
              hiveBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          public Builder setHive(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder builderForValue) {
            if (hiveBuilder_ == null) {
              hive_ = builderForValue.build();
              onChanged();
            } else {
              hiveBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          public Builder mergeHive(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions value) {
            if (hiveBuilder_ == null) {
              if (hive_ != null) {
                hive_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.newBuilder(hive_).mergeFrom(value).buildPartial();
              } else {
                hive_ = value;
              }
              onChanged();
            } else {
              hiveBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          public Builder clearHive() {
            if (hiveBuilder_ == null) {
              hive_ = null;
              onChanged();
            } else {
              hive_ = null;
              hiveBuilder_ = null;
            }

            return this;
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder getHiveBuilder() {
            
            onChanged();
            return getHiveFieldBuilder().getBuilder();
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder getHiveOrBuilder() {
            if (hiveBuilder_ != null) {
              return hiveBuilder_.getMessageOrBuilder();
            } else {
              return hive_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.getDefaultInstance() : hive_;
            }
          }
          /**
           * <pre>
           * define table mapping in hive
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.View.HiveOptions hive = 10;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder> 
              getHiveFieldBuilder() {
            if (hiveBuilder_ == null) {
              hiveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.HiveOptionsOrBuilder>(
                      getHive(),
                      getParentForChildren(),
                      isClean());
              hive_ = null;
            }
            return hiveBuilder_;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.View)
        }

        // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.View)
        private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View();
        }

        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<View>
            PARSER = new com.google.protobuf.AbstractParser<View>() {
          @java.lang.Override
          public View parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new View(input, extensionRegistry);
          }
        };

        public static com.google.protobuf.Parser<View> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<View> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public interface GeneratorOrBuilder extends
          // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * oneof is not currently supporte by protonet
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
         * @return Whether the dataloader field is set.
         */
        boolean hasDataloader();
        /**
         * <pre>
         * oneof is not currently supporte by protonet
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
         * @return The dataloader.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions getDataloader();
        /**
         * <pre>
         * oneof is not currently supporte by protonet
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder getDataloaderOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
         * @return Whether the kafka2hdfs field is set.
         */
        boolean hasKafka2Hdfs();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
         * @return The kafka2hdfs.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions getKafka2Hdfs();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder getKafka2HdfsOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
         * @return Whether the sync field is set.
         */
        boolean hasSync();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
         * @return The sync.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions getSync();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder getSyncOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
         * @return Whether the external field is set.
         */
        boolean hasExternal();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
         * @return The external.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions getExternal();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder getExternalOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
         * @return Whether the backup field is set.
         */
        boolean hasBackup();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
         * @return The backup.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions getBackup();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder getBackupOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
         * @return Whether the transcoding field is set.
         */
        boolean hasTranscoding();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
         * @return The transcoding.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions getTranscoding();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder getTranscodingOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
         * @return Whether the kacoha field is set.
         */
        boolean hasKacoha();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
         * @return The kacoha.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions getKacoha();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder getKacohaOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
         * @return Whether the deduplicate field is set.
         */
        boolean hasDeduplicate();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
         * @return The deduplicate.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions getDeduplicate();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder getDeduplicateOrBuilder();

        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
         * @return Whether the sampler field is set.
         */
        boolean hasSampler();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
         * @return The sampler.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions getSampler();
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder getSamplerOrBuilder();

        /**
         * <pre>
         * Add here any new hdfs producer
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
         * @return Whether the comparator field is set.
         */
        boolean hasComparator();
        /**
         * <pre>
         * Add here any new hdfs producer
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
         * @return The comparator.
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions getComparator();
        /**
         * <pre>
         * Add here any new hdfs producer
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
         */
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder getComparatorOrBuilder();

        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        java.util.List<com.acme.glup.MetadataProto.Location> 
            getToList();
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        com.acme.glup.MetadataProto.Location getTo(int index);
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        int getToCount();
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        java.util.List<? extends com.acme.glup.MetadataProto.LocationOrBuilder> 
            getToOrBuilderList();
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        com.acme.glup.MetadataProto.LocationOrBuilder getToOrBuilder(
            int index);

        /**
         * <code>string namespace = 251;</code>
         * @return The namespace.
         */
        java.lang.String getNamespace();
        /**
         * <code>string namespace = 251;</code>
         * @return The bytes for namespace.
         */
        com.google.protobuf.ByteString
            getNamespaceBytes();

        /**
         * <pre>
         * define beginning date inclusive
         * </pre>
         *
         * <code>string start_date = 253;</code>
         * @return The startDate.
         */
        java.lang.String getStartDate();
        /**
         * <pre>
         * define beginning date inclusive
         * </pre>
         *
         * <code>string start_date = 253;</code>
         * @return The bytes for startDate.
         */
        com.google.protobuf.ByteString
            getStartDateBytes();

        /**
         * <pre>
         * define stop date exclusive
         * </pre>
         *
         * <code>string stop_date = 254;</code>
         * @return The stopDate.
         */
        java.lang.String getStopDate();
        /**
         * <pre>
         * define stop date exclusive
         * </pre>
         *
         * <code>string stop_date = 254;</code>
         * @return The bytes for stopDate.
         */
        com.google.protobuf.ByteString
            getStopDateBytes();

        /**
         * <pre>
         * TODO : remove this property when RIVERS-3723 (remove CN platform) is over
         * </pre>
         *
         * <code>bool ignore_cn = 255;</code>
         * @return The ignoreCn.
         */
        boolean getIgnoreCn();
      }
      /**
       * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator}
       */
      public  static final class Generator extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator)
          GeneratorOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Generator.newBuilder() to construct.
        private Generator(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Generator() {
          to_ = java.util.Collections.emptyList();
          namespace_ = "";
          startDate_ = "";
          stopDate_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new Generator();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private Generator(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder subBuilder = null;
                  if (dataloader_ != null) {
                    subBuilder = dataloader_.toBuilder();
                  }
                  dataloader_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(dataloader_);
                    dataloader_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 18: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder subBuilder = null;
                  if (kafka2Hdfs_ != null) {
                    subBuilder = kafka2Hdfs_.toBuilder();
                  }
                  kafka2Hdfs_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(kafka2Hdfs_);
                    kafka2Hdfs_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 26: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder subBuilder = null;
                  if (sync_ != null) {
                    subBuilder = sync_.toBuilder();
                  }
                  sync_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(sync_);
                    sync_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 34: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder subBuilder = null;
                  if (external_ != null) {
                    subBuilder = external_.toBuilder();
                  }
                  external_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(external_);
                    external_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 42: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder subBuilder = null;
                  if (backup_ != null) {
                    subBuilder = backup_.toBuilder();
                  }
                  backup_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(backup_);
                    backup_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 50: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder subBuilder = null;
                  if (transcoding_ != null) {
                    subBuilder = transcoding_.toBuilder();
                  }
                  transcoding_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(transcoding_);
                    transcoding_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 58: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder subBuilder = null;
                  if (kacoha_ != null) {
                    subBuilder = kacoha_.toBuilder();
                  }
                  kacoha_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(kacoha_);
                    kacoha_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 66: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder subBuilder = null;
                  if (deduplicate_ != null) {
                    subBuilder = deduplicate_.toBuilder();
                  }
                  deduplicate_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(deduplicate_);
                    deduplicate_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 74: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder subBuilder = null;
                  if (sampler_ != null) {
                    subBuilder = sampler_.toBuilder();
                  }
                  sampler_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(sampler_);
                    sampler_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 82: {
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder subBuilder = null;
                  if (comparator_ != null) {
                    subBuilder = comparator_.toBuilder();
                  }
                  comparator_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.parser(), extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(comparator_);
                    comparator_ = subBuilder.buildPartial();
                  }

                  break;
                }
                case 2002: {
                  if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                    to_ = new java.util.ArrayList<com.acme.glup.MetadataProto.Location>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  to_.add(
                      input.readMessage(com.acme.glup.MetadataProto.Location.parser(), extensionRegistry));
                  break;
                }
                case 2010: {
                  java.lang.String s = input.readStringRequireUtf8();

                  namespace_ = s;
                  break;
                }
                case 2026: {
                  java.lang.String s = input.readStringRequireUtf8();

                  startDate_ = s;
                  break;
                }
                case 2034: {
                  java.lang.String s = input.readStringRequireUtf8();

                  stopDate_ = s;
                  break;
                }
                case 2040: {

                  ignoreCn_ = input.readBool();
                  break;
                }
                default: {
                  if (!parseUnknownField(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000001) != 0)) {
              to_ = java.util.Collections.unmodifiableList(to_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder.class);
        }

        public interface DedupOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * Name of input dataset to deduplicate
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The inputDatasetId.
           */
          java.lang.String getInputDatasetId();
          /**
           * <pre>
           * Name of input dataset to deduplicate
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The bytes for inputDatasetId.
           */
          com.google.protobuf.ByteString
              getInputDatasetIdBytes();

          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The inputFormatLabel.
           */
          java.lang.String getInputFormatLabel();
          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The bytes for inputFormatLabel.
           */
          com.google.protobuf.ByteString
              getInputFormatLabelBytes();

          /**
           * <pre>
           * Name of output dataset to deduplicate
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The outputDatasetId.
           */
          java.lang.String getOutputDatasetId();
          /**
           * <pre>
           * Name of output dataset to deduplicate
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The bytes for outputDatasetId.
           */
          com.google.protobuf.ByteString
              getOutputDatasetIdBytes();

          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The outputFormatLabel.
           */
          java.lang.String getOutputFormatLabel();
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The bytes for outputFormatLabel.
           */
          com.google.protobuf.ByteString
              getOutputFormatLabelBytes();

          /**
           * <pre>
           * Generate the conf for the cuttle job and not for the legacy lobster job
           * Check RIVERS-3614 for details
           * TODO : remove this property when lobster job will be fully decomissioned
           * </pre>
           *
           * <code>bool use_hippo_cuttle_job = 5;</code>
           * @return The useHippoCuttleJob.
           */
          boolean getUseHippoCuttleJob();
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions}
         */
        public  static final class DedupOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions)
            DedupOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use DedupOptions.newBuilder() to construct.
          private DedupOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private DedupOptions() {
            inputDatasetId_ = "";
            inputFormatLabel_ = "";
            outputDatasetId_ = "";
            outputFormatLabel_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new DedupOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private DedupOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    java.lang.String s = input.readStringRequireUtf8();

                    inputDatasetId_ = s;
                    break;
                  }
                  case 18: {
                    java.lang.String s = input.readStringRequireUtf8();

                    inputFormatLabel_ = s;
                    break;
                  }
                  case 26: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputDatasetId_ = s;
                    break;
                  }
                  case 34: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputFormatLabel_ = s;
                    break;
                  }
                  case 40: {

                    useHippoCuttleJob_ = input.readBool();
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder.class);
          }

          public static final int INPUT_DATASET_ID_FIELD_NUMBER = 1;
          private volatile java.lang.Object inputDatasetId_;
          /**
           * <pre>
           * Name of input dataset to deduplicate
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The inputDatasetId.
           */
          public java.lang.String getInputDatasetId() {
            java.lang.Object ref = inputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              inputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Name of input dataset to deduplicate
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The bytes for inputDatasetId.
           */
          public com.google.protobuf.ByteString
              getInputDatasetIdBytes() {
            java.lang.Object ref = inputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              inputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int INPUT_FORMAT_LABEL_FIELD_NUMBER = 2;
          private volatile java.lang.Object inputFormatLabel_;
          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The inputFormatLabel.
           */
          public java.lang.String getInputFormatLabel() {
            java.lang.Object ref = inputFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              inputFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The bytes for inputFormatLabel.
           */
          public com.google.protobuf.ByteString
              getInputFormatLabelBytes() {
            java.lang.Object ref = inputFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              inputFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_DATASET_ID_FIELD_NUMBER = 3;
          private volatile java.lang.Object outputDatasetId_;
          /**
           * <pre>
           * Name of output dataset to deduplicate
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The outputDatasetId.
           */
          public java.lang.String getOutputDatasetId() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Name of output dataset to deduplicate
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The bytes for outputDatasetId.
           */
          public com.google.protobuf.ByteString
              getOutputDatasetIdBytes() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_FORMAT_LABEL_FIELD_NUMBER = 4;
          private volatile java.lang.Object outputFormatLabel_;
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The outputFormatLabel.
           */
          public java.lang.String getOutputFormatLabel() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The bytes for outputFormatLabel.
           */
          public com.google.protobuf.ByteString
              getOutputFormatLabelBytes() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int USE_HIPPO_CUTTLE_JOB_FIELD_NUMBER = 5;
          private boolean useHippoCuttleJob_;
          /**
           * <pre>
           * Generate the conf for the cuttle job and not for the legacy lobster job
           * Check RIVERS-3614 for details
           * TODO : remove this property when lobster job will be fully decomissioned
           * </pre>
           *
           * <code>bool use_hippo_cuttle_job = 5;</code>
           * @return The useHippoCuttleJob.
           */
          public boolean getUseHippoCuttleJob() {
            return useHippoCuttleJob_;
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!getInputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, inputDatasetId_);
            }
            if (!getInputFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 2, inputFormatLabel_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 3, outputDatasetId_);
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 4, outputFormatLabel_);
            }
            if (useHippoCuttleJob_ != false) {
              output.writeBool(5, useHippoCuttleJob_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!getInputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, inputDatasetId_);
            }
            if (!getInputFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, inputFormatLabel_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, outputDatasetId_);
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, outputFormatLabel_);
            }
            if (useHippoCuttleJob_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(5, useHippoCuttleJob_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions) obj;

            if (!getInputDatasetId()
                .equals(other.getInputDatasetId())) return false;
            if (!getInputFormatLabel()
                .equals(other.getInputFormatLabel())) return false;
            if (!getOutputDatasetId()
                .equals(other.getOutputDatasetId())) return false;
            if (!getOutputFormatLabel()
                .equals(other.getOutputFormatLabel())) return false;
            if (getUseHippoCuttleJob()
                != other.getUseHippoCuttleJob()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + INPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getInputDatasetId().hashCode();
            hash = (37 * hash) + INPUT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getInputFormatLabel().hashCode();
            hash = (37 * hash) + OUTPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getOutputDatasetId().hashCode();
            hash = (37 * hash) + OUTPUT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getOutputFormatLabel().hashCode();
            hash = (37 * hash) + USE_HIPPO_CUTTLE_JOB_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getUseHippoCuttleJob());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              inputDatasetId_ = "";

              inputFormatLabel_ = "";

              outputDatasetId_ = "";

              outputFormatLabel_ = "";

              useHippoCuttleJob_ = false;

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions(this);
              result.inputDatasetId_ = inputDatasetId_;
              result.inputFormatLabel_ = inputFormatLabel_;
              result.outputDatasetId_ = outputDatasetId_;
              result.outputFormatLabel_ = outputFormatLabel_;
              result.useHippoCuttleJob_ = useHippoCuttleJob_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.getDefaultInstance()) return this;
              if (!other.getInputDatasetId().isEmpty()) {
                inputDatasetId_ = other.inputDatasetId_;
                onChanged();
              }
              if (!other.getInputFormatLabel().isEmpty()) {
                inputFormatLabel_ = other.inputFormatLabel_;
                onChanged();
              }
              if (!other.getOutputDatasetId().isEmpty()) {
                outputDatasetId_ = other.outputDatasetId_;
                onChanged();
              }
              if (!other.getOutputFormatLabel().isEmpty()) {
                outputFormatLabel_ = other.outputFormatLabel_;
                onChanged();
              }
              if (other.getUseHippoCuttleJob() != false) {
                setUseHippoCuttleJob(other.getUseHippoCuttleJob());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private java.lang.Object inputDatasetId_ = "";
            /**
             * <pre>
             * Name of input dataset to deduplicate
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return The inputDatasetId.
             */
            public java.lang.String getInputDatasetId() {
              java.lang.Object ref = inputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                inputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Name of input dataset to deduplicate
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return The bytes for inputDatasetId.
             */
            public com.google.protobuf.ByteString
                getInputDatasetIdBytes() {
              java.lang.Object ref = inputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                inputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Name of input dataset to deduplicate
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @param value The inputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              inputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of input dataset to deduplicate
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputDatasetId() {
              
              inputDatasetId_ = getDefaultInstance().getInputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of input dataset to deduplicate
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @param value The bytes for inputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              inputDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object inputFormatLabel_ = "";
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @return The inputFormatLabel.
             */
            public java.lang.String getInputFormatLabel() {
              java.lang.Object ref = inputFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                inputFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @return The bytes for inputFormatLabel.
             */
            public com.google.protobuf.ByteString
                getInputFormatLabelBytes() {
              java.lang.Object ref = inputFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                inputFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @param value The inputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setInputFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              inputFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputFormatLabel() {
              
              inputFormatLabel_ = getDefaultInstance().getInputFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @param value The bytes for inputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setInputFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              inputFormatLabel_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputDatasetId_ = "";
            /**
             * <pre>
             * Name of output dataset to deduplicate
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @return The outputDatasetId.
             */
            public java.lang.String getOutputDatasetId() {
              java.lang.Object ref = outputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Name of output dataset to deduplicate
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @return The bytes for outputDatasetId.
             */
            public com.google.protobuf.ByteString
                getOutputDatasetIdBytes() {
              java.lang.Object ref = outputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Name of output dataset to deduplicate
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @param value The outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of output dataset to deduplicate
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputDatasetId() {
              
              outputDatasetId_ = getDefaultInstance().getOutputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of output dataset to deduplicate
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @param value The bytes for outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputFormatLabel_ = "";
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @return The outputFormatLabel.
             */
            public java.lang.String getOutputFormatLabel() {
              java.lang.Object ref = outputFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @return The bytes for outputFormatLabel.
             */
            public com.google.protobuf.ByteString
                getOutputFormatLabelBytes() {
              java.lang.Object ref = outputFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @param value The outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputFormatLabel() {
              
              outputFormatLabel_ = getDefaultInstance().getOutputFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @param value The bytes for outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }

            private boolean useHippoCuttleJob_ ;
            /**
             * <pre>
             * Generate the conf for the cuttle job and not for the legacy lobster job
             * Check RIVERS-3614 for details
             * TODO : remove this property when lobster job will be fully decomissioned
             * </pre>
             *
             * <code>bool use_hippo_cuttle_job = 5;</code>
             * @return The useHippoCuttleJob.
             */
            public boolean getUseHippoCuttleJob() {
              return useHippoCuttleJob_;
            }
            /**
             * <pre>
             * Generate the conf for the cuttle job and not for the legacy lobster job
             * Check RIVERS-3614 for details
             * TODO : remove this property when lobster job will be fully decomissioned
             * </pre>
             *
             * <code>bool use_hippo_cuttle_job = 5;</code>
             * @param value The useHippoCuttleJob to set.
             * @return This builder for chaining.
             */
            public Builder setUseHippoCuttleJob(boolean value) {
              
              useHippoCuttleJob_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Generate the conf for the cuttle job and not for the legacy lobster job
             * Check RIVERS-3614 for details
             * TODO : remove this property when lobster job will be fully decomissioned
             * </pre>
             *
             * <code>bool use_hippo_cuttle_job = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearUseHippoCuttleJob() {
              
              useHippoCuttleJob_ = false;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<DedupOptions>
              PARSER = new com.google.protobuf.AbstractParser<DedupOptions>() {
            @java.lang.Override
            public DedupOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new DedupOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<DedupOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<DedupOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface Kafka2HdfsOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * settings specific to kafka2hdfs
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The topic.
           */
          java.lang.String getTopic();
          /**
           * <pre>
           * settings specific to kafka2hdfs
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The bytes for topic.
           */
          com.google.protobuf.ByteString
              getTopicBytes();

          /**
           * <pre>
           * should the output be deduplicated
           * </pre>
           *
           * <code>bool deduplicate = 3;</code>
           * @return The deduplicate.
           */
          boolean getDeduplicate();

          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 4;</code>
           * @return The outputDatasetId.
           */
          java.lang.String getOutputDatasetId();
          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 4;</code>
           * @return The bytes for outputDatasetId.
           */
          com.google.protobuf.ByteString
              getOutputDatasetIdBytes();

          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The outputFormatLabel.
           */
          java.lang.String getOutputFormatLabel();
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The bytes for outputFormatLabel.
           */
          com.google.protobuf.ByteString
              getOutputFormatLabelBytes();
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions}
         */
        public  static final class Kafka2HdfsOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)
            Kafka2HdfsOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use Kafka2HdfsOptions.newBuilder() to construct.
          private Kafka2HdfsOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private Kafka2HdfsOptions() {
            topic_ = "";
            outputDatasetId_ = "";
            outputFormatLabel_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new Kafka2HdfsOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private Kafka2HdfsOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    java.lang.String s = input.readStringRequireUtf8();

                    topic_ = s;
                    break;
                  }
                  case 24: {

                    deduplicate_ = input.readBool();
                    break;
                  }
                  case 34: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputDatasetId_ = s;
                    break;
                  }
                  case 42: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputFormatLabel_ = s;
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder.class);
          }

          public static final int TOPIC_FIELD_NUMBER = 1;
          private volatile java.lang.Object topic_;
          /**
           * <pre>
           * settings specific to kafka2hdfs
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The topic.
           */
          public java.lang.String getTopic() {
            java.lang.Object ref = topic_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              topic_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * settings specific to kafka2hdfs
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The bytes for topic.
           */
          public com.google.protobuf.ByteString
              getTopicBytes() {
            java.lang.Object ref = topic_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              topic_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int DEDUPLICATE_FIELD_NUMBER = 3;
          private boolean deduplicate_;
          /**
           * <pre>
           * should the output be deduplicated
           * </pre>
           *
           * <code>bool deduplicate = 3;</code>
           * @return The deduplicate.
           */
          public boolean getDeduplicate() {
            return deduplicate_;
          }

          public static final int OUTPUT_DATASET_ID_FIELD_NUMBER = 4;
          private volatile java.lang.Object outputDatasetId_;
          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 4;</code>
           * @return The outputDatasetId.
           */
          public java.lang.String getOutputDatasetId() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 4;</code>
           * @return The bytes for outputDatasetId.
           */
          public com.google.protobuf.ByteString
              getOutputDatasetIdBytes() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_FORMAT_LABEL_FIELD_NUMBER = 5;
          private volatile java.lang.Object outputFormatLabel_;
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The outputFormatLabel.
           */
          public java.lang.String getOutputFormatLabel() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The bytes for outputFormatLabel.
           */
          public com.google.protobuf.ByteString
              getOutputFormatLabelBytes() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!getTopicBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, topic_);
            }
            if (deduplicate_ != false) {
              output.writeBool(3, deduplicate_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 4, outputDatasetId_);
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 5, outputFormatLabel_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!getTopicBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, topic_);
            }
            if (deduplicate_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(3, deduplicate_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, outputDatasetId_);
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, outputFormatLabel_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions) obj;

            if (!getTopic()
                .equals(other.getTopic())) return false;
            if (getDeduplicate()
                != other.getDeduplicate()) return false;
            if (!getOutputDatasetId()
                .equals(other.getOutputDatasetId())) return false;
            if (!getOutputFormatLabel()
                .equals(other.getOutputFormatLabel())) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + TOPIC_FIELD_NUMBER;
            hash = (53 * hash) + getTopic().hashCode();
            hash = (37 * hash) + DEDUPLICATE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getDeduplicate());
            hash = (37 * hash) + OUTPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getOutputDatasetId().hashCode();
            hash = (37 * hash) + OUTPUT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getOutputFormatLabel().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              topic_ = "";

              deduplicate_ = false;

              outputDatasetId_ = "";

              outputFormatLabel_ = "";

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions(this);
              result.topic_ = topic_;
              result.deduplicate_ = deduplicate_;
              result.outputDatasetId_ = outputDatasetId_;
              result.outputFormatLabel_ = outputFormatLabel_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.getDefaultInstance()) return this;
              if (!other.getTopic().isEmpty()) {
                topic_ = other.topic_;
                onChanged();
              }
              if (other.getDeduplicate() != false) {
                setDeduplicate(other.getDeduplicate());
              }
              if (!other.getOutputDatasetId().isEmpty()) {
                outputDatasetId_ = other.outputDatasetId_;
                onChanged();
              }
              if (!other.getOutputFormatLabel().isEmpty()) {
                outputFormatLabel_ = other.outputFormatLabel_;
                onChanged();
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private java.lang.Object topic_ = "";
            /**
             * <pre>
             * settings specific to kafka2hdfs
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @return The topic.
             */
            public java.lang.String getTopic() {
              java.lang.Object ref = topic_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                topic_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * settings specific to kafka2hdfs
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @return The bytes for topic.
             */
            public com.google.protobuf.ByteString
                getTopicBytes() {
              java.lang.Object ref = topic_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                topic_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * settings specific to kafka2hdfs
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @param value The topic to set.
             * @return This builder for chaining.
             */
            public Builder setTopic(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              topic_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to kafka2hdfs
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearTopic() {
              
              topic_ = getDefaultInstance().getTopic();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to kafka2hdfs
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @param value The bytes for topic to set.
             * @return This builder for chaining.
             */
            public Builder setTopicBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              topic_ = value;
              onChanged();
              return this;
            }

            private boolean deduplicate_ ;
            /**
             * <pre>
             * should the output be deduplicated
             * </pre>
             *
             * <code>bool deduplicate = 3;</code>
             * @return The deduplicate.
             */
            public boolean getDeduplicate() {
              return deduplicate_;
            }
            /**
             * <pre>
             * should the output be deduplicated
             * </pre>
             *
             * <code>bool deduplicate = 3;</code>
             * @param value The deduplicate to set.
             * @return This builder for chaining.
             */
            public Builder setDeduplicate(boolean value) {
              
              deduplicate_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * should the output be deduplicated
             * </pre>
             *
             * <code>bool deduplicate = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearDeduplicate() {
              
              deduplicate_ = false;
              onChanged();
              return this;
            }

            private java.lang.Object outputDatasetId_ = "";
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 4;</code>
             * @return The outputDatasetId.
             */
            public java.lang.String getOutputDatasetId() {
              java.lang.Object ref = outputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 4;</code>
             * @return The bytes for outputDatasetId.
             */
            public com.google.protobuf.ByteString
                getOutputDatasetIdBytes() {
              java.lang.Object ref = outputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 4;</code>
             * @param value The outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputDatasetId() {
              
              outputDatasetId_ = getDefaultInstance().getOutputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 4;</code>
             * @param value The bytes for outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputFormatLabel_ = "";
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @return The outputFormatLabel.
             */
            public java.lang.String getOutputFormatLabel() {
              java.lang.Object ref = outputFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @return The bytes for outputFormatLabel.
             */
            public com.google.protobuf.ByteString
                getOutputFormatLabelBytes() {
              java.lang.Object ref = outputFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @param value The outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputFormatLabel() {
              
              outputFormatLabel_ = getDefaultInstance().getOutputFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @param value The bytes for outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<Kafka2HdfsOptions>
              PARSER = new com.google.protobuf.AbstractParser<Kafka2HdfsOptions>() {
            @java.lang.Override
            public Kafka2HdfsOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new Kafka2HdfsOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<Kafka2HdfsOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<Kafka2HdfsOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface KacohaConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * How many partitions per task
           * </pre>
           *
           * <code>int32 partitions_per_task = 1;</code>
           * @return The partitionsPerTask.
           */
          int getPartitionsPerTask();

          /**
           * <pre>
           * The size of the poll buffer used in KaCoHa
           * </pre>
           *
           * <code>int32 poll_buffer_size_bytes = 2;</code>
           * @return The pollBufferSizeBytes.
           */
          int getPollBufferSizeBytes();
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig}
         */
        public  static final class KacohaConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig)
            KacohaConfigOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use KacohaConfig.newBuilder() to construct.
          private KacohaConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private KacohaConfig() {
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new KacohaConfig();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private KacohaConfig(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 8: {

                    partitionsPerTask_ = input.readInt32();
                    break;
                  }
                  case 16: {

                    pollBufferSizeBytes_ = input.readInt32();
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder.class);
          }

          public static final int PARTITIONS_PER_TASK_FIELD_NUMBER = 1;
          private int partitionsPerTask_;
          /**
           * <pre>
           * How many partitions per task
           * </pre>
           *
           * <code>int32 partitions_per_task = 1;</code>
           * @return The partitionsPerTask.
           */
          public int getPartitionsPerTask() {
            return partitionsPerTask_;
          }

          public static final int POLL_BUFFER_SIZE_BYTES_FIELD_NUMBER = 2;
          private int pollBufferSizeBytes_;
          /**
           * <pre>
           * The size of the poll buffer used in KaCoHa
           * </pre>
           *
           * <code>int32 poll_buffer_size_bytes = 2;</code>
           * @return The pollBufferSizeBytes.
           */
          public int getPollBufferSizeBytes() {
            return pollBufferSizeBytes_;
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (partitionsPerTask_ != 0) {
              output.writeInt32(1, partitionsPerTask_);
            }
            if (pollBufferSizeBytes_ != 0) {
              output.writeInt32(2, pollBufferSizeBytes_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (partitionsPerTask_ != 0) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt32Size(1, partitionsPerTask_);
            }
            if (pollBufferSizeBytes_ != 0) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt32Size(2, pollBufferSizeBytes_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig) obj;

            if (getPartitionsPerTask()
                != other.getPartitionsPerTask()) return false;
            if (getPollBufferSizeBytes()
                != other.getPollBufferSizeBytes()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + PARTITIONS_PER_TASK_FIELD_NUMBER;
            hash = (53 * hash) + getPartitionsPerTask();
            hash = (37 * hash) + POLL_BUFFER_SIZE_BYTES_FIELD_NUMBER;
            hash = (53 * hash) + getPollBufferSizeBytes();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              partitionsPerTask_ = 0;

              pollBufferSizeBytes_ = 0;

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig(this);
              result.partitionsPerTask_ = partitionsPerTask_;
              result.pollBufferSizeBytes_ = pollBufferSizeBytes_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance()) return this;
              if (other.getPartitionsPerTask() != 0) {
                setPartitionsPerTask(other.getPartitionsPerTask());
              }
              if (other.getPollBufferSizeBytes() != 0) {
                setPollBufferSizeBytes(other.getPollBufferSizeBytes());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private int partitionsPerTask_ ;
            /**
             * <pre>
             * How many partitions per task
             * </pre>
             *
             * <code>int32 partitions_per_task = 1;</code>
             * @return The partitionsPerTask.
             */
            public int getPartitionsPerTask() {
              return partitionsPerTask_;
            }
            /**
             * <pre>
             * How many partitions per task
             * </pre>
             *
             * <code>int32 partitions_per_task = 1;</code>
             * @param value The partitionsPerTask to set.
             * @return This builder for chaining.
             */
            public Builder setPartitionsPerTask(int value) {
              
              partitionsPerTask_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * How many partitions per task
             * </pre>
             *
             * <code>int32 partitions_per_task = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPartitionsPerTask() {
              
              partitionsPerTask_ = 0;
              onChanged();
              return this;
            }

            private int pollBufferSizeBytes_ ;
            /**
             * <pre>
             * The size of the poll buffer used in KaCoHa
             * </pre>
             *
             * <code>int32 poll_buffer_size_bytes = 2;</code>
             * @return The pollBufferSizeBytes.
             */
            public int getPollBufferSizeBytes() {
              return pollBufferSizeBytes_;
            }
            /**
             * <pre>
             * The size of the poll buffer used in KaCoHa
             * </pre>
             *
             * <code>int32 poll_buffer_size_bytes = 2;</code>
             * @param value The pollBufferSizeBytes to set.
             * @return This builder for chaining.
             */
            public Builder setPollBufferSizeBytes(int value) {
              
              pollBufferSizeBytes_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The size of the poll buffer used in KaCoHa
             * </pre>
             *
             * <code>int32 poll_buffer_size_bytes = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearPollBufferSizeBytes() {
              
              pollBufferSizeBytes_ = 0;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<KacohaConfig>
              PARSER = new com.google.protobuf.AbstractParser<KacohaConfig>() {
            @java.lang.Override
            public KacohaConfig parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new KacohaConfig(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<KacohaConfig> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<KacohaConfig> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface KacohaConfigPerDcOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * The Data center to which this config applies
           * </pre>
           *
           * <code>.Acme.Glup.DataCenter dc = 1;</code>
           * @return The enum numeric value on the wire for dc.
           */
          int getDcValue();
          /**
           * <pre>
           * The Data center to which this config applies
           * </pre>
           *
           * <code>.Acme.Glup.DataCenter dc = 1;</code>
           * @return The dc.
           */
          com.acme.glup.MetadataProto.DataCenter getDc();

          /**
           * <pre>
           * The configuration for this data center
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
           * @return Whether the config field is set.
           */
          boolean hasConfig();
          /**
           * <pre>
           * The configuration for this data center
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
           * @return The config.
           */
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getConfig();
          /**
           * <pre>
           * The configuration for this data center
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
           */
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder getConfigOrBuilder();
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc}
         */
        public  static final class KacohaConfigPerDc extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)
            KacohaConfigPerDcOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use KacohaConfigPerDc.newBuilder() to construct.
          private KacohaConfigPerDc(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private KacohaConfigPerDc() {
            dc_ = 0;
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new KacohaConfigPerDc();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private KacohaConfigPerDc(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 8: {
                    int rawValue = input.readEnum();

                    dc_ = rawValue;
                    break;
                  }
                  case 18: {
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder subBuilder = null;
                    if (config_ != null) {
                      subBuilder = config_.toBuilder();
                    }
                    config_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.parser(), extensionRegistry);
                    if (subBuilder != null) {
                      subBuilder.mergeFrom(config_);
                      config_ = subBuilder.buildPartial();
                    }

                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder.class);
          }

          public static final int DC_FIELD_NUMBER = 1;
          private int dc_;
          /**
           * <pre>
           * The Data center to which this config applies
           * </pre>
           *
           * <code>.Acme.Glup.DataCenter dc = 1;</code>
           * @return The enum numeric value on the wire for dc.
           */
          public int getDcValue() {
            return dc_;
          }
          /**
           * <pre>
           * The Data center to which this config applies
           * </pre>
           *
           * <code>.Acme.Glup.DataCenter dc = 1;</code>
           * @return The dc.
           */
          public com.acme.glup.MetadataProto.DataCenter getDc() {
            @SuppressWarnings("deprecation")
            com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(dc_);
            return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
          }

          public static final int CONFIG_FIELD_NUMBER = 2;
          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig config_;
          /**
           * <pre>
           * The configuration for this data center
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
           * @return Whether the config field is set.
           */
          public boolean hasConfig() {
            return config_ != null;
          }
          /**
           * <pre>
           * The configuration for this data center
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
           * @return The config.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getConfig() {
            return config_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance() : config_;
          }
          /**
           * <pre>
           * The configuration for this data center
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder getConfigOrBuilder() {
            return getConfig();
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (dc_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
              output.writeEnum(1, dc_);
            }
            if (config_ != null) {
              output.writeMessage(2, getConfig());
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (dc_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
              size += com.google.protobuf.CodedOutputStream
                .computeEnumSize(1, dc_);
            }
            if (config_ != null) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(2, getConfig());
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc) obj;

            if (dc_ != other.dc_) return false;
            if (hasConfig() != other.hasConfig()) return false;
            if (hasConfig()) {
              if (!getConfig()
                  .equals(other.getConfig())) return false;
            }
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + DC_FIELD_NUMBER;
            hash = (53 * hash) + dc_;
            if (hasConfig()) {
              hash = (37 * hash) + CONFIG_FIELD_NUMBER;
              hash = (53 * hash) + getConfig().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              dc_ = 0;

              if (configBuilder_ == null) {
                config_ = null;
              } else {
                config_ = null;
                configBuilder_ = null;
              }
              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc(this);
              result.dc_ = dc_;
              if (configBuilder_ == null) {
                result.config_ = config_;
              } else {
                result.config_ = configBuilder_.build();
              }
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.getDefaultInstance()) return this;
              if (other.dc_ != 0) {
                setDcValue(other.getDcValue());
              }
              if (other.hasConfig()) {
                mergeConfig(other.getConfig());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private int dc_ = 0;
            /**
             * <pre>
             * The Data center to which this config applies
             * </pre>
             *
             * <code>.Acme.Glup.DataCenter dc = 1;</code>
             * @return The enum numeric value on the wire for dc.
             */
            public int getDcValue() {
              return dc_;
            }
            /**
             * <pre>
             * The Data center to which this config applies
             * </pre>
             *
             * <code>.Acme.Glup.DataCenter dc = 1;</code>
             * @param value The enum numeric value on the wire for dc to set.
             * @return This builder for chaining.
             */
            public Builder setDcValue(int value) {
              dc_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The Data center to which this config applies
             * </pre>
             *
             * <code>.Acme.Glup.DataCenter dc = 1;</code>
             * @return The dc.
             */
            public com.acme.glup.MetadataProto.DataCenter getDc() {
              @SuppressWarnings("deprecation")
              com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(dc_);
              return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
            }
            /**
             * <pre>
             * The Data center to which this config applies
             * </pre>
             *
             * <code>.Acme.Glup.DataCenter dc = 1;</code>
             * @param value The dc to set.
             * @return This builder for chaining.
             */
            public Builder setDc(com.acme.glup.MetadataProto.DataCenter value) {
              if (value == null) {
                throw new NullPointerException();
              }
              
              dc_ = value.getNumber();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The Data center to which this config applies
             * </pre>
             *
             * <code>.Acme.Glup.DataCenter dc = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearDc() {
              
              dc_ = 0;
              onChanged();
              return this;
            }

            private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig config_;
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder> configBuilder_;
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             * @return Whether the config field is set.
             */
            public boolean hasConfig() {
              return configBuilder_ != null || config_ != null;
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             * @return The config.
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getConfig() {
              if (configBuilder_ == null) {
                return config_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance() : config_;
              } else {
                return configBuilder_.getMessage();
              }
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            public Builder setConfig(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig value) {
              if (configBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                config_ = value;
                onChanged();
              } else {
                configBuilder_.setMessage(value);
              }

              return this;
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            public Builder setConfig(
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder builderForValue) {
              if (configBuilder_ == null) {
                config_ = builderForValue.build();
                onChanged();
              } else {
                configBuilder_.setMessage(builderForValue.build());
              }

              return this;
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            public Builder mergeConfig(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig value) {
              if (configBuilder_ == null) {
                if (config_ != null) {
                  config_ =
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.newBuilder(config_).mergeFrom(value).buildPartial();
                } else {
                  config_ = value;
                }
                onChanged();
              } else {
                configBuilder_.mergeFrom(value);
              }

              return this;
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            public Builder clearConfig() {
              if (configBuilder_ == null) {
                config_ = null;
                onChanged();
              } else {
                config_ = null;
                configBuilder_ = null;
              }

              return this;
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder getConfigBuilder() {
              
              onChanged();
              return getConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder getConfigOrBuilder() {
              if (configBuilder_ != null) {
                return configBuilder_.getMessageOrBuilder();
              } else {
                return config_ == null ?
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance() : config_;
              }
            }
            /**
             * <pre>
             * The configuration for this data center
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder> 
                getConfigFieldBuilder() {
              if (configBuilder_ == null) {
                configBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder>(
                        getConfig(),
                        getParentForChildren(),
                        isClean());
                config_ = null;
              }
              return configBuilder_;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<KacohaConfigPerDc>
              PARSER = new com.google.protobuf.AbstractParser<KacohaConfigPerDc>() {
            @java.lang.Override
            public KacohaConfigPerDc parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new KacohaConfigPerDc(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<KacohaConfigPerDc> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<KacohaConfigPerDc> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface KaCoHaOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * settings specific to KaCoHa
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The topic.
           */
          java.lang.String getTopic();
          /**
           * <pre>
           * settings specific to KaCoHa
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The bytes for topic.
           */
          com.google.protobuf.ByteString
              getTopicBytes();

          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The outputDatasetId.
           */
          java.lang.String getOutputDatasetId();
          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The bytes for outputDatasetId.
           */
          com.google.protobuf.ByteString
              getOutputDatasetIdBytes();

          /**
           * <pre>
           * Deduplicate dataset in the consolidation
           * </pre>
           *
           * <code>bool deduplicate = 3;</code>
           * @return The deduplicate.
           */
          boolean getDeduplicate();

          /**
           * <pre>
           * Common configs for all data centers
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
           * @return Whether the config field is set.
           */
          boolean hasConfig();
          /**
           * <pre>
           * Common configs for all data centers
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
           * @return The config.
           */
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getConfig();
          /**
           * <pre>
           * Common configs for all data centers
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
           */
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder getConfigOrBuilder();

          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The outputFormatLabel.
           */
          java.lang.String getOutputFormatLabel();
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The bytes for outputFormatLabel.
           */
          com.google.protobuf.ByteString
              getOutputFormatLabelBytes();

          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc> 
              getConfigPerDcList();
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc getConfigPerDc(int index);
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          int getConfigPerDcCount();
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder> 
              getConfigPerDcOrBuilderList();
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder getConfigPerDcOrBuilder(
              int index);
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions}
         */
        public  static final class KaCoHaOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)
            KaCoHaOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use KaCoHaOptions.newBuilder() to construct.
          private KaCoHaOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private KaCoHaOptions() {
            topic_ = "";
            outputDatasetId_ = "";
            outputFormatLabel_ = "";
            configPerDc_ = java.util.Collections.emptyList();
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new KaCoHaOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private KaCoHaOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    java.lang.String s = input.readStringRequireUtf8();

                    topic_ = s;
                    break;
                  }
                  case 18: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputDatasetId_ = s;
                    break;
                  }
                  case 24: {

                    deduplicate_ = input.readBool();
                    break;
                  }
                  case 34: {
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder subBuilder = null;
                    if (config_ != null) {
                      subBuilder = config_.toBuilder();
                    }
                    config_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.parser(), extensionRegistry);
                    if (subBuilder != null) {
                      subBuilder.mergeFrom(config_);
                      config_ = subBuilder.buildPartial();
                    }

                    break;
                  }
                  case 42: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputFormatLabel_ = s;
                    break;
                  }
                  case 50: {
                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                      configPerDc_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc>();
                      mutable_bitField0_ |= 0x00000001;
                    }
                    configPerDc_.add(
                        input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.parser(), extensionRegistry));
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              if (((mutable_bitField0_ & 0x00000001) != 0)) {
                configPerDc_ = java.util.Collections.unmodifiableList(configPerDc_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder.class);
          }

          public static final int TOPIC_FIELD_NUMBER = 1;
          private volatile java.lang.Object topic_;
          /**
           * <pre>
           * settings specific to KaCoHa
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The topic.
           */
          public java.lang.String getTopic() {
            java.lang.Object ref = topic_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              topic_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * settings specific to KaCoHa
           * </pre>
           *
           * <code>string topic = 1;</code>
           * @return The bytes for topic.
           */
          public com.google.protobuf.ByteString
              getTopicBytes() {
            java.lang.Object ref = topic_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              topic_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_DATASET_ID_FIELD_NUMBER = 2;
          private volatile java.lang.Object outputDatasetId_;
          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The outputDatasetId.
           */
          public java.lang.String getOutputDatasetId() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Name of the dataset import will produce
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The bytes for outputDatasetId.
           */
          public com.google.protobuf.ByteString
              getOutputDatasetIdBytes() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int DEDUPLICATE_FIELD_NUMBER = 3;
          private boolean deduplicate_;
          /**
           * <pre>
           * Deduplicate dataset in the consolidation
           * </pre>
           *
           * <code>bool deduplicate = 3;</code>
           * @return The deduplicate.
           */
          public boolean getDeduplicate() {
            return deduplicate_;
          }

          public static final int CONFIG_FIELD_NUMBER = 4;
          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig config_;
          /**
           * <pre>
           * Common configs for all data centers
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
           * @return Whether the config field is set.
           */
          public boolean hasConfig() {
            return config_ != null;
          }
          /**
           * <pre>
           * Common configs for all data centers
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
           * @return The config.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getConfig() {
            return config_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance() : config_;
          }
          /**
           * <pre>
           * Common configs for all data centers
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder getConfigOrBuilder() {
            return getConfig();
          }

          public static final int OUTPUT_FORMAT_LABEL_FIELD_NUMBER = 5;
          private volatile java.lang.Object outputFormatLabel_;
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The outputFormatLabel.
           */
          public java.lang.String getOutputFormatLabel() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 5;</code>
           * @return The bytes for outputFormatLabel.
           */
          public com.google.protobuf.ByteString
              getOutputFormatLabelBytes() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int CONFIG_PER_DC_FIELD_NUMBER = 6;
          private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc> configPerDc_;
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc> getConfigPerDcList() {
            return configPerDc_;
          }
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder> 
              getConfigPerDcOrBuilderList() {
            return configPerDc_;
          }
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          public int getConfigPerDcCount() {
            return configPerDc_.size();
          }
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc getConfigPerDc(int index) {
            return configPerDc_.get(index);
          }
          /**
           * <pre>
           * Override specific configs for each data center
           * </pre>
           *
           * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder getConfigPerDcOrBuilder(
              int index) {
            return configPerDc_.get(index);
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!getTopicBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, topic_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 2, outputDatasetId_);
            }
            if (deduplicate_ != false) {
              output.writeBool(3, deduplicate_);
            }
            if (config_ != null) {
              output.writeMessage(4, getConfig());
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 5, outputFormatLabel_);
            }
            for (int i = 0; i < configPerDc_.size(); i++) {
              output.writeMessage(6, configPerDc_.get(i));
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!getTopicBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, topic_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, outputDatasetId_);
            }
            if (deduplicate_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(3, deduplicate_);
            }
            if (config_ != null) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(4, getConfig());
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, outputFormatLabel_);
            }
            for (int i = 0; i < configPerDc_.size(); i++) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(6, configPerDc_.get(i));
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions) obj;

            if (!getTopic()
                .equals(other.getTopic())) return false;
            if (!getOutputDatasetId()
                .equals(other.getOutputDatasetId())) return false;
            if (getDeduplicate()
                != other.getDeduplicate()) return false;
            if (hasConfig() != other.hasConfig()) return false;
            if (hasConfig()) {
              if (!getConfig()
                  .equals(other.getConfig())) return false;
            }
            if (!getOutputFormatLabel()
                .equals(other.getOutputFormatLabel())) return false;
            if (!getConfigPerDcList()
                .equals(other.getConfigPerDcList())) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + TOPIC_FIELD_NUMBER;
            hash = (53 * hash) + getTopic().hashCode();
            hash = (37 * hash) + OUTPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getOutputDatasetId().hashCode();
            hash = (37 * hash) + DEDUPLICATE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getDeduplicate());
            if (hasConfig()) {
              hash = (37 * hash) + CONFIG_FIELD_NUMBER;
              hash = (53 * hash) + getConfig().hashCode();
            }
            hash = (37 * hash) + OUTPUT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getOutputFormatLabel().hashCode();
            if (getConfigPerDcCount() > 0) {
              hash = (37 * hash) + CONFIG_PER_DC_FIELD_NUMBER;
              hash = (53 * hash) + getConfigPerDcList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
                getConfigPerDcFieldBuilder();
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              topic_ = "";

              outputDatasetId_ = "";

              deduplicate_ = false;

              if (configBuilder_ == null) {
                config_ = null;
              } else {
                config_ = null;
                configBuilder_ = null;
              }
              outputFormatLabel_ = "";

              if (configPerDcBuilder_ == null) {
                configPerDc_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                configPerDcBuilder_.clear();
              }
              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions(this);
              int from_bitField0_ = bitField0_;
              result.topic_ = topic_;
              result.outputDatasetId_ = outputDatasetId_;
              result.deduplicate_ = deduplicate_;
              if (configBuilder_ == null) {
                result.config_ = config_;
              } else {
                result.config_ = configBuilder_.build();
              }
              result.outputFormatLabel_ = outputFormatLabel_;
              if (configPerDcBuilder_ == null) {
                if (((bitField0_ & 0x00000001) != 0)) {
                  configPerDc_ = java.util.Collections.unmodifiableList(configPerDc_);
                  bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.configPerDc_ = configPerDc_;
              } else {
                result.configPerDc_ = configPerDcBuilder_.build();
              }
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.getDefaultInstance()) return this;
              if (!other.getTopic().isEmpty()) {
                topic_ = other.topic_;
                onChanged();
              }
              if (!other.getOutputDatasetId().isEmpty()) {
                outputDatasetId_ = other.outputDatasetId_;
                onChanged();
              }
              if (other.getDeduplicate() != false) {
                setDeduplicate(other.getDeduplicate());
              }
              if (other.hasConfig()) {
                mergeConfig(other.getConfig());
              }
              if (!other.getOutputFormatLabel().isEmpty()) {
                outputFormatLabel_ = other.outputFormatLabel_;
                onChanged();
              }
              if (configPerDcBuilder_ == null) {
                if (!other.configPerDc_.isEmpty()) {
                  if (configPerDc_.isEmpty()) {
                    configPerDc_ = other.configPerDc_;
                    bitField0_ = (bitField0_ & ~0x00000001);
                  } else {
                    ensureConfigPerDcIsMutable();
                    configPerDc_.addAll(other.configPerDc_);
                  }
                  onChanged();
                }
              } else {
                if (!other.configPerDc_.isEmpty()) {
                  if (configPerDcBuilder_.isEmpty()) {
                    configPerDcBuilder_.dispose();
                    configPerDcBuilder_ = null;
                    configPerDc_ = other.configPerDc_;
                    bitField0_ = (bitField0_ & ~0x00000001);
                    configPerDcBuilder_ = 
                      com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                         getConfigPerDcFieldBuilder() : null;
                  } else {
                    configPerDcBuilder_.addAllMessages(other.configPerDc_);
                  }
                }
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private java.lang.Object topic_ = "";
            /**
             * <pre>
             * settings specific to KaCoHa
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @return The topic.
             */
            public java.lang.String getTopic() {
              java.lang.Object ref = topic_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                topic_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * settings specific to KaCoHa
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @return The bytes for topic.
             */
            public com.google.protobuf.ByteString
                getTopicBytes() {
              java.lang.Object ref = topic_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                topic_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * settings specific to KaCoHa
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @param value The topic to set.
             * @return This builder for chaining.
             */
            public Builder setTopic(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              topic_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to KaCoHa
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearTopic() {
              
              topic_ = getDefaultInstance().getTopic();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to KaCoHa
             * </pre>
             *
             * <code>string topic = 1;</code>
             * @param value The bytes for topic to set.
             * @return This builder for chaining.
             */
            public Builder setTopicBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              topic_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputDatasetId_ = "";
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @return The outputDatasetId.
             */
            public java.lang.String getOutputDatasetId() {
              java.lang.Object ref = outputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @return The bytes for outputDatasetId.
             */
            public com.google.protobuf.ByteString
                getOutputDatasetIdBytes() {
              java.lang.Object ref = outputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @param value The outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputDatasetId() {
              
              outputDatasetId_ = getDefaultInstance().getOutputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of the dataset import will produce
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @param value The bytes for outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputDatasetId_ = value;
              onChanged();
              return this;
            }

            private boolean deduplicate_ ;
            /**
             * <pre>
             * Deduplicate dataset in the consolidation
             * </pre>
             *
             * <code>bool deduplicate = 3;</code>
             * @return The deduplicate.
             */
            public boolean getDeduplicate() {
              return deduplicate_;
            }
            /**
             * <pre>
             * Deduplicate dataset in the consolidation
             * </pre>
             *
             * <code>bool deduplicate = 3;</code>
             * @param value The deduplicate to set.
             * @return This builder for chaining.
             */
            public Builder setDeduplicate(boolean value) {
              
              deduplicate_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Deduplicate dataset in the consolidation
             * </pre>
             *
             * <code>bool deduplicate = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearDeduplicate() {
              
              deduplicate_ = false;
              onChanged();
              return this;
            }

            private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig config_;
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder> configBuilder_;
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             * @return Whether the config field is set.
             */
            public boolean hasConfig() {
              return configBuilder_ != null || config_ != null;
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             * @return The config.
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig getConfig() {
              if (configBuilder_ == null) {
                return config_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance() : config_;
              } else {
                return configBuilder_.getMessage();
              }
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            public Builder setConfig(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig value) {
              if (configBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                config_ = value;
                onChanged();
              } else {
                configBuilder_.setMessage(value);
              }

              return this;
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            public Builder setConfig(
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder builderForValue) {
              if (configBuilder_ == null) {
                config_ = builderForValue.build();
                onChanged();
              } else {
                configBuilder_.setMessage(builderForValue.build());
              }

              return this;
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            public Builder mergeConfig(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig value) {
              if (configBuilder_ == null) {
                if (config_ != null) {
                  config_ =
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.newBuilder(config_).mergeFrom(value).buildPartial();
                } else {
                  config_ = value;
                }
                onChanged();
              } else {
                configBuilder_.mergeFrom(value);
              }

              return this;
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            public Builder clearConfig() {
              if (configBuilder_ == null) {
                config_ = null;
                onChanged();
              } else {
                config_ = null;
                configBuilder_ = null;
              }

              return this;
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder getConfigBuilder() {
              
              onChanged();
              return getConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder getConfigOrBuilder() {
              if (configBuilder_ != null) {
                return configBuilder_.getMessageOrBuilder();
              } else {
                return config_ == null ?
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.getDefaultInstance() : config_;
              }
            }
            /**
             * <pre>
             * Common configs for all data centers
             * </pre>
             *
             * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfig config = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder> 
                getConfigFieldBuilder() {
              if (configBuilder_ == null) {
                configBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfig.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigOrBuilder>(
                        getConfig(),
                        getParentForChildren(),
                        isClean());
                config_ = null;
              }
              return configBuilder_;
            }

            private java.lang.Object outputFormatLabel_ = "";
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @return The outputFormatLabel.
             */
            public java.lang.String getOutputFormatLabel() {
              java.lang.Object ref = outputFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @return The bytes for outputFormatLabel.
             */
            public com.google.protobuf.ByteString
                getOutputFormatLabelBytes() {
              java.lang.Object ref = outputFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @param value The outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputFormatLabel() {
              
              outputFormatLabel_ = getDefaultInstance().getOutputFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 5;</code>
             * @param value The bytes for outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }

            private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc> configPerDc_ =
              java.util.Collections.emptyList();
            private void ensureConfigPerDcIsMutable() {
              if (!((bitField0_ & 0x00000001) != 0)) {
                configPerDc_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc>(configPerDc_);
                bitField0_ |= 0x00000001;
               }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder> configPerDcBuilder_;

            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc> getConfigPerDcList() {
              if (configPerDcBuilder_ == null) {
                return java.util.Collections.unmodifiableList(configPerDc_);
              } else {
                return configPerDcBuilder_.getMessageList();
              }
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public int getConfigPerDcCount() {
              if (configPerDcBuilder_ == null) {
                return configPerDc_.size();
              } else {
                return configPerDcBuilder_.getCount();
              }
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc getConfigPerDc(int index) {
              if (configPerDcBuilder_ == null) {
                return configPerDc_.get(index);
              } else {
                return configPerDcBuilder_.getMessage(index);
              }
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder setConfigPerDc(
                int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc value) {
              if (configPerDcBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureConfigPerDcIsMutable();
                configPerDc_.set(index, value);
                onChanged();
              } else {
                configPerDcBuilder_.setMessage(index, value);
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder setConfigPerDc(
                int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder builderForValue) {
              if (configPerDcBuilder_ == null) {
                ensureConfigPerDcIsMutable();
                configPerDc_.set(index, builderForValue.build());
                onChanged();
              } else {
                configPerDcBuilder_.setMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder addConfigPerDc(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc value) {
              if (configPerDcBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureConfigPerDcIsMutable();
                configPerDc_.add(value);
                onChanged();
              } else {
                configPerDcBuilder_.addMessage(value);
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder addConfigPerDc(
                int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc value) {
              if (configPerDcBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureConfigPerDcIsMutable();
                configPerDc_.add(index, value);
                onChanged();
              } else {
                configPerDcBuilder_.addMessage(index, value);
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder addConfigPerDc(
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder builderForValue) {
              if (configPerDcBuilder_ == null) {
                ensureConfigPerDcIsMutable();
                configPerDc_.add(builderForValue.build());
                onChanged();
              } else {
                configPerDcBuilder_.addMessage(builderForValue.build());
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder addConfigPerDc(
                int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder builderForValue) {
              if (configPerDcBuilder_ == null) {
                ensureConfigPerDcIsMutable();
                configPerDc_.add(index, builderForValue.build());
                onChanged();
              } else {
                configPerDcBuilder_.addMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder addAllConfigPerDc(
                java.lang.Iterable<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc> values) {
              if (configPerDcBuilder_ == null) {
                ensureConfigPerDcIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, configPerDc_);
                onChanged();
              } else {
                configPerDcBuilder_.addAllMessages(values);
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder clearConfigPerDc() {
              if (configPerDcBuilder_ == null) {
                configPerDc_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
              } else {
                configPerDcBuilder_.clear();
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public Builder removeConfigPerDc(int index) {
              if (configPerDcBuilder_ == null) {
                ensureConfigPerDcIsMutable();
                configPerDc_.remove(index);
                onChanged();
              } else {
                configPerDcBuilder_.remove(index);
              }
              return this;
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder getConfigPerDcBuilder(
                int index) {
              return getConfigPerDcFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder getConfigPerDcOrBuilder(
                int index) {
              if (configPerDcBuilder_ == null) {
                return configPerDc_.get(index);  } else {
                return configPerDcBuilder_.getMessageOrBuilder(index);
              }
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder> 
                 getConfigPerDcOrBuilderList() {
              if (configPerDcBuilder_ != null) {
                return configPerDcBuilder_.getMessageOrBuilderList();
              } else {
                return java.util.Collections.unmodifiableList(configPerDc_);
              }
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder addConfigPerDcBuilder() {
              return getConfigPerDcFieldBuilder().addBuilder(
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.getDefaultInstance());
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder addConfigPerDcBuilder(
                int index) {
              return getConfigPerDcFieldBuilder().addBuilder(
                  index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.getDefaultInstance());
            }
            /**
             * <pre>
             * Override specific configs for each data center
             * </pre>
             *
             * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc config_per_dc = 6;</code>
             */
            public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder> 
                 getConfigPerDcBuilderList() {
              return getConfigPerDcFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder> 
                getConfigPerDcFieldBuilder() {
              if (configPerDcBuilder_ == null) {
                configPerDcBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDc.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KacohaConfigPerDcOrBuilder>(
                        configPerDc_,
                        ((bitField0_ & 0x00000001) != 0),
                        getParentForChildren(),
                        isClean());
                configPerDc_ = null;
              }
              return configPerDcBuilder_;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<KaCoHaOptions>
              PARSER = new com.google.protobuf.AbstractParser<KaCoHaOptions>() {
            @java.lang.Override
            public KaCoHaOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new KaCoHaOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<KaCoHaOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<KaCoHaOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface DataloaderOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @return A list containing the platform.
           */
          java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformList();
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @return The count of platform.
           */
          int getPlatformCount();
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @param index The index of the element to return.
           * @return The platform at the given index.
           */
          com.acme.glup.MetadataProto.Platform getPlatform(int index);
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @return A list containing the enum numeric values on the wire for platform.
           */
          java.util.List<java.lang.Integer>
          getPlatformValueList();
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @param index The index of the value to return.
           * @return The enum numeric value on the wire of platform at the given index.
           */
          int getPlatformValue(int index);
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions}
         */
        public  static final class DataloaderOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions)
            DataloaderOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use DataloaderOptions.newBuilder() to construct.
          private DataloaderOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private DataloaderOptions() {
            platform_ = java.util.Collections.emptyList();
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new DataloaderOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private DataloaderOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 8: {
                    int rawValue = input.readEnum();
                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                      platform_ = new java.util.ArrayList<java.lang.Integer>();
                      mutable_bitField0_ |= 0x00000001;
                    }
                    platform_.add(rawValue);
                    break;
                  }
                  case 10: {
                    int length = input.readRawVarint32();
                    int oldLimit = input.pushLimit(length);
                    while(input.getBytesUntilLimit() > 0) {
                      int rawValue = input.readEnum();
                      if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                        platform_ = new java.util.ArrayList<java.lang.Integer>();
                        mutable_bitField0_ |= 0x00000001;
                      }
                      platform_.add(rawValue);
                    }
                    input.popLimit(oldLimit);
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              if (((mutable_bitField0_ & 0x00000001) != 0)) {
                platform_ = java.util.Collections.unmodifiableList(platform_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder.class);
          }

          public static final int PLATFORM_FIELD_NUMBER = 1;
          private java.util.List<java.lang.Integer> platform_;
          private static final com.google.protobuf.Internal.ListAdapter.Converter<
              java.lang.Integer, com.acme.glup.MetadataProto.Platform> platform_converter_ =
                  new com.google.protobuf.Internal.ListAdapter.Converter<
                      java.lang.Integer, com.acme.glup.MetadataProto.Platform>() {
                    public com.acme.glup.MetadataProto.Platform convert(java.lang.Integer from) {
                      @SuppressWarnings("deprecation")
                      com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(from);
                      return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
                    }
                  };
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @return A list containing the platform.
           */
          public java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformList() {
            return new com.google.protobuf.Internal.ListAdapter<
                java.lang.Integer, com.acme.glup.MetadataProto.Platform>(platform_, platform_converter_);
          }
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @return The count of platform.
           */
          public int getPlatformCount() {
            return platform_.size();
          }
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @param index The index of the element to return.
           * @return The platform at the given index.
           */
          public com.acme.glup.MetadataProto.Platform getPlatform(int index) {
            return platform_converter_.convert(platform_.get(index));
          }
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @return A list containing the enum numeric values on the wire for platform.
           */
          public java.util.List<java.lang.Integer>
          getPlatformValueList() {
            return platform_;
          }
          /**
           * <pre>
           * settings specific to dataloader
           * If no platform is defined, it will default to all platforms
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platform = 1;</code>
           * @param index The index of the value to return.
           * @return The enum numeric value on the wire of platform at the given index.
           */
          public int getPlatformValue(int index) {
            return platform_.get(index);
          }
          private int platformMemoizedSerializedSize;

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            getSerializedSize();
            if (getPlatformList().size() > 0) {
              output.writeUInt32NoTag(10);
              output.writeUInt32NoTag(platformMemoizedSerializedSize);
            }
            for (int i = 0; i < platform_.size(); i++) {
              output.writeEnumNoTag(platform_.get(i));
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            {
              int dataSize = 0;
              for (int i = 0; i < platform_.size(); i++) {
                dataSize += com.google.protobuf.CodedOutputStream
                  .computeEnumSizeNoTag(platform_.get(i));
              }
              size += dataSize;
              if (!getPlatformList().isEmpty()) {  size += 1;
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32SizeNoTag(dataSize);
              }platformMemoizedSerializedSize = dataSize;
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions) obj;

            if (!platform_.equals(other.platform_)) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getPlatformCount() > 0) {
              hash = (37 * hash) + PLATFORM_FIELD_NUMBER;
              hash = (53 * hash) + platform_.hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              platform_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions(this);
              int from_bitField0_ = bitField0_;
              if (((bitField0_ & 0x00000001) != 0)) {
                platform_ = java.util.Collections.unmodifiableList(platform_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.platform_ = platform_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.getDefaultInstance()) return this;
              if (!other.platform_.isEmpty()) {
                if (platform_.isEmpty()) {
                  platform_ = other.platform_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensurePlatformIsMutable();
                  platform_.addAll(other.platform_);
                }
                onChanged();
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private java.util.List<java.lang.Integer> platform_ =
              java.util.Collections.emptyList();
            private void ensurePlatformIsMutable() {
              if (!((bitField0_ & 0x00000001) != 0)) {
                platform_ = new java.util.ArrayList<java.lang.Integer>(platform_);
                bitField0_ |= 0x00000001;
              }
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @return A list containing the platform.
             */
            public java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformList() {
              return new com.google.protobuf.Internal.ListAdapter<
                  java.lang.Integer, com.acme.glup.MetadataProto.Platform>(platform_, platform_converter_);
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @return The count of platform.
             */
            public int getPlatformCount() {
              return platform_.size();
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param index The index of the element to return.
             * @return The platform at the given index.
             */
            public com.acme.glup.MetadataProto.Platform getPlatform(int index) {
              return platform_converter_.convert(platform_.get(index));
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param index The index to set the value at.
             * @param value The platform to set.
             * @return This builder for chaining.
             */
            public Builder setPlatform(
                int index, com.acme.glup.MetadataProto.Platform value) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensurePlatformIsMutable();
              platform_.set(index, value.getNumber());
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param value The platform to add.
             * @return This builder for chaining.
             */
            public Builder addPlatform(com.acme.glup.MetadataProto.Platform value) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensurePlatformIsMutable();
              platform_.add(value.getNumber());
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param values The platform to add.
             * @return This builder for chaining.
             */
            public Builder addAllPlatform(
                java.lang.Iterable<? extends com.acme.glup.MetadataProto.Platform> values) {
              ensurePlatformIsMutable();
              for (com.acme.glup.MetadataProto.Platform value : values) {
                platform_.add(value.getNumber());
              }
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlatform() {
              platform_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @return A list containing the enum numeric values on the wire for platform.
             */
            public java.util.List<java.lang.Integer>
            getPlatformValueList() {
              return java.util.Collections.unmodifiableList(platform_);
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of platform at the given index.
             */
            public int getPlatformValue(int index) {
              return platform_.get(index);
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of platform at the given index.
             * @return This builder for chaining.
             */
            public Builder setPlatformValue(
                int index, int value) {
              ensurePlatformIsMutable();
              platform_.set(index, value);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param value The enum numeric value on the wire for platform to add.
             * @return This builder for chaining.
             */
            public Builder addPlatformValue(int value) {
              ensurePlatformIsMutable();
              platform_.add(value);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * settings specific to dataloader
             * If no platform is defined, it will default to all platforms
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platform = 1;</code>
             * @param values The enum numeric values on the wire for platform to add.
             * @return This builder for chaining.
             */
            public Builder addAllPlatformValue(
                java.lang.Iterable<java.lang.Integer> values) {
              ensurePlatformIsMutable();
              for (int value : values) {
                platform_.add(value);
              }
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<DataloaderOptions>
              PARSER = new com.google.protobuf.AbstractParser<DataloaderOptions>() {
            @java.lang.Override
            public DataloaderOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new DataloaderOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<DataloaderOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<DataloaderOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface SyncOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return Whether the from field is set.
           */
          boolean hasFrom();
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return The from.
           */
          com.acme.glup.MetadataProto.Location getFrom();
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           */
          com.acme.glup.MetadataProto.LocationOrBuilder getFromOrBuilder();

          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 3;</code>
           * @return The sourceNamespace.
           */
          java.lang.String getSourceNamespace();
          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 3;</code>
           * @return The bytes for sourceNamespace.
           */
          com.google.protobuf.ByteString
              getSourceNamespaceBytes();

          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @return A list containing the platforms.
           */
          java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformsList();
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @return The count of platforms.
           */
          int getPlatformsCount();
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @param index The index of the element to return.
           * @return The platforms at the given index.
           */
          com.acme.glup.MetadataProto.Platform getPlatforms(int index);
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @return A list containing the enum numeric values on the wire for platforms.
           */
          java.util.List<java.lang.Integer>
          getPlatformsValueList();
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @param index The index of the value to return.
           * @return The enum numeric value on the wire of platforms at the given index.
           */
          int getPlatformsValue(int index);

          /**
           * <pre>
           * define if sync is a backfilling (from now to oldest partitions
           * </pre>
           *
           * <code>bool is_backfilling = 8;</code>
           * @return The isBackfilling.
           */
          boolean getIsBackfilling();

          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_label = 9;</code>
           * @return The toLabel.
           */
          java.lang.String getToLabel();
          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_label = 9;</code>
           * @return The bytes for toLabel.
           */
          com.google.protobuf.ByteString
              getToLabelBytes();

          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_dataset_id = 10;</code>
           * @return The toDatasetId.
           */
          java.lang.String getToDatasetId();
          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_dataset_id = 10;</code>
           * @return The bytes for toDatasetId.
           */
          com.google.protobuf.ByteString
              getToDatasetIdBytes();

          /**
           * <pre>
           * define backfilling in addition to sync at the same time
           * </pre>
           *
           * <code>bool with_backfilling = 11;</code>
           * @return The withBackfilling.
           */
          boolean getWithBackfilling();

          /**
           * <pre>
           * defines whether should we schedule generator on to or from location
           * </pre>
           *
           * <code>bool is_scheduled_on_source = 12;</code>
           * @return The isScheduledOnSource.
           */
          boolean getIsScheduledOnSource();
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions}
         */
        public  static final class SyncOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions)
            SyncOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use SyncOptions.newBuilder() to construct.
          private SyncOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private SyncOptions() {
            sourceNamespace_ = "";
            platforms_ = java.util.Collections.emptyList();
            toLabel_ = "";
            toDatasetId_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new SyncOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private SyncOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    com.acme.glup.MetadataProto.Location.Builder subBuilder = null;
                    if (from_ != null) {
                      subBuilder = from_.toBuilder();
                    }
                    from_ = input.readMessage(com.acme.glup.MetadataProto.Location.parser(), extensionRegistry);
                    if (subBuilder != null) {
                      subBuilder.mergeFrom(from_);
                      from_ = subBuilder.buildPartial();
                    }

                    break;
                  }
                  case 26: {
                    java.lang.String s = input.readStringRequireUtf8();

                    sourceNamespace_ = s;
                    break;
                  }
                  case 48: {
                    int rawValue = input.readEnum();
                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                      platforms_ = new java.util.ArrayList<java.lang.Integer>();
                      mutable_bitField0_ |= 0x00000001;
                    }
                    platforms_.add(rawValue);
                    break;
                  }
                  case 50: {
                    int length = input.readRawVarint32();
                    int oldLimit = input.pushLimit(length);
                    while(input.getBytesUntilLimit() > 0) {
                      int rawValue = input.readEnum();
                      if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                        platforms_ = new java.util.ArrayList<java.lang.Integer>();
                        mutable_bitField0_ |= 0x00000001;
                      }
                      platforms_.add(rawValue);
                    }
                    input.popLimit(oldLimit);
                    break;
                  }
                  case 64: {

                    isBackfilling_ = input.readBool();
                    break;
                  }
                  case 74: {
                    java.lang.String s = input.readStringRequireUtf8();

                    toLabel_ = s;
                    break;
                  }
                  case 82: {
                    java.lang.String s = input.readStringRequireUtf8();

                    toDatasetId_ = s;
                    break;
                  }
                  case 88: {

                    withBackfilling_ = input.readBool();
                    break;
                  }
                  case 96: {

                    isScheduledOnSource_ = input.readBool();
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              if (((mutable_bitField0_ & 0x00000001) != 0)) {
                platforms_ = java.util.Collections.unmodifiableList(platforms_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder.class);
          }

          public static final int FROM_FIELD_NUMBER = 1;
          private com.acme.glup.MetadataProto.Location from_;
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return Whether the from field is set.
           */
          public boolean hasFrom() {
            return from_ != null;
          }
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return The from.
           */
          public com.acme.glup.MetadataProto.Location getFrom() {
            return from_ == null ? com.acme.glup.MetadataProto.Location.getDefaultInstance() : from_;
          }
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           */
          public com.acme.glup.MetadataProto.LocationOrBuilder getFromOrBuilder() {
            return getFrom();
          }

          public static final int SOURCE_NAMESPACE_FIELD_NUMBER = 3;
          private volatile java.lang.Object sourceNamespace_;
          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 3;</code>
           * @return The sourceNamespace.
           */
          public java.lang.String getSourceNamespace() {
            java.lang.Object ref = sourceNamespace_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              sourceNamespace_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 3;</code>
           * @return The bytes for sourceNamespace.
           */
          public com.google.protobuf.ByteString
              getSourceNamespaceBytes() {
            java.lang.Object ref = sourceNamespace_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              sourceNamespace_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int PLATFORMS_FIELD_NUMBER = 6;
          private java.util.List<java.lang.Integer> platforms_;
          private static final com.google.protobuf.Internal.ListAdapter.Converter<
              java.lang.Integer, com.acme.glup.MetadataProto.Platform> platforms_converter_ =
                  new com.google.protobuf.Internal.ListAdapter.Converter<
                      java.lang.Integer, com.acme.glup.MetadataProto.Platform>() {
                    public com.acme.glup.MetadataProto.Platform convert(java.lang.Integer from) {
                      @SuppressWarnings("deprecation")
                      com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(from);
                      return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
                    }
                  };
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @return A list containing the platforms.
           */
          public java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformsList() {
            return new com.google.protobuf.Internal.ListAdapter<
                java.lang.Integer, com.acme.glup.MetadataProto.Platform>(platforms_, platforms_converter_);
          }
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @return The count of platforms.
           */
          public int getPlatformsCount() {
            return platforms_.size();
          }
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @param index The index of the element to return.
           * @return The platforms at the given index.
           */
          public com.acme.glup.MetadataProto.Platform getPlatforms(int index) {
            return platforms_converter_.convert(platforms_.get(index));
          }
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @return A list containing the enum numeric values on the wire for platforms.
           */
          public java.util.List<java.lang.Integer>
          getPlatformsValueList() {
            return platforms_;
          }
          /**
           * <pre>
           * string start_date = 4;  // REMOVED because duplicates generator.start_date
           * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
           * @param index The index of the value to return.
           * @return The enum numeric value on the wire of platforms at the given index.
           */
          public int getPlatformsValue(int index) {
            return platforms_.get(index);
          }
          private int platformsMemoizedSerializedSize;

          public static final int IS_BACKFILLING_FIELD_NUMBER = 8;
          private boolean isBackfilling_;
          /**
           * <pre>
           * define if sync is a backfilling (from now to oldest partitions
           * </pre>
           *
           * <code>bool is_backfilling = 8;</code>
           * @return The isBackfilling.
           */
          public boolean getIsBackfilling() {
            return isBackfilling_;
          }

          public static final int TO_LABEL_FIELD_NUMBER = 9;
          private volatile java.lang.Object toLabel_;
          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_label = 9;</code>
           * @return The toLabel.
           */
          public java.lang.String getToLabel() {
            java.lang.Object ref = toLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              toLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_label = 9;</code>
           * @return The bytes for toLabel.
           */
          public com.google.protobuf.ByteString
              getToLabelBytes() {
            java.lang.Object ref = toLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              toLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int TO_DATASET_ID_FIELD_NUMBER = 10;
          private volatile java.lang.Object toDatasetId_;
          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_dataset_id = 10;</code>
           * @return The toDatasetId.
           */
          public java.lang.String getToDatasetId() {
            java.lang.Object ref = toDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              toDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * define where data will be sync'ed, based on dataset_id and label
           * </pre>
           *
           * <code>string to_dataset_id = 10;</code>
           * @return The bytes for toDatasetId.
           */
          public com.google.protobuf.ByteString
              getToDatasetIdBytes() {
            java.lang.Object ref = toDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              toDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int WITH_BACKFILLING_FIELD_NUMBER = 11;
          private boolean withBackfilling_;
          /**
           * <pre>
           * define backfilling in addition to sync at the same time
           * </pre>
           *
           * <code>bool with_backfilling = 11;</code>
           * @return The withBackfilling.
           */
          public boolean getWithBackfilling() {
            return withBackfilling_;
          }

          public static final int IS_SCHEDULED_ON_SOURCE_FIELD_NUMBER = 12;
          private boolean isScheduledOnSource_;
          /**
           * <pre>
           * defines whether should we schedule generator on to or from location
           * </pre>
           *
           * <code>bool is_scheduled_on_source = 12;</code>
           * @return The isScheduledOnSource.
           */
          public boolean getIsScheduledOnSource() {
            return isScheduledOnSource_;
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            getSerializedSize();
            if (from_ != null) {
              output.writeMessage(1, getFrom());
            }
            if (!getSourceNamespaceBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sourceNamespace_);
            }
            if (getPlatformsList().size() > 0) {
              output.writeUInt32NoTag(50);
              output.writeUInt32NoTag(platformsMemoizedSerializedSize);
            }
            for (int i = 0; i < platforms_.size(); i++) {
              output.writeEnumNoTag(platforms_.get(i));
            }
            if (isBackfilling_ != false) {
              output.writeBool(8, isBackfilling_);
            }
            if (!getToLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 9, toLabel_);
            }
            if (!getToDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 10, toDatasetId_);
            }
            if (withBackfilling_ != false) {
              output.writeBool(11, withBackfilling_);
            }
            if (isScheduledOnSource_ != false) {
              output.writeBool(12, isScheduledOnSource_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (from_ != null) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(1, getFrom());
            }
            if (!getSourceNamespaceBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sourceNamespace_);
            }
            {
              int dataSize = 0;
              for (int i = 0; i < platforms_.size(); i++) {
                dataSize += com.google.protobuf.CodedOutputStream
                  .computeEnumSizeNoTag(platforms_.get(i));
              }
              size += dataSize;
              if (!getPlatformsList().isEmpty()) {  size += 1;
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32SizeNoTag(dataSize);
              }platformsMemoizedSerializedSize = dataSize;
            }
            if (isBackfilling_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(8, isBackfilling_);
            }
            if (!getToLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, toLabel_);
            }
            if (!getToDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, toDatasetId_);
            }
            if (withBackfilling_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(11, withBackfilling_);
            }
            if (isScheduledOnSource_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(12, isScheduledOnSource_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions) obj;

            if (hasFrom() != other.hasFrom()) return false;
            if (hasFrom()) {
              if (!getFrom()
                  .equals(other.getFrom())) return false;
            }
            if (!getSourceNamespace()
                .equals(other.getSourceNamespace())) return false;
            if (!platforms_.equals(other.platforms_)) return false;
            if (getIsBackfilling()
                != other.getIsBackfilling()) return false;
            if (!getToLabel()
                .equals(other.getToLabel())) return false;
            if (!getToDatasetId()
                .equals(other.getToDatasetId())) return false;
            if (getWithBackfilling()
                != other.getWithBackfilling()) return false;
            if (getIsScheduledOnSource()
                != other.getIsScheduledOnSource()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasFrom()) {
              hash = (37 * hash) + FROM_FIELD_NUMBER;
              hash = (53 * hash) + getFrom().hashCode();
            }
            hash = (37 * hash) + SOURCE_NAMESPACE_FIELD_NUMBER;
            hash = (53 * hash) + getSourceNamespace().hashCode();
            if (getPlatformsCount() > 0) {
              hash = (37 * hash) + PLATFORMS_FIELD_NUMBER;
              hash = (53 * hash) + platforms_.hashCode();
            }
            hash = (37 * hash) + IS_BACKFILLING_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getIsBackfilling());
            hash = (37 * hash) + TO_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getToLabel().hashCode();
            hash = (37 * hash) + TO_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getToDatasetId().hashCode();
            hash = (37 * hash) + WITH_BACKFILLING_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getWithBackfilling());
            hash = (37 * hash) + IS_SCHEDULED_ON_SOURCE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getIsScheduledOnSource());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              if (fromBuilder_ == null) {
                from_ = null;
              } else {
                from_ = null;
                fromBuilder_ = null;
              }
              sourceNamespace_ = "";

              platforms_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              isBackfilling_ = false;

              toLabel_ = "";

              toDatasetId_ = "";

              withBackfilling_ = false;

              isScheduledOnSource_ = false;

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions(this);
              int from_bitField0_ = bitField0_;
              if (fromBuilder_ == null) {
                result.from_ = from_;
              } else {
                result.from_ = fromBuilder_.build();
              }
              result.sourceNamespace_ = sourceNamespace_;
              if (((bitField0_ & 0x00000001) != 0)) {
                platforms_ = java.util.Collections.unmodifiableList(platforms_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.platforms_ = platforms_;
              result.isBackfilling_ = isBackfilling_;
              result.toLabel_ = toLabel_;
              result.toDatasetId_ = toDatasetId_;
              result.withBackfilling_ = withBackfilling_;
              result.isScheduledOnSource_ = isScheduledOnSource_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.getDefaultInstance()) return this;
              if (other.hasFrom()) {
                mergeFrom(other.getFrom());
              }
              if (!other.getSourceNamespace().isEmpty()) {
                sourceNamespace_ = other.sourceNamespace_;
                onChanged();
              }
              if (!other.platforms_.isEmpty()) {
                if (platforms_.isEmpty()) {
                  platforms_ = other.platforms_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensurePlatformsIsMutable();
                  platforms_.addAll(other.platforms_);
                }
                onChanged();
              }
              if (other.getIsBackfilling() != false) {
                setIsBackfilling(other.getIsBackfilling());
              }
              if (!other.getToLabel().isEmpty()) {
                toLabel_ = other.toLabel_;
                onChanged();
              }
              if (!other.getToDatasetId().isEmpty()) {
                toDatasetId_ = other.toDatasetId_;
                onChanged();
              }
              if (other.getWithBackfilling() != false) {
                setWithBackfilling(other.getWithBackfilling());
              }
              if (other.getIsScheduledOnSource() != false) {
                setIsScheduledOnSource(other.getIsScheduledOnSource());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private com.acme.glup.MetadataProto.Location from_;
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder> fromBuilder_;
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             * @return Whether the from field is set.
             */
            public boolean hasFrom() {
              return fromBuilder_ != null || from_ != null;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             * @return The from.
             */
            public com.acme.glup.MetadataProto.Location getFrom() {
              if (fromBuilder_ == null) {
                return from_ == null ? com.acme.glup.MetadataProto.Location.getDefaultInstance() : from_;
              } else {
                return fromBuilder_.getMessage();
              }
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder setFrom(com.acme.glup.MetadataProto.Location value) {
              if (fromBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                from_ = value;
                onChanged();
              } else {
                fromBuilder_.setMessage(value);
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder setFrom(
                com.acme.glup.MetadataProto.Location.Builder builderForValue) {
              if (fromBuilder_ == null) {
                from_ = builderForValue.build();
                onChanged();
              } else {
                fromBuilder_.setMessage(builderForValue.build());
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder mergeFrom(com.acme.glup.MetadataProto.Location value) {
              if (fromBuilder_ == null) {
                if (from_ != null) {
                  from_ =
                    com.acme.glup.MetadataProto.Location.newBuilder(from_).mergeFrom(value).buildPartial();
                } else {
                  from_ = value;
                }
                onChanged();
              } else {
                fromBuilder_.mergeFrom(value);
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder clearFrom() {
              if (fromBuilder_ == null) {
                from_ = null;
                onChanged();
              } else {
                from_ = null;
                fromBuilder_ = null;
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public com.acme.glup.MetadataProto.Location.Builder getFromBuilder() {
              
              onChanged();
              return getFromFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public com.acme.glup.MetadataProto.LocationOrBuilder getFromOrBuilder() {
              if (fromBuilder_ != null) {
                return fromBuilder_.getMessageOrBuilder();
              } else {
                return from_ == null ?
                    com.acme.glup.MetadataProto.Location.getDefaultInstance() : from_;
              }
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder> 
                getFromFieldBuilder() {
              if (fromBuilder_ == null) {
                fromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                    com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder>(
                        getFrom(),
                        getParentForChildren(),
                        isClean());
                from_ = null;
              }
              return fromBuilder_;
            }

            private java.lang.Object sourceNamespace_ = "";
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 3;</code>
             * @return The sourceNamespace.
             */
            public java.lang.String getSourceNamespace() {
              java.lang.Object ref = sourceNamespace_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                sourceNamespace_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 3;</code>
             * @return The bytes for sourceNamespace.
             */
            public com.google.protobuf.ByteString
                getSourceNamespaceBytes() {
              java.lang.Object ref = sourceNamespace_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                sourceNamespace_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 3;</code>
             * @param value The sourceNamespace to set.
             * @return This builder for chaining.
             */
            public Builder setSourceNamespace(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              sourceNamespace_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearSourceNamespace() {
              
              sourceNamespace_ = getDefaultInstance().getSourceNamespace();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 3;</code>
             * @param value The bytes for sourceNamespace to set.
             * @return This builder for chaining.
             */
            public Builder setSourceNamespaceBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              sourceNamespace_ = value;
              onChanged();
              return this;
            }

            private java.util.List<java.lang.Integer> platforms_ =
              java.util.Collections.emptyList();
            private void ensurePlatformsIsMutable() {
              if (!((bitField0_ & 0x00000001) != 0)) {
                platforms_ = new java.util.ArrayList<java.lang.Integer>(platforms_);
                bitField0_ |= 0x00000001;
              }
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @return A list containing the platforms.
             */
            public java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformsList() {
              return new com.google.protobuf.Internal.ListAdapter<
                  java.lang.Integer, com.acme.glup.MetadataProto.Platform>(platforms_, platforms_converter_);
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @return The count of platforms.
             */
            public int getPlatformsCount() {
              return platforms_.size();
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param index The index of the element to return.
             * @return The platforms at the given index.
             */
            public com.acme.glup.MetadataProto.Platform getPlatforms(int index) {
              return platforms_converter_.convert(platforms_.get(index));
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param index The index to set the value at.
             * @param value The platforms to set.
             * @return This builder for chaining.
             */
            public Builder setPlatforms(
                int index, com.acme.glup.MetadataProto.Platform value) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensurePlatformsIsMutable();
              platforms_.set(index, value.getNumber());
              onChanged();
              return this;
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param value The platforms to add.
             * @return This builder for chaining.
             */
            public Builder addPlatforms(com.acme.glup.MetadataProto.Platform value) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensurePlatformsIsMutable();
              platforms_.add(value.getNumber());
              onChanged();
              return this;
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param values The platforms to add.
             * @return This builder for chaining.
             */
            public Builder addAllPlatforms(
                java.lang.Iterable<? extends com.acme.glup.MetadataProto.Platform> values) {
              ensurePlatformsIsMutable();
              for (com.acme.glup.MetadataProto.Platform value : values) {
                platforms_.add(value.getNumber());
              }
              onChanged();
              return this;
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlatforms() {
              platforms_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @return A list containing the enum numeric values on the wire for platforms.
             */
            public java.util.List<java.lang.Integer>
            getPlatformsValueList() {
              return java.util.Collections.unmodifiableList(platforms_);
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of platforms at the given index.
             */
            public int getPlatformsValue(int index) {
              return platforms_.get(index);
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of platforms at the given index.
             * @return This builder for chaining.
             */
            public Builder setPlatformsValue(
                int index, int value) {
              ensurePlatformsIsMutable();
              platforms_.set(index, value);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param value The enum numeric value on the wire for platforms to add.
             * @return This builder for chaining.
             */
            public Builder addPlatformsValue(int value) {
              ensurePlatformsIsMutable();
              platforms_.add(value);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * string start_date = 4;  // REMOVED because duplicates generator.start_date
             * string stop_date = 5;  // REMOVED because duplicates generator.stop_date
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 6;</code>
             * @param values The enum numeric values on the wire for platforms to add.
             * @return This builder for chaining.
             */
            public Builder addAllPlatformsValue(
                java.lang.Iterable<java.lang.Integer> values) {
              ensurePlatformsIsMutable();
              for (int value : values) {
                platforms_.add(value);
              }
              onChanged();
              return this;
            }

            private boolean isBackfilling_ ;
            /**
             * <pre>
             * define if sync is a backfilling (from now to oldest partitions
             * </pre>
             *
             * <code>bool is_backfilling = 8;</code>
             * @return The isBackfilling.
             */
            public boolean getIsBackfilling() {
              return isBackfilling_;
            }
            /**
             * <pre>
             * define if sync is a backfilling (from now to oldest partitions
             * </pre>
             *
             * <code>bool is_backfilling = 8;</code>
             * @param value The isBackfilling to set.
             * @return This builder for chaining.
             */
            public Builder setIsBackfilling(boolean value) {
              
              isBackfilling_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * define if sync is a backfilling (from now to oldest partitions
             * </pre>
             *
             * <code>bool is_backfilling = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsBackfilling() {
              
              isBackfilling_ = false;
              onChanged();
              return this;
            }

            private java.lang.Object toLabel_ = "";
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_label = 9;</code>
             * @return The toLabel.
             */
            public java.lang.String getToLabel() {
              java.lang.Object ref = toLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                toLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_label = 9;</code>
             * @return The bytes for toLabel.
             */
            public com.google.protobuf.ByteString
                getToLabelBytes() {
              java.lang.Object ref = toLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                toLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_label = 9;</code>
             * @param value The toLabel to set.
             * @return This builder for chaining.
             */
            public Builder setToLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              toLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_label = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearToLabel() {
              
              toLabel_ = getDefaultInstance().getToLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_label = 9;</code>
             * @param value The bytes for toLabel to set.
             * @return This builder for chaining.
             */
            public Builder setToLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              toLabel_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object toDatasetId_ = "";
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_dataset_id = 10;</code>
             * @return The toDatasetId.
             */
            public java.lang.String getToDatasetId() {
              java.lang.Object ref = toDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                toDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_dataset_id = 10;</code>
             * @return The bytes for toDatasetId.
             */
            public com.google.protobuf.ByteString
                getToDatasetIdBytes() {
              java.lang.Object ref = toDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                toDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_dataset_id = 10;</code>
             * @param value The toDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setToDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              toDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_dataset_id = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearToDatasetId() {
              
              toDatasetId_ = getDefaultInstance().getToDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * define where data will be sync'ed, based on dataset_id and label
             * </pre>
             *
             * <code>string to_dataset_id = 10;</code>
             * @param value The bytes for toDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setToDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              toDatasetId_ = value;
              onChanged();
              return this;
            }

            private boolean withBackfilling_ ;
            /**
             * <pre>
             * define backfilling in addition to sync at the same time
             * </pre>
             *
             * <code>bool with_backfilling = 11;</code>
             * @return The withBackfilling.
             */
            public boolean getWithBackfilling() {
              return withBackfilling_;
            }
            /**
             * <pre>
             * define backfilling in addition to sync at the same time
             * </pre>
             *
             * <code>bool with_backfilling = 11;</code>
             * @param value The withBackfilling to set.
             * @return This builder for chaining.
             */
            public Builder setWithBackfilling(boolean value) {
              
              withBackfilling_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * define backfilling in addition to sync at the same time
             * </pre>
             *
             * <code>bool with_backfilling = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearWithBackfilling() {
              
              withBackfilling_ = false;
              onChanged();
              return this;
            }

            private boolean isScheduledOnSource_ ;
            /**
             * <pre>
             * defines whether should we schedule generator on to or from location
             * </pre>
             *
             * <code>bool is_scheduled_on_source = 12;</code>
             * @return The isScheduledOnSource.
             */
            public boolean getIsScheduledOnSource() {
              return isScheduledOnSource_;
            }
            /**
             * <pre>
             * defines whether should we schedule generator on to or from location
             * </pre>
             *
             * <code>bool is_scheduled_on_source = 12;</code>
             * @param value The isScheduledOnSource to set.
             * @return This builder for chaining.
             */
            public Builder setIsScheduledOnSource(boolean value) {
              
              isScheduledOnSource_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * defines whether should we schedule generator on to or from location
             * </pre>
             *
             * <code>bool is_scheduled_on_source = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsScheduledOnSource() {
              
              isScheduledOnSource_ = false;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<SyncOptions>
              PARSER = new com.google.protobuf.AbstractParser<SyncOptions>() {
            @java.lang.Override
            public SyncOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new SyncOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<SyncOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<SyncOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface BackupOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return Whether the from field is set.
           */
          boolean hasFrom();
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return The from.
           */
          com.acme.glup.MetadataProto.Location getFrom();
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           */
          com.acme.glup.MetadataProto.LocationOrBuilder getFromOrBuilder();

          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 2;</code>
           * @return The sourceNamespace.
           */
          java.lang.String getSourceNamespace();
          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 2;</code>
           * @return The bytes for sourceNamespace.
           */
          com.google.protobuf.ByteString
              getSourceNamespaceBytes();

          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @return A list containing the platforms.
           */
          java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformsList();
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @return The count of platforms.
           */
          int getPlatformsCount();
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @param index The index of the element to return.
           * @return The platforms at the given index.
           */
          com.acme.glup.MetadataProto.Platform getPlatforms(int index);
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @return A list containing the enum numeric values on the wire for platforms.
           */
          java.util.List<java.lang.Integer>
          getPlatformsValueList();
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @param index The index of the value to return.
           * @return The enum numeric value on the wire of platforms at the given index.
           */
          int getPlatformsValue(int index);
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions}
         */
        public  static final class BackupOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions)
            BackupOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use BackupOptions.newBuilder() to construct.
          private BackupOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private BackupOptions() {
            sourceNamespace_ = "";
            platforms_ = java.util.Collections.emptyList();
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new BackupOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private BackupOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    com.acme.glup.MetadataProto.Location.Builder subBuilder = null;
                    if (from_ != null) {
                      subBuilder = from_.toBuilder();
                    }
                    from_ = input.readMessage(com.acme.glup.MetadataProto.Location.parser(), extensionRegistry);
                    if (subBuilder != null) {
                      subBuilder.mergeFrom(from_);
                      from_ = subBuilder.buildPartial();
                    }

                    break;
                  }
                  case 18: {
                    java.lang.String s = input.readStringRequireUtf8();

                    sourceNamespace_ = s;
                    break;
                  }
                  case 24: {
                    int rawValue = input.readEnum();
                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                      platforms_ = new java.util.ArrayList<java.lang.Integer>();
                      mutable_bitField0_ |= 0x00000001;
                    }
                    platforms_.add(rawValue);
                    break;
                  }
                  case 26: {
                    int length = input.readRawVarint32();
                    int oldLimit = input.pushLimit(length);
                    while(input.getBytesUntilLimit() > 0) {
                      int rawValue = input.readEnum();
                      if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                        platforms_ = new java.util.ArrayList<java.lang.Integer>();
                        mutable_bitField0_ |= 0x00000001;
                      }
                      platforms_.add(rawValue);
                    }
                    input.popLimit(oldLimit);
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              if (((mutable_bitField0_ & 0x00000001) != 0)) {
                platforms_ = java.util.Collections.unmodifiableList(platforms_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder.class);
          }

          public static final int FROM_FIELD_NUMBER = 1;
          private com.acme.glup.MetadataProto.Location from_;
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return Whether the from field is set.
           */
          public boolean hasFrom() {
            return from_ != null;
          }
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           * @return The from.
           */
          public com.acme.glup.MetadataProto.Location getFrom() {
            return from_ == null ? com.acme.glup.MetadataProto.Location.getDefaultInstance() : from_;
          }
          /**
           * <pre>
           * defines the source of the sync
           * </pre>
           *
           * <code>.Acme.Glup.Location from = 1;</code>
           */
          public com.acme.glup.MetadataProto.LocationOrBuilder getFromOrBuilder() {
            return getFrom();
          }

          public static final int SOURCE_NAMESPACE_FIELD_NUMBER = 2;
          private volatile java.lang.Object sourceNamespace_;
          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 2;</code>
           * @return The sourceNamespace.
           */
          public java.lang.String getSourceNamespace() {
            java.lang.Object ref = sourceNamespace_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              sourceNamespace_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * The default is glup
           * </pre>
           *
           * <code>string source_namespace = 2;</code>
           * @return The bytes for sourceNamespace.
           */
          public com.google.protobuf.ByteString
              getSourceNamespaceBytes() {
            java.lang.Object ref = sourceNamespace_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              sourceNamespace_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int PLATFORMS_FIELD_NUMBER = 3;
          private java.util.List<java.lang.Integer> platforms_;
          private static final com.google.protobuf.Internal.ListAdapter.Converter<
              java.lang.Integer, com.acme.glup.MetadataProto.Platform> platforms_converter_ =
                  new com.google.protobuf.Internal.ListAdapter.Converter<
                      java.lang.Integer, com.acme.glup.MetadataProto.Platform>() {
                    public com.acme.glup.MetadataProto.Platform convert(java.lang.Integer from) {
                      @SuppressWarnings("deprecation")
                      com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(from);
                      return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
                    }
                  };
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @return A list containing the platforms.
           */
          public java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformsList() {
            return new com.google.protobuf.Internal.ListAdapter<
                java.lang.Integer, com.acme.glup.MetadataProto.Platform>(platforms_, platforms_converter_);
          }
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @return The count of platforms.
           */
          public int getPlatformsCount() {
            return platforms_.size();
          }
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @param index The index of the element to return.
           * @return The platforms at the given index.
           */
          public com.acme.glup.MetadataProto.Platform getPlatforms(int index) {
            return platforms_converter_.convert(platforms_.get(index));
          }
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @return A list containing the enum numeric values on the wire for platforms.
           */
          public java.util.List<java.lang.Integer>
          getPlatformsValueList() {
            return platforms_;
          }
          /**
           * <pre>
           * default is all platforms.
           * </pre>
           *
           * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
           * @param index The index of the value to return.
           * @return The enum numeric value on the wire of platforms at the given index.
           */
          public int getPlatformsValue(int index) {
            return platforms_.get(index);
          }
          private int platformsMemoizedSerializedSize;

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            getSerializedSize();
            if (from_ != null) {
              output.writeMessage(1, getFrom());
            }
            if (!getSourceNamespaceBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sourceNamespace_);
            }
            if (getPlatformsList().size() > 0) {
              output.writeUInt32NoTag(26);
              output.writeUInt32NoTag(platformsMemoizedSerializedSize);
            }
            for (int i = 0; i < platforms_.size(); i++) {
              output.writeEnumNoTag(platforms_.get(i));
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (from_ != null) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(1, getFrom());
            }
            if (!getSourceNamespaceBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sourceNamespace_);
            }
            {
              int dataSize = 0;
              for (int i = 0; i < platforms_.size(); i++) {
                dataSize += com.google.protobuf.CodedOutputStream
                  .computeEnumSizeNoTag(platforms_.get(i));
              }
              size += dataSize;
              if (!getPlatformsList().isEmpty()) {  size += 1;
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32SizeNoTag(dataSize);
              }platformsMemoizedSerializedSize = dataSize;
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions) obj;

            if (hasFrom() != other.hasFrom()) return false;
            if (hasFrom()) {
              if (!getFrom()
                  .equals(other.getFrom())) return false;
            }
            if (!getSourceNamespace()
                .equals(other.getSourceNamespace())) return false;
            if (!platforms_.equals(other.platforms_)) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasFrom()) {
              hash = (37 * hash) + FROM_FIELD_NUMBER;
              hash = (53 * hash) + getFrom().hashCode();
            }
            hash = (37 * hash) + SOURCE_NAMESPACE_FIELD_NUMBER;
            hash = (53 * hash) + getSourceNamespace().hashCode();
            if (getPlatformsCount() > 0) {
              hash = (37 * hash) + PLATFORMS_FIELD_NUMBER;
              hash = (53 * hash) + platforms_.hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              if (fromBuilder_ == null) {
                from_ = null;
              } else {
                from_ = null;
                fromBuilder_ = null;
              }
              sourceNamespace_ = "";

              platforms_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions(this);
              int from_bitField0_ = bitField0_;
              if (fromBuilder_ == null) {
                result.from_ = from_;
              } else {
                result.from_ = fromBuilder_.build();
              }
              result.sourceNamespace_ = sourceNamespace_;
              if (((bitField0_ & 0x00000001) != 0)) {
                platforms_ = java.util.Collections.unmodifiableList(platforms_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.platforms_ = platforms_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.getDefaultInstance()) return this;
              if (other.hasFrom()) {
                mergeFrom(other.getFrom());
              }
              if (!other.getSourceNamespace().isEmpty()) {
                sourceNamespace_ = other.sourceNamespace_;
                onChanged();
              }
              if (!other.platforms_.isEmpty()) {
                if (platforms_.isEmpty()) {
                  platforms_ = other.platforms_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensurePlatformsIsMutable();
                  platforms_.addAll(other.platforms_);
                }
                onChanged();
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private com.acme.glup.MetadataProto.Location from_;
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder> fromBuilder_;
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             * @return Whether the from field is set.
             */
            public boolean hasFrom() {
              return fromBuilder_ != null || from_ != null;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             * @return The from.
             */
            public com.acme.glup.MetadataProto.Location getFrom() {
              if (fromBuilder_ == null) {
                return from_ == null ? com.acme.glup.MetadataProto.Location.getDefaultInstance() : from_;
              } else {
                return fromBuilder_.getMessage();
              }
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder setFrom(com.acme.glup.MetadataProto.Location value) {
              if (fromBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                from_ = value;
                onChanged();
              } else {
                fromBuilder_.setMessage(value);
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder setFrom(
                com.acme.glup.MetadataProto.Location.Builder builderForValue) {
              if (fromBuilder_ == null) {
                from_ = builderForValue.build();
                onChanged();
              } else {
                fromBuilder_.setMessage(builderForValue.build());
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder mergeFrom(com.acme.glup.MetadataProto.Location value) {
              if (fromBuilder_ == null) {
                if (from_ != null) {
                  from_ =
                    com.acme.glup.MetadataProto.Location.newBuilder(from_).mergeFrom(value).buildPartial();
                } else {
                  from_ = value;
                }
                onChanged();
              } else {
                fromBuilder_.mergeFrom(value);
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public Builder clearFrom() {
              if (fromBuilder_ == null) {
                from_ = null;
                onChanged();
              } else {
                from_ = null;
                fromBuilder_ = null;
              }

              return this;
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public com.acme.glup.MetadataProto.Location.Builder getFromBuilder() {
              
              onChanged();
              return getFromFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            public com.acme.glup.MetadataProto.LocationOrBuilder getFromOrBuilder() {
              if (fromBuilder_ != null) {
                return fromBuilder_.getMessageOrBuilder();
              } else {
                return from_ == null ?
                    com.acme.glup.MetadataProto.Location.getDefaultInstance() : from_;
              }
            }
            /**
             * <pre>
             * defines the source of the sync
             * </pre>
             *
             * <code>.Acme.Glup.Location from = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder> 
                getFromFieldBuilder() {
              if (fromBuilder_ == null) {
                fromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                    com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder>(
                        getFrom(),
                        getParentForChildren(),
                        isClean());
                from_ = null;
              }
              return fromBuilder_;
            }

            private java.lang.Object sourceNamespace_ = "";
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 2;</code>
             * @return The sourceNamespace.
             */
            public java.lang.String getSourceNamespace() {
              java.lang.Object ref = sourceNamespace_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                sourceNamespace_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 2;</code>
             * @return The bytes for sourceNamespace.
             */
            public com.google.protobuf.ByteString
                getSourceNamespaceBytes() {
              java.lang.Object ref = sourceNamespace_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                sourceNamespace_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 2;</code>
             * @param value The sourceNamespace to set.
             * @return This builder for chaining.
             */
            public Builder setSourceNamespace(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              sourceNamespace_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearSourceNamespace() {
              
              sourceNamespace_ = getDefaultInstance().getSourceNamespace();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The default is glup
             * </pre>
             *
             * <code>string source_namespace = 2;</code>
             * @param value The bytes for sourceNamespace to set.
             * @return This builder for chaining.
             */
            public Builder setSourceNamespaceBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              sourceNamespace_ = value;
              onChanged();
              return this;
            }

            private java.util.List<java.lang.Integer> platforms_ =
              java.util.Collections.emptyList();
            private void ensurePlatformsIsMutable() {
              if (!((bitField0_ & 0x00000001) != 0)) {
                platforms_ = new java.util.ArrayList<java.lang.Integer>(platforms_);
                bitField0_ |= 0x00000001;
              }
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @return A list containing the platforms.
             */
            public java.util.List<com.acme.glup.MetadataProto.Platform> getPlatformsList() {
              return new com.google.protobuf.Internal.ListAdapter<
                  java.lang.Integer, com.acme.glup.MetadataProto.Platform>(platforms_, platforms_converter_);
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @return The count of platforms.
             */
            public int getPlatformsCount() {
              return platforms_.size();
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param index The index of the element to return.
             * @return The platforms at the given index.
             */
            public com.acme.glup.MetadataProto.Platform getPlatforms(int index) {
              return platforms_converter_.convert(platforms_.get(index));
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param index The index to set the value at.
             * @param value The platforms to set.
             * @return This builder for chaining.
             */
            public Builder setPlatforms(
                int index, com.acme.glup.MetadataProto.Platform value) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensurePlatformsIsMutable();
              platforms_.set(index, value.getNumber());
              onChanged();
              return this;
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param value The platforms to add.
             * @return This builder for chaining.
             */
            public Builder addPlatforms(com.acme.glup.MetadataProto.Platform value) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensurePlatformsIsMutable();
              platforms_.add(value.getNumber());
              onChanged();
              return this;
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param values The platforms to add.
             * @return This builder for chaining.
             */
            public Builder addAllPlatforms(
                java.lang.Iterable<? extends com.acme.glup.MetadataProto.Platform> values) {
              ensurePlatformsIsMutable();
              for (com.acme.glup.MetadataProto.Platform value : values) {
                platforms_.add(value.getNumber());
              }
              onChanged();
              return this;
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlatforms() {
              platforms_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @return A list containing the enum numeric values on the wire for platforms.
             */
            public java.util.List<java.lang.Integer>
            getPlatformsValueList() {
              return java.util.Collections.unmodifiableList(platforms_);
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of platforms at the given index.
             */
            public int getPlatformsValue(int index) {
              return platforms_.get(index);
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of platforms at the given index.
             * @return This builder for chaining.
             */
            public Builder setPlatformsValue(
                int index, int value) {
              ensurePlatformsIsMutable();
              platforms_.set(index, value);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param value The enum numeric value on the wire for platforms to add.
             * @return This builder for chaining.
             */
            public Builder addPlatformsValue(int value) {
              ensurePlatformsIsMutable();
              platforms_.add(value);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * default is all platforms.
             * </pre>
             *
             * <code>repeated .Acme.Glup.Platform platforms = 3;</code>
             * @param values The enum numeric values on the wire for platforms to add.
             * @return This builder for chaining.
             */
            public Builder addAllPlatformsValue(
                java.lang.Iterable<java.lang.Integer> values) {
              ensurePlatformsIsMutable();
              for (int value : values) {
                platforms_.add(value);
              }
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<BackupOptions>
              PARSER = new com.google.protobuf.AbstractParser<BackupOptions>() {
            @java.lang.Override
            public BackupOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new BackupOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<BackupOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<BackupOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface TranscodingOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * id of the source data set
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The inputDatasetId.
           */
          java.lang.String getInputDatasetId();
          /**
           * <pre>
           * id of the source data set
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The bytes for inputDatasetId.
           */
          com.google.protobuf.ByteString
              getInputDatasetIdBytes();

          /**
           * <pre>
           * id of the target data set, it can be the same as the source
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The outputDatasetId.
           */
          java.lang.String getOutputDatasetId();
          /**
           * <pre>
           * id of the target data set, it can be the same as the source
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The bytes for outputDatasetId.
           */
          com.google.protobuf.ByteString
              getOutputDatasetIdBytes();

          /**
           * <pre>
           * format of the source data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
           * @return The enum numeric value on the wire for inputFormat.
           */
          int getInputFormatValue();
          /**
           * <pre>
           * format of the source data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
           * @return The inputFormat.
           */
          com.acme.glup.MetadataProto.HDFSDataFormat getInputFormat();

          /**
           * <pre>
           * format of the target data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
           * @return The enum numeric value on the wire for outputFormat.
           */
          int getOutputFormatValue();
          /**
           * <pre>
           * format of the target data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
           * @return The outputFormat.
           */
          com.acme.glup.MetadataProto.HDFSDataFormat getOutputFormat();

          /**
           * <pre>
           * input format label
           * </pre>
           *
           * <code>string input_dataset_label = 5;</code>
           * @return The inputDatasetLabel.
           */
          java.lang.String getInputDatasetLabel();
          /**
           * <pre>
           * input format label
           * </pre>
           *
           * <code>string input_dataset_label = 5;</code>
           * @return The bytes for inputDatasetLabel.
           */
          com.google.protobuf.ByteString
              getInputDatasetLabelBytes();

          /**
           * <pre>
           * output format label
           * </pre>
           *
           * <code>string output_dataset_label = 6;</code>
           * @return The outputDatasetLabel.
           */
          java.lang.String getOutputDatasetLabel();
          /**
           * <pre>
           * output format label
           * </pre>
           *
           * <code>string output_dataset_label = 6;</code>
           * @return The bytes for outputDatasetLabel.
           */
          com.google.protobuf.ByteString
              getOutputDatasetLabelBytes();

          /**
           * <pre>
           * transcoding job should work by platform
           * </pre>
           *
           * <code>bool is_by_platform = 7;</code>
           * @return The isByPlatform.
           */
          boolean getIsByPlatform();
        }
        /**
         * <pre>
         * Defines how to transcode data from one format to an other
         * </pre>
         *
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions}
         */
        public  static final class TranscodingOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions)
            TranscodingOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use TranscodingOptions.newBuilder() to construct.
          private TranscodingOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private TranscodingOptions() {
            inputDatasetId_ = "";
            outputDatasetId_ = "";
            inputFormat_ = 0;
            outputFormat_ = 0;
            inputDatasetLabel_ = "";
            outputDatasetLabel_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new TranscodingOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private TranscodingOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    java.lang.String s = input.readStringRequireUtf8();

                    inputDatasetId_ = s;
                    break;
                  }
                  case 18: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputDatasetId_ = s;
                    break;
                  }
                  case 24: {
                    int rawValue = input.readEnum();

                    inputFormat_ = rawValue;
                    break;
                  }
                  case 32: {
                    int rawValue = input.readEnum();

                    outputFormat_ = rawValue;
                    break;
                  }
                  case 42: {
                    java.lang.String s = input.readStringRequireUtf8();

                    inputDatasetLabel_ = s;
                    break;
                  }
                  case 50: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputDatasetLabel_ = s;
                    break;
                  }
                  case 56: {

                    isByPlatform_ = input.readBool();
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder.class);
          }

          public static final int INPUT_DATASET_ID_FIELD_NUMBER = 1;
          private volatile java.lang.Object inputDatasetId_;
          /**
           * <pre>
           * id of the source data set
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The inputDatasetId.
           */
          public java.lang.String getInputDatasetId() {
            java.lang.Object ref = inputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              inputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * id of the source data set
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The bytes for inputDatasetId.
           */
          public com.google.protobuf.ByteString
              getInputDatasetIdBytes() {
            java.lang.Object ref = inputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              inputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_DATASET_ID_FIELD_NUMBER = 2;
          private volatile java.lang.Object outputDatasetId_;
          /**
           * <pre>
           * id of the target data set, it can be the same as the source
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The outputDatasetId.
           */
          public java.lang.String getOutputDatasetId() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * id of the target data set, it can be the same as the source
           * </pre>
           *
           * <code>string output_dataset_id = 2;</code>
           * @return The bytes for outputDatasetId.
           */
          public com.google.protobuf.ByteString
              getOutputDatasetIdBytes() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int INPUT_FORMAT_FIELD_NUMBER = 3;
          private int inputFormat_;
          /**
           * <pre>
           * format of the source data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
           * @return The enum numeric value on the wire for inputFormat.
           */
          public int getInputFormatValue() {
            return inputFormat_;
          }
          /**
           * <pre>
           * format of the source data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
           * @return The inputFormat.
           */
          public com.acme.glup.MetadataProto.HDFSDataFormat getInputFormat() {
            @SuppressWarnings("deprecation")
            com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(inputFormat_);
            return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
          }

          public static final int OUTPUT_FORMAT_FIELD_NUMBER = 4;
          private int outputFormat_;
          /**
           * <pre>
           * format of the target data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
           * @return The enum numeric value on the wire for outputFormat.
           */
          public int getOutputFormatValue() {
            return outputFormat_;
          }
          /**
           * <pre>
           * format of the target data set
           * </pre>
           *
           * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
           * @return The outputFormat.
           */
          public com.acme.glup.MetadataProto.HDFSDataFormat getOutputFormat() {
            @SuppressWarnings("deprecation")
            com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(outputFormat_);
            return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
          }

          public static final int INPUT_DATASET_LABEL_FIELD_NUMBER = 5;
          private volatile java.lang.Object inputDatasetLabel_;
          /**
           * <pre>
           * input format label
           * </pre>
           *
           * <code>string input_dataset_label = 5;</code>
           * @return The inputDatasetLabel.
           */
          public java.lang.String getInputDatasetLabel() {
            java.lang.Object ref = inputDatasetLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              inputDatasetLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * input format label
           * </pre>
           *
           * <code>string input_dataset_label = 5;</code>
           * @return The bytes for inputDatasetLabel.
           */
          public com.google.protobuf.ByteString
              getInputDatasetLabelBytes() {
            java.lang.Object ref = inputDatasetLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              inputDatasetLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_DATASET_LABEL_FIELD_NUMBER = 6;
          private volatile java.lang.Object outputDatasetLabel_;
          /**
           * <pre>
           * output format label
           * </pre>
           *
           * <code>string output_dataset_label = 6;</code>
           * @return The outputDatasetLabel.
           */
          public java.lang.String getOutputDatasetLabel() {
            java.lang.Object ref = outputDatasetLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputDatasetLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * output format label
           * </pre>
           *
           * <code>string output_dataset_label = 6;</code>
           * @return The bytes for outputDatasetLabel.
           */
          public com.google.protobuf.ByteString
              getOutputDatasetLabelBytes() {
            java.lang.Object ref = outputDatasetLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputDatasetLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int IS_BY_PLATFORM_FIELD_NUMBER = 7;
          private boolean isByPlatform_;
          /**
           * <pre>
           * transcoding job should work by platform
           * </pre>
           *
           * <code>bool is_by_platform = 7;</code>
           * @return The isByPlatform.
           */
          public boolean getIsByPlatform() {
            return isByPlatform_;
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!getInputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, inputDatasetId_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 2, outputDatasetId_);
            }
            if (inputFormat_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
              output.writeEnum(3, inputFormat_);
            }
            if (outputFormat_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
              output.writeEnum(4, outputFormat_);
            }
            if (!getInputDatasetLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 5, inputDatasetLabel_);
            }
            if (!getOutputDatasetLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 6, outputDatasetLabel_);
            }
            if (isByPlatform_ != false) {
              output.writeBool(7, isByPlatform_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!getInputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, inputDatasetId_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, outputDatasetId_);
            }
            if (inputFormat_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
              size += com.google.protobuf.CodedOutputStream
                .computeEnumSize(3, inputFormat_);
            }
            if (outputFormat_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
              size += com.google.protobuf.CodedOutputStream
                .computeEnumSize(4, outputFormat_);
            }
            if (!getInputDatasetLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, inputDatasetLabel_);
            }
            if (!getOutputDatasetLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, outputDatasetLabel_);
            }
            if (isByPlatform_ != false) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(7, isByPlatform_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions) obj;

            if (!getInputDatasetId()
                .equals(other.getInputDatasetId())) return false;
            if (!getOutputDatasetId()
                .equals(other.getOutputDatasetId())) return false;
            if (inputFormat_ != other.inputFormat_) return false;
            if (outputFormat_ != other.outputFormat_) return false;
            if (!getInputDatasetLabel()
                .equals(other.getInputDatasetLabel())) return false;
            if (!getOutputDatasetLabel()
                .equals(other.getOutputDatasetLabel())) return false;
            if (getIsByPlatform()
                != other.getIsByPlatform()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + INPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getInputDatasetId().hashCode();
            hash = (37 * hash) + OUTPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getOutputDatasetId().hashCode();
            hash = (37 * hash) + INPUT_FORMAT_FIELD_NUMBER;
            hash = (53 * hash) + inputFormat_;
            hash = (37 * hash) + OUTPUT_FORMAT_FIELD_NUMBER;
            hash = (53 * hash) + outputFormat_;
            hash = (37 * hash) + INPUT_DATASET_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getInputDatasetLabel().hashCode();
            hash = (37 * hash) + OUTPUT_DATASET_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getOutputDatasetLabel().hashCode();
            hash = (37 * hash) + IS_BY_PLATFORM_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getIsByPlatform());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * <pre>
           * Defines how to transcode data from one format to an other
           * </pre>
           *
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              inputDatasetId_ = "";

              outputDatasetId_ = "";

              inputFormat_ = 0;

              outputFormat_ = 0;

              inputDatasetLabel_ = "";

              outputDatasetLabel_ = "";

              isByPlatform_ = false;

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions(this);
              result.inputDatasetId_ = inputDatasetId_;
              result.outputDatasetId_ = outputDatasetId_;
              result.inputFormat_ = inputFormat_;
              result.outputFormat_ = outputFormat_;
              result.inputDatasetLabel_ = inputDatasetLabel_;
              result.outputDatasetLabel_ = outputDatasetLabel_;
              result.isByPlatform_ = isByPlatform_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.getDefaultInstance()) return this;
              if (!other.getInputDatasetId().isEmpty()) {
                inputDatasetId_ = other.inputDatasetId_;
                onChanged();
              }
              if (!other.getOutputDatasetId().isEmpty()) {
                outputDatasetId_ = other.outputDatasetId_;
                onChanged();
              }
              if (other.inputFormat_ != 0) {
                setInputFormatValue(other.getInputFormatValue());
              }
              if (other.outputFormat_ != 0) {
                setOutputFormatValue(other.getOutputFormatValue());
              }
              if (!other.getInputDatasetLabel().isEmpty()) {
                inputDatasetLabel_ = other.inputDatasetLabel_;
                onChanged();
              }
              if (!other.getOutputDatasetLabel().isEmpty()) {
                outputDatasetLabel_ = other.outputDatasetLabel_;
                onChanged();
              }
              if (other.getIsByPlatform() != false) {
                setIsByPlatform(other.getIsByPlatform());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private java.lang.Object inputDatasetId_ = "";
            /**
             * <pre>
             * id of the source data set
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return The inputDatasetId.
             */
            public java.lang.String getInputDatasetId() {
              java.lang.Object ref = inputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                inputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * id of the source data set
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return The bytes for inputDatasetId.
             */
            public com.google.protobuf.ByteString
                getInputDatasetIdBytes() {
              java.lang.Object ref = inputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                inputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * id of the source data set
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @param value The inputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              inputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * id of the source data set
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputDatasetId() {
              
              inputDatasetId_ = getDefaultInstance().getInputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * id of the source data set
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @param value The bytes for inputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              inputDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputDatasetId_ = "";
            /**
             * <pre>
             * id of the target data set, it can be the same as the source
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @return The outputDatasetId.
             */
            public java.lang.String getOutputDatasetId() {
              java.lang.Object ref = outputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * id of the target data set, it can be the same as the source
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @return The bytes for outputDatasetId.
             */
            public com.google.protobuf.ByteString
                getOutputDatasetIdBytes() {
              java.lang.Object ref = outputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * id of the target data set, it can be the same as the source
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @param value The outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * id of the target data set, it can be the same as the source
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputDatasetId() {
              
              outputDatasetId_ = getDefaultInstance().getOutputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * id of the target data set, it can be the same as the source
             * </pre>
             *
             * <code>string output_dataset_id = 2;</code>
             * @param value The bytes for outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputDatasetId_ = value;
              onChanged();
              return this;
            }

            private int inputFormat_ = 0;
            /**
             * <pre>
             * format of the source data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
             * @return The enum numeric value on the wire for inputFormat.
             */
            public int getInputFormatValue() {
              return inputFormat_;
            }
            /**
             * <pre>
             * format of the source data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
             * @param value The enum numeric value on the wire for inputFormat to set.
             * @return This builder for chaining.
             */
            public Builder setInputFormatValue(int value) {
              inputFormat_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * format of the source data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
             * @return The inputFormat.
             */
            public com.acme.glup.MetadataProto.HDFSDataFormat getInputFormat() {
              @SuppressWarnings("deprecation")
              com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(inputFormat_);
              return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
            }
            /**
             * <pre>
             * format of the source data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
             * @param value The inputFormat to set.
             * @return This builder for chaining.
             */
            public Builder setInputFormat(com.acme.glup.MetadataProto.HDFSDataFormat value) {
              if (value == null) {
                throw new NullPointerException();
              }
              
              inputFormat_ = value.getNumber();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * format of the source data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat input_format = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputFormat() {
              
              inputFormat_ = 0;
              onChanged();
              return this;
            }

            private int outputFormat_ = 0;
            /**
             * <pre>
             * format of the target data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
             * @return The enum numeric value on the wire for outputFormat.
             */
            public int getOutputFormatValue() {
              return outputFormat_;
            }
            /**
             * <pre>
             * format of the target data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
             * @param value The enum numeric value on the wire for outputFormat to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatValue(int value) {
              outputFormat_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * format of the target data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
             * @return The outputFormat.
             */
            public com.acme.glup.MetadataProto.HDFSDataFormat getOutputFormat() {
              @SuppressWarnings("deprecation")
              com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(outputFormat_);
              return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
            }
            /**
             * <pre>
             * format of the target data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
             * @param value The outputFormat to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormat(com.acme.glup.MetadataProto.HDFSDataFormat value) {
              if (value == null) {
                throw new NullPointerException();
              }
              
              outputFormat_ = value.getNumber();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * format of the target data set
             * </pre>
             *
             * <code>.Acme.Glup.HDFSDataFormat output_format = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputFormat() {
              
              outputFormat_ = 0;
              onChanged();
              return this;
            }

            private java.lang.Object inputDatasetLabel_ = "";
            /**
             * <pre>
             * input format label
             * </pre>
             *
             * <code>string input_dataset_label = 5;</code>
             * @return The inputDatasetLabel.
             */
            public java.lang.String getInputDatasetLabel() {
              java.lang.Object ref = inputDatasetLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                inputDatasetLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * input format label
             * </pre>
             *
             * <code>string input_dataset_label = 5;</code>
             * @return The bytes for inputDatasetLabel.
             */
            public com.google.protobuf.ByteString
                getInputDatasetLabelBytes() {
              java.lang.Object ref = inputDatasetLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                inputDatasetLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * input format label
             * </pre>
             *
             * <code>string input_dataset_label = 5;</code>
             * @param value The inputDatasetLabel to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              inputDatasetLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * input format label
             * </pre>
             *
             * <code>string input_dataset_label = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputDatasetLabel() {
              
              inputDatasetLabel_ = getDefaultInstance().getInputDatasetLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * input format label
             * </pre>
             *
             * <code>string input_dataset_label = 5;</code>
             * @param value The bytes for inputDatasetLabel to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              inputDatasetLabel_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputDatasetLabel_ = "";
            /**
             * <pre>
             * output format label
             * </pre>
             *
             * <code>string output_dataset_label = 6;</code>
             * @return The outputDatasetLabel.
             */
            public java.lang.String getOutputDatasetLabel() {
              java.lang.Object ref = outputDatasetLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputDatasetLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * output format label
             * </pre>
             *
             * <code>string output_dataset_label = 6;</code>
             * @return The bytes for outputDatasetLabel.
             */
            public com.google.protobuf.ByteString
                getOutputDatasetLabelBytes() {
              java.lang.Object ref = outputDatasetLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputDatasetLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * output format label
             * </pre>
             *
             * <code>string output_dataset_label = 6;</code>
             * @param value The outputDatasetLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputDatasetLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * output format label
             * </pre>
             *
             * <code>string output_dataset_label = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputDatasetLabel() {
              
              outputDatasetLabel_ = getDefaultInstance().getOutputDatasetLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * output format label
             * </pre>
             *
             * <code>string output_dataset_label = 6;</code>
             * @param value The bytes for outputDatasetLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputDatasetLabel_ = value;
              onChanged();
              return this;
            }

            private boolean isByPlatform_ ;
            /**
             * <pre>
             * transcoding job should work by platform
             * </pre>
             *
             * <code>bool is_by_platform = 7;</code>
             * @return The isByPlatform.
             */
            public boolean getIsByPlatform() {
              return isByPlatform_;
            }
            /**
             * <pre>
             * transcoding job should work by platform
             * </pre>
             *
             * <code>bool is_by_platform = 7;</code>
             * @param value The isByPlatform to set.
             * @return This builder for chaining.
             */
            public Builder setIsByPlatform(boolean value) {
              
              isByPlatform_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * transcoding job should work by platform
             * </pre>
             *
             * <code>bool is_by_platform = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsByPlatform() {
              
              isByPlatform_ = false;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<TranscodingOptions>
              PARSER = new com.google.protobuf.AbstractParser<TranscodingOptions>() {
            @java.lang.Override
            public TranscodingOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new TranscodingOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<TranscodingOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<TranscodingOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface SamplerOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * Name of input dataset to sample
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The inputDatasetId.
           */
          java.lang.String getInputDatasetId();
          /**
           * <pre>
           * Name of input dataset to sample
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The bytes for inputDatasetId.
           */
          com.google.protobuf.ByteString
              getInputDatasetIdBytes();

          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The inputFormatLabel.
           */
          java.lang.String getInputFormatLabel();
          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The bytes for inputFormatLabel.
           */
          com.google.protobuf.ByteString
              getInputFormatLabelBytes();

          /**
           * <pre>
           * Name of output dataset to sample
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The outputDatasetId.
           */
          java.lang.String getOutputDatasetId();
          /**
           * <pre>
           * Name of output dataset to sample
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The bytes for outputDatasetId.
           */
          com.google.protobuf.ByteString
              getOutputDatasetIdBytes();

          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The outputFormatLabel.
           */
          java.lang.String getOutputFormatLabel();
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The bytes for outputFormatLabel.
           */
          com.google.protobuf.ByteString
              getOutputFormatLabelBytes();

          /**
           * <pre>
           * Sampling rate between 0 and 1
           * </pre>
           *
           * <code>float sampling_rate = 5;</code>
           * @return The samplingRate.
           */
          float getSamplingRate();
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions}
         */
        public  static final class SamplerOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions)
            SamplerOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use SamplerOptions.newBuilder() to construct.
          private SamplerOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private SamplerOptions() {
            inputDatasetId_ = "";
            inputFormatLabel_ = "";
            outputDatasetId_ = "";
            outputFormatLabel_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new SamplerOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private SamplerOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    java.lang.String s = input.readStringRequireUtf8();

                    inputDatasetId_ = s;
                    break;
                  }
                  case 18: {
                    java.lang.String s = input.readStringRequireUtf8();

                    inputFormatLabel_ = s;
                    break;
                  }
                  case 26: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputDatasetId_ = s;
                    break;
                  }
                  case 34: {
                    java.lang.String s = input.readStringRequireUtf8();

                    outputFormatLabel_ = s;
                    break;
                  }
                  case 45: {

                    samplingRate_ = input.readFloat();
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder.class);
          }

          public static final int INPUT_DATASET_ID_FIELD_NUMBER = 1;
          private volatile java.lang.Object inputDatasetId_;
          /**
           * <pre>
           * Name of input dataset to sample
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The inputDatasetId.
           */
          public java.lang.String getInputDatasetId() {
            java.lang.Object ref = inputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              inputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Name of input dataset to sample
           * </pre>
           *
           * <code>string input_dataset_id = 1;</code>
           * @return The bytes for inputDatasetId.
           */
          public com.google.protobuf.ByteString
              getInputDatasetIdBytes() {
            java.lang.Object ref = inputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              inputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int INPUT_FORMAT_LABEL_FIELD_NUMBER = 2;
          private volatile java.lang.Object inputFormatLabel_;
          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The inputFormatLabel.
           */
          public java.lang.String getInputFormatLabel() {
            java.lang.Object ref = inputFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              inputFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Label of input format
           * </pre>
           *
           * <code>string input_format_label = 2;</code>
           * @return The bytes for inputFormatLabel.
           */
          public com.google.protobuf.ByteString
              getInputFormatLabelBytes() {
            java.lang.Object ref = inputFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              inputFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_DATASET_ID_FIELD_NUMBER = 3;
          private volatile java.lang.Object outputDatasetId_;
          /**
           * <pre>
           * Name of output dataset to sample
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The outputDatasetId.
           */
          public java.lang.String getOutputDatasetId() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Name of output dataset to sample
           * </pre>
           *
           * <code>string output_dataset_id = 3;</code>
           * @return The bytes for outputDatasetId.
           */
          public com.google.protobuf.ByteString
              getOutputDatasetIdBytes() {
            java.lang.Object ref = outputDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int OUTPUT_FORMAT_LABEL_FIELD_NUMBER = 4;
          private volatile java.lang.Object outputFormatLabel_;
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The outputFormatLabel.
           */
          public java.lang.String getOutputFormatLabel() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              outputFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Label of output format
           * </pre>
           *
           * <code>string output_format_label = 4;</code>
           * @return The bytes for outputFormatLabel.
           */
          public com.google.protobuf.ByteString
              getOutputFormatLabelBytes() {
            java.lang.Object ref = outputFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              outputFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int SAMPLING_RATE_FIELD_NUMBER = 5;
          private float samplingRate_;
          /**
           * <pre>
           * Sampling rate between 0 and 1
           * </pre>
           *
           * <code>float sampling_rate = 5;</code>
           * @return The samplingRate.
           */
          public float getSamplingRate() {
            return samplingRate_;
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!getInputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, inputDatasetId_);
            }
            if (!getInputFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 2, inputFormatLabel_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 3, outputDatasetId_);
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 4, outputFormatLabel_);
            }
            if (samplingRate_ != 0F) {
              output.writeFloat(5, samplingRate_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!getInputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, inputDatasetId_);
            }
            if (!getInputFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, inputFormatLabel_);
            }
            if (!getOutputDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, outputDatasetId_);
            }
            if (!getOutputFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, outputFormatLabel_);
            }
            if (samplingRate_ != 0F) {
              size += com.google.protobuf.CodedOutputStream
                .computeFloatSize(5, samplingRate_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions) obj;

            if (!getInputDatasetId()
                .equals(other.getInputDatasetId())) return false;
            if (!getInputFormatLabel()
                .equals(other.getInputFormatLabel())) return false;
            if (!getOutputDatasetId()
                .equals(other.getOutputDatasetId())) return false;
            if (!getOutputFormatLabel()
                .equals(other.getOutputFormatLabel())) return false;
            if (java.lang.Float.floatToIntBits(getSamplingRate())
                != java.lang.Float.floatToIntBits(
                    other.getSamplingRate())) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + INPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getInputDatasetId().hashCode();
            hash = (37 * hash) + INPUT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getInputFormatLabel().hashCode();
            hash = (37 * hash) + OUTPUT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getOutputDatasetId().hashCode();
            hash = (37 * hash) + OUTPUT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getOutputFormatLabel().hashCode();
            hash = (37 * hash) + SAMPLING_RATE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                getSamplingRate());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              inputDatasetId_ = "";

              inputFormatLabel_ = "";

              outputDatasetId_ = "";

              outputFormatLabel_ = "";

              samplingRate_ = 0F;

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions(this);
              result.inputDatasetId_ = inputDatasetId_;
              result.inputFormatLabel_ = inputFormatLabel_;
              result.outputDatasetId_ = outputDatasetId_;
              result.outputFormatLabel_ = outputFormatLabel_;
              result.samplingRate_ = samplingRate_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.getDefaultInstance()) return this;
              if (!other.getInputDatasetId().isEmpty()) {
                inputDatasetId_ = other.inputDatasetId_;
                onChanged();
              }
              if (!other.getInputFormatLabel().isEmpty()) {
                inputFormatLabel_ = other.inputFormatLabel_;
                onChanged();
              }
              if (!other.getOutputDatasetId().isEmpty()) {
                outputDatasetId_ = other.outputDatasetId_;
                onChanged();
              }
              if (!other.getOutputFormatLabel().isEmpty()) {
                outputFormatLabel_ = other.outputFormatLabel_;
                onChanged();
              }
              if (other.getSamplingRate() != 0F) {
                setSamplingRate(other.getSamplingRate());
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private java.lang.Object inputDatasetId_ = "";
            /**
             * <pre>
             * Name of input dataset to sample
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return The inputDatasetId.
             */
            public java.lang.String getInputDatasetId() {
              java.lang.Object ref = inputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                inputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Name of input dataset to sample
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return The bytes for inputDatasetId.
             */
            public com.google.protobuf.ByteString
                getInputDatasetIdBytes() {
              java.lang.Object ref = inputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                inputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Name of input dataset to sample
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @param value The inputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              inputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of input dataset to sample
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputDatasetId() {
              
              inputDatasetId_ = getDefaultInstance().getInputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of input dataset to sample
             * </pre>
             *
             * <code>string input_dataset_id = 1;</code>
             * @param value The bytes for inputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setInputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              inputDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object inputFormatLabel_ = "";
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @return The inputFormatLabel.
             */
            public java.lang.String getInputFormatLabel() {
              java.lang.Object ref = inputFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                inputFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @return The bytes for inputFormatLabel.
             */
            public com.google.protobuf.ByteString
                getInputFormatLabelBytes() {
              java.lang.Object ref = inputFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                inputFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @param value The inputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setInputFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              inputFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputFormatLabel() {
              
              inputFormatLabel_ = getDefaultInstance().getInputFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of input format
             * </pre>
             *
             * <code>string input_format_label = 2;</code>
             * @param value The bytes for inputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setInputFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              inputFormatLabel_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputDatasetId_ = "";
            /**
             * <pre>
             * Name of output dataset to sample
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @return The outputDatasetId.
             */
            public java.lang.String getOutputDatasetId() {
              java.lang.Object ref = outputDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Name of output dataset to sample
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @return The bytes for outputDatasetId.
             */
            public com.google.protobuf.ByteString
                getOutputDatasetIdBytes() {
              java.lang.Object ref = outputDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Name of output dataset to sample
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @param value The outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of output dataset to sample
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputDatasetId() {
              
              outputDatasetId_ = getDefaultInstance().getOutputDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Name of output dataset to sample
             * </pre>
             *
             * <code>string output_dataset_id = 3;</code>
             * @param value The bytes for outputDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setOutputDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object outputFormatLabel_ = "";
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @return The outputFormatLabel.
             */
            public java.lang.String getOutputFormatLabel() {
              java.lang.Object ref = outputFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                outputFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @return The bytes for outputFormatLabel.
             */
            public com.google.protobuf.ByteString
                getOutputFormatLabelBytes() {
              java.lang.Object ref = outputFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                outputFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @param value The outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearOutputFormatLabel() {
              
              outputFormatLabel_ = getDefaultInstance().getOutputFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Label of output format
             * </pre>
             *
             * <code>string output_format_label = 4;</code>
             * @param value The bytes for outputFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setOutputFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              outputFormatLabel_ = value;
              onChanged();
              return this;
            }

            private float samplingRate_ ;
            /**
             * <pre>
             * Sampling rate between 0 and 1
             * </pre>
             *
             * <code>float sampling_rate = 5;</code>
             * @return The samplingRate.
             */
            public float getSamplingRate() {
              return samplingRate_;
            }
            /**
             * <pre>
             * Sampling rate between 0 and 1
             * </pre>
             *
             * <code>float sampling_rate = 5;</code>
             * @param value The samplingRate to set.
             * @return This builder for chaining.
             */
            public Builder setSamplingRate(float value) {
              
              samplingRate_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Sampling rate between 0 and 1
             * </pre>
             *
             * <code>float sampling_rate = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearSamplingRate() {
              
              samplingRate_ = 0F;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<SamplerOptions>
              PARSER = new com.google.protobuf.AbstractParser<SamplerOptions>() {
            @java.lang.Override
            public SamplerOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new SamplerOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<SamplerOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<SamplerOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface ComparatorOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * The first data set to compare
           * </pre>
           *
           * <code>string left_dataset_id = 1;</code>
           * @return The leftDatasetId.
           */
          java.lang.String getLeftDatasetId();
          /**
           * <pre>
           * The first data set to compare
           * </pre>
           *
           * <code>string left_dataset_id = 1;</code>
           * @return The bytes for leftDatasetId.
           */
          com.google.protobuf.ByteString
              getLeftDatasetIdBytes();

          /**
           * <pre>
           * The specific format of the first data set
           * </pre>
           *
           * <code>string left_format_label = 2;</code>
           * @return The leftFormatLabel.
           */
          java.lang.String getLeftFormatLabel();
          /**
           * <pre>
           * The specific format of the first data set
           * </pre>
           *
           * <code>string left_format_label = 2;</code>
           * @return The bytes for leftFormatLabel.
           */
          com.google.protobuf.ByteString
              getLeftFormatLabelBytes();

          /**
           * <pre>
           * The second data set to compare
           * </pre>
           *
           * <code>string right_dataset_id = 3;</code>
           * @return The rightDatasetId.
           */
          java.lang.String getRightDatasetId();
          /**
           * <pre>
           * The second data set to compare
           * </pre>
           *
           * <code>string right_dataset_id = 3;</code>
           * @return The bytes for rightDatasetId.
           */
          com.google.protobuf.ByteString
              getRightDatasetIdBytes();

          /**
           * <pre>
           * The specific format of the second data set
           * </pre>
           *
           * <code>string right_format_label = 4;</code>
           * @return The rightFormatLabel.
           */
          java.lang.String getRightFormatLabel();
          /**
           * <pre>
           * The specific format of the second data set
           * </pre>
           *
           * <code>string right_format_label = 4;</code>
           * @return The bytes for rightFormatLabel.
           */
          com.google.protobuf.ByteString
              getRightFormatLabelBytes();

          /**
           * <pre>
           * If set, filtering left and right dataset to a specific hostname.
           * </pre>
           *
           * <code>string hostname = 5;</code>
           * @return The hostname.
           */
          java.lang.String getHostname();
          /**
           * <pre>
           * If set, filtering left and right dataset to a specific hostname.
           * </pre>
           *
           * <code>string hostname = 5;</code>
           * @return The bytes for hostname.
           */
          com.google.protobuf.ByteString
              getHostnameBytes();

          /**
           * <pre>
           * If set, fields ignored in the comparison separated by ','
           * </pre>
           *
           * <code>string ignored_fields = 6;</code>
           * @return The ignoredFields.
           */
          java.lang.String getIgnoredFields();
          /**
           * <pre>
           * If set, fields ignored in the comparison separated by ','
           * </pre>
           *
           * <code>string ignored_fields = 6;</code>
           * @return The bytes for ignoredFields.
           */
          com.google.protobuf.ByteString
              getIgnoredFieldsBytes();
        }
        /**
         * <pre>
         * Used by the DataComparator
         * NB: comparision is symmetric, left and right are just name and
         * do not refer to join strategy
         * </pre>
         *
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions}
         */
        public  static final class ComparatorOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions)
            ComparatorOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use ComparatorOptions.newBuilder() to construct.
          private ComparatorOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private ComparatorOptions() {
            leftDatasetId_ = "";
            leftFormatLabel_ = "";
            rightDatasetId_ = "";
            rightFormatLabel_ = "";
            hostname_ = "";
            ignoredFields_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new ComparatorOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private ComparatorOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    java.lang.String s = input.readStringRequireUtf8();

                    leftDatasetId_ = s;
                    break;
                  }
                  case 18: {
                    java.lang.String s = input.readStringRequireUtf8();

                    leftFormatLabel_ = s;
                    break;
                  }
                  case 26: {
                    java.lang.String s = input.readStringRequireUtf8();

                    rightDatasetId_ = s;
                    break;
                  }
                  case 34: {
                    java.lang.String s = input.readStringRequireUtf8();

                    rightFormatLabel_ = s;
                    break;
                  }
                  case 42: {
                    java.lang.String s = input.readStringRequireUtf8();

                    hostname_ = s;
                    break;
                  }
                  case 50: {
                    java.lang.String s = input.readStringRequireUtf8();

                    ignoredFields_ = s;
                    break;
                  }
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder.class);
          }

          public static final int LEFT_DATASET_ID_FIELD_NUMBER = 1;
          private volatile java.lang.Object leftDatasetId_;
          /**
           * <pre>
           * The first data set to compare
           * </pre>
           *
           * <code>string left_dataset_id = 1;</code>
           * @return The leftDatasetId.
           */
          public java.lang.String getLeftDatasetId() {
            java.lang.Object ref = leftDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              leftDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * The first data set to compare
           * </pre>
           *
           * <code>string left_dataset_id = 1;</code>
           * @return The bytes for leftDatasetId.
           */
          public com.google.protobuf.ByteString
              getLeftDatasetIdBytes() {
            java.lang.Object ref = leftDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              leftDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int LEFT_FORMAT_LABEL_FIELD_NUMBER = 2;
          private volatile java.lang.Object leftFormatLabel_;
          /**
           * <pre>
           * The specific format of the first data set
           * </pre>
           *
           * <code>string left_format_label = 2;</code>
           * @return The leftFormatLabel.
           */
          public java.lang.String getLeftFormatLabel() {
            java.lang.Object ref = leftFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              leftFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * The specific format of the first data set
           * </pre>
           *
           * <code>string left_format_label = 2;</code>
           * @return The bytes for leftFormatLabel.
           */
          public com.google.protobuf.ByteString
              getLeftFormatLabelBytes() {
            java.lang.Object ref = leftFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              leftFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int RIGHT_DATASET_ID_FIELD_NUMBER = 3;
          private volatile java.lang.Object rightDatasetId_;
          /**
           * <pre>
           * The second data set to compare
           * </pre>
           *
           * <code>string right_dataset_id = 3;</code>
           * @return The rightDatasetId.
           */
          public java.lang.String getRightDatasetId() {
            java.lang.Object ref = rightDatasetId_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              rightDatasetId_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * The second data set to compare
           * </pre>
           *
           * <code>string right_dataset_id = 3;</code>
           * @return The bytes for rightDatasetId.
           */
          public com.google.protobuf.ByteString
              getRightDatasetIdBytes() {
            java.lang.Object ref = rightDatasetId_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              rightDatasetId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int RIGHT_FORMAT_LABEL_FIELD_NUMBER = 4;
          private volatile java.lang.Object rightFormatLabel_;
          /**
           * <pre>
           * The specific format of the second data set
           * </pre>
           *
           * <code>string right_format_label = 4;</code>
           * @return The rightFormatLabel.
           */
          public java.lang.String getRightFormatLabel() {
            java.lang.Object ref = rightFormatLabel_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              rightFormatLabel_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * The specific format of the second data set
           * </pre>
           *
           * <code>string right_format_label = 4;</code>
           * @return The bytes for rightFormatLabel.
           */
          public com.google.protobuf.ByteString
              getRightFormatLabelBytes() {
            java.lang.Object ref = rightFormatLabel_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              rightFormatLabel_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int HOSTNAME_FIELD_NUMBER = 5;
          private volatile java.lang.Object hostname_;
          /**
           * <pre>
           * If set, filtering left and right dataset to a specific hostname.
           * </pre>
           *
           * <code>string hostname = 5;</code>
           * @return The hostname.
           */
          public java.lang.String getHostname() {
            java.lang.Object ref = hostname_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              hostname_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * If set, filtering left and right dataset to a specific hostname.
           * </pre>
           *
           * <code>string hostname = 5;</code>
           * @return The bytes for hostname.
           */
          public com.google.protobuf.ByteString
              getHostnameBytes() {
            java.lang.Object ref = hostname_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              hostname_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int IGNORED_FIELDS_FIELD_NUMBER = 6;
          private volatile java.lang.Object ignoredFields_;
          /**
           * <pre>
           * If set, fields ignored in the comparison separated by ','
           * </pre>
           *
           * <code>string ignored_fields = 6;</code>
           * @return The ignoredFields.
           */
          public java.lang.String getIgnoredFields() {
            java.lang.Object ref = ignoredFields_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              ignoredFields_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * If set, fields ignored in the comparison separated by ','
           * </pre>
           *
           * <code>string ignored_fields = 6;</code>
           * @return The bytes for ignoredFields.
           */
          public com.google.protobuf.ByteString
              getIgnoredFieldsBytes() {
            java.lang.Object ref = ignoredFields_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              ignoredFields_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!getLeftDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, leftDatasetId_);
            }
            if (!getLeftFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 2, leftFormatLabel_);
            }
            if (!getRightDatasetIdBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 3, rightDatasetId_);
            }
            if (!getRightFormatLabelBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 4, rightFormatLabel_);
            }
            if (!getHostnameBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 5, hostname_);
            }
            if (!getIgnoredFieldsBytes().isEmpty()) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 6, ignoredFields_);
            }
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!getLeftDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, leftDatasetId_);
            }
            if (!getLeftFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, leftFormatLabel_);
            }
            if (!getRightDatasetIdBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, rightDatasetId_);
            }
            if (!getRightFormatLabelBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, rightFormatLabel_);
            }
            if (!getHostnameBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, hostname_);
            }
            if (!getIgnoredFieldsBytes().isEmpty()) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, ignoredFields_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions) obj;

            if (!getLeftDatasetId()
                .equals(other.getLeftDatasetId())) return false;
            if (!getLeftFormatLabel()
                .equals(other.getLeftFormatLabel())) return false;
            if (!getRightDatasetId()
                .equals(other.getRightDatasetId())) return false;
            if (!getRightFormatLabel()
                .equals(other.getRightFormatLabel())) return false;
            if (!getHostname()
                .equals(other.getHostname())) return false;
            if (!getIgnoredFields()
                .equals(other.getIgnoredFields())) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + LEFT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getLeftDatasetId().hashCode();
            hash = (37 * hash) + LEFT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getLeftFormatLabel().hashCode();
            hash = (37 * hash) + RIGHT_DATASET_ID_FIELD_NUMBER;
            hash = (53 * hash) + getRightDatasetId().hashCode();
            hash = (37 * hash) + RIGHT_FORMAT_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getRightFormatLabel().hashCode();
            hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
            hash = (53 * hash) + getHostname().hashCode();
            hash = (37 * hash) + IGNORED_FIELDS_FIELD_NUMBER;
            hash = (53 * hash) + getIgnoredFields().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * <pre>
           * Used by the DataComparator
           * NB: comparision is symmetric, left and right are just name and
           * do not refer to join strategy
           * </pre>
           *
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              leftDatasetId_ = "";

              leftFormatLabel_ = "";

              rightDatasetId_ = "";

              rightFormatLabel_ = "";

              hostname_ = "";

              ignoredFields_ = "";

              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions(this);
              result.leftDatasetId_ = leftDatasetId_;
              result.leftFormatLabel_ = leftFormatLabel_;
              result.rightDatasetId_ = rightDatasetId_;
              result.rightFormatLabel_ = rightFormatLabel_;
              result.hostname_ = hostname_;
              result.ignoredFields_ = ignoredFields_;
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.getDefaultInstance()) return this;
              if (!other.getLeftDatasetId().isEmpty()) {
                leftDatasetId_ = other.leftDatasetId_;
                onChanged();
              }
              if (!other.getLeftFormatLabel().isEmpty()) {
                leftFormatLabel_ = other.leftFormatLabel_;
                onChanged();
              }
              if (!other.getRightDatasetId().isEmpty()) {
                rightDatasetId_ = other.rightDatasetId_;
                onChanged();
              }
              if (!other.getRightFormatLabel().isEmpty()) {
                rightFormatLabel_ = other.rightFormatLabel_;
                onChanged();
              }
              if (!other.getHostname().isEmpty()) {
                hostname_ = other.hostname_;
                onChanged();
              }
              if (!other.getIgnoredFields().isEmpty()) {
                ignoredFields_ = other.ignoredFields_;
                onChanged();
              }
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }

            private java.lang.Object leftDatasetId_ = "";
            /**
             * <pre>
             * The first data set to compare
             * </pre>
             *
             * <code>string left_dataset_id = 1;</code>
             * @return The leftDatasetId.
             */
            public java.lang.String getLeftDatasetId() {
              java.lang.Object ref = leftDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                leftDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * The first data set to compare
             * </pre>
             *
             * <code>string left_dataset_id = 1;</code>
             * @return The bytes for leftDatasetId.
             */
            public com.google.protobuf.ByteString
                getLeftDatasetIdBytes() {
              java.lang.Object ref = leftDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                leftDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * The first data set to compare
             * </pre>
             *
             * <code>string left_dataset_id = 1;</code>
             * @param value The leftDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setLeftDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              leftDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The first data set to compare
             * </pre>
             *
             * <code>string left_dataset_id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearLeftDatasetId() {
              
              leftDatasetId_ = getDefaultInstance().getLeftDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The first data set to compare
             * </pre>
             *
             * <code>string left_dataset_id = 1;</code>
             * @param value The bytes for leftDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setLeftDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              leftDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object leftFormatLabel_ = "";
            /**
             * <pre>
             * The specific format of the first data set
             * </pre>
             *
             * <code>string left_format_label = 2;</code>
             * @return The leftFormatLabel.
             */
            public java.lang.String getLeftFormatLabel() {
              java.lang.Object ref = leftFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                leftFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * The specific format of the first data set
             * </pre>
             *
             * <code>string left_format_label = 2;</code>
             * @return The bytes for leftFormatLabel.
             */
            public com.google.protobuf.ByteString
                getLeftFormatLabelBytes() {
              java.lang.Object ref = leftFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                leftFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * The specific format of the first data set
             * </pre>
             *
             * <code>string left_format_label = 2;</code>
             * @param value The leftFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setLeftFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              leftFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The specific format of the first data set
             * </pre>
             *
             * <code>string left_format_label = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearLeftFormatLabel() {
              
              leftFormatLabel_ = getDefaultInstance().getLeftFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The specific format of the first data set
             * </pre>
             *
             * <code>string left_format_label = 2;</code>
             * @param value The bytes for leftFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setLeftFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              leftFormatLabel_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object rightDatasetId_ = "";
            /**
             * <pre>
             * The second data set to compare
             * </pre>
             *
             * <code>string right_dataset_id = 3;</code>
             * @return The rightDatasetId.
             */
            public java.lang.String getRightDatasetId() {
              java.lang.Object ref = rightDatasetId_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                rightDatasetId_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * The second data set to compare
             * </pre>
             *
             * <code>string right_dataset_id = 3;</code>
             * @return The bytes for rightDatasetId.
             */
            public com.google.protobuf.ByteString
                getRightDatasetIdBytes() {
              java.lang.Object ref = rightDatasetId_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                rightDatasetId_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * The second data set to compare
             * </pre>
             *
             * <code>string right_dataset_id = 3;</code>
             * @param value The rightDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setRightDatasetId(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              rightDatasetId_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The second data set to compare
             * </pre>
             *
             * <code>string right_dataset_id = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearRightDatasetId() {
              
              rightDatasetId_ = getDefaultInstance().getRightDatasetId();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The second data set to compare
             * </pre>
             *
             * <code>string right_dataset_id = 3;</code>
             * @param value The bytes for rightDatasetId to set.
             * @return This builder for chaining.
             */
            public Builder setRightDatasetIdBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              rightDatasetId_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object rightFormatLabel_ = "";
            /**
             * <pre>
             * The specific format of the second data set
             * </pre>
             *
             * <code>string right_format_label = 4;</code>
             * @return The rightFormatLabel.
             */
            public java.lang.String getRightFormatLabel() {
              java.lang.Object ref = rightFormatLabel_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                rightFormatLabel_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * The specific format of the second data set
             * </pre>
             *
             * <code>string right_format_label = 4;</code>
             * @return The bytes for rightFormatLabel.
             */
            public com.google.protobuf.ByteString
                getRightFormatLabelBytes() {
              java.lang.Object ref = rightFormatLabel_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                rightFormatLabel_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * The specific format of the second data set
             * </pre>
             *
             * <code>string right_format_label = 4;</code>
             * @param value The rightFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setRightFormatLabel(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              rightFormatLabel_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The specific format of the second data set
             * </pre>
             *
             * <code>string right_format_label = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearRightFormatLabel() {
              
              rightFormatLabel_ = getDefaultInstance().getRightFormatLabel();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * The specific format of the second data set
             * </pre>
             *
             * <code>string right_format_label = 4;</code>
             * @param value The bytes for rightFormatLabel to set.
             * @return This builder for chaining.
             */
            public Builder setRightFormatLabelBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              rightFormatLabel_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object hostname_ = "";
            /**
             * <pre>
             * If set, filtering left and right dataset to a specific hostname.
             * </pre>
             *
             * <code>string hostname = 5;</code>
             * @return The hostname.
             */
            public java.lang.String getHostname() {
              java.lang.Object ref = hostname_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                hostname_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * If set, filtering left and right dataset to a specific hostname.
             * </pre>
             *
             * <code>string hostname = 5;</code>
             * @return The bytes for hostname.
             */
            public com.google.protobuf.ByteString
                getHostnameBytes() {
              java.lang.Object ref = hostname_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                hostname_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * If set, filtering left and right dataset to a specific hostname.
             * </pre>
             *
             * <code>string hostname = 5;</code>
             * @param value The hostname to set.
             * @return This builder for chaining.
             */
            public Builder setHostname(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              hostname_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * If set, filtering left and right dataset to a specific hostname.
             * </pre>
             *
             * <code>string hostname = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearHostname() {
              
              hostname_ = getDefaultInstance().getHostname();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * If set, filtering left and right dataset to a specific hostname.
             * </pre>
             *
             * <code>string hostname = 5;</code>
             * @param value The bytes for hostname to set.
             * @return This builder for chaining.
             */
            public Builder setHostnameBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              hostname_ = value;
              onChanged();
              return this;
            }

            private java.lang.Object ignoredFields_ = "";
            /**
             * <pre>
             * If set, fields ignored in the comparison separated by ','
             * </pre>
             *
             * <code>string ignored_fields = 6;</code>
             * @return The ignoredFields.
             */
            public java.lang.String getIgnoredFields() {
              java.lang.Object ref = ignoredFields_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                ignoredFields_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * If set, fields ignored in the comparison separated by ','
             * </pre>
             *
             * <code>string ignored_fields = 6;</code>
             * @return The bytes for ignoredFields.
             */
            public com.google.protobuf.ByteString
                getIgnoredFieldsBytes() {
              java.lang.Object ref = ignoredFields_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                ignoredFields_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * If set, fields ignored in the comparison separated by ','
             * </pre>
             *
             * <code>string ignored_fields = 6;</code>
             * @param value The ignoredFields to set.
             * @return This builder for chaining.
             */
            public Builder setIgnoredFields(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  
              ignoredFields_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * If set, fields ignored in the comparison separated by ','
             * </pre>
             *
             * <code>string ignored_fields = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearIgnoredFields() {
              
              ignoredFields_ = getDefaultInstance().getIgnoredFields();
              onChanged();
              return this;
            }
            /**
             * <pre>
             * If set, fields ignored in the comparison separated by ','
             * </pre>
             *
             * <code>string ignored_fields = 6;</code>
             * @param value The bytes for ignoredFields to set.
             * @return This builder for chaining.
             */
            public Builder setIgnoredFieldsBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
              
              ignoredFields_ = value;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<ComparatorOptions>
              PARSER = new com.google.protobuf.AbstractParser<ComparatorOptions>() {
            @java.lang.Override
            public ComparatorOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new ComparatorOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<ComparatorOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<ComparatorOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public interface ExternalOptionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions)
            com.google.protobuf.MessageOrBuilder {
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions}
         */
        public  static final class ExternalOptions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions)
            ExternalOptionsOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use ExternalOptions.newBuilder() to construct.
          private ExternalOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private ExternalOptions() {
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new ExternalOptions();
          }

          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private ExternalOptions(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!parseUnknownField(
                        input, unknownFields, extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e).setUnfinishedMessage(this);
            } finally {
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder.class);
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            unknownFields.writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions)) {
              return super.equals(obj);
            }
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions) obj;

            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
          }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions)
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder.class);
            }

            // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessageV3
                      .alwaysUseFieldBuilders) {
              }
            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_descriptor;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions getDefaultInstanceForType() {
              return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.getDefaultInstance();
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions build() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions buildPartial() {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions(this);
              onBuilt();
              return result;
            }

            @java.lang.Override
            public Builder clone() {
              return super.clone();
            }
            @java.lang.Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.setField(field, value);
            }
            @java.lang.Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
              return super.clearField(field);
            }
            @java.lang.Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
              return super.clearOneof(oneof);
            }
            @java.lang.Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, java.lang.Object value) {
              return super.setRepeatedField(field, index, value);
            }
            @java.lang.Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                java.lang.Object value) {
              return super.addRepeatedField(field, value);
            }
            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions) {
                return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions other) {
              if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.getDefaultInstance()) return this;
              this.mergeUnknownFields(other.unknownFields);
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions)
          }

          // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions)
          private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions();
          }

          public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<ExternalOptions>
              PARSER = new com.google.protobuf.AbstractParser<ExternalOptions>() {
            @java.lang.Override
            public ExternalOptions parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new ExternalOptions(input, extensionRegistry);
            }
          };

          public static com.google.protobuf.Parser<ExternalOptions> parser() {
            return PARSER;
          }

          @java.lang.Override
          public com.google.protobuf.Parser<ExternalOptions> getParserForType() {
            return PARSER;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        public static final int DATALOADER_FIELD_NUMBER = 1;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader_;
        /**
         * <pre>
         * oneof is not currently supporte by protonet
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
         * @return Whether the dataloader field is set.
         */
        public boolean hasDataloader() {
          return dataloader_ != null;
        }
        /**
         * <pre>
         * oneof is not currently supporte by protonet
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
         * @return The dataloader.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions getDataloader() {
          return dataloader_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.getDefaultInstance() : dataloader_;
        }
        /**
         * <pre>
         * oneof is not currently supporte by protonet
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder getDataloaderOrBuilder() {
          return getDataloader();
        }

        public static final int KAFKA2HDFS_FIELD_NUMBER = 2;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2Hdfs_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
         * @return Whether the kafka2hdfs field is set.
         */
        public boolean hasKafka2Hdfs() {
          return kafka2Hdfs_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
         * @return The kafka2hdfs.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions getKafka2Hdfs() {
          return kafka2Hdfs_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.getDefaultInstance() : kafka2Hdfs_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder getKafka2HdfsOrBuilder() {
          return getKafka2Hdfs();
        }

        public static final int SYNC_FIELD_NUMBER = 3;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions sync_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
         * @return Whether the sync field is set.
         */
        public boolean hasSync() {
          return sync_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
         * @return The sync.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions getSync() {
          return sync_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.getDefaultInstance() : sync_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder getSyncOrBuilder() {
          return getSync();
        }

        public static final int EXTERNAL_FIELD_NUMBER = 4;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions external_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
         * @return Whether the external field is set.
         */
        public boolean hasExternal() {
          return external_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
         * @return The external.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions getExternal() {
          return external_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.getDefaultInstance() : external_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder getExternalOrBuilder() {
          return getExternal();
        }

        public static final int BACKUP_FIELD_NUMBER = 5;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions backup_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
         * @return Whether the backup field is set.
         */
        public boolean hasBackup() {
          return backup_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
         * @return The backup.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions getBackup() {
          return backup_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.getDefaultInstance() : backup_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder getBackupOrBuilder() {
          return getBackup();
        }

        public static final int TRANSCODING_FIELD_NUMBER = 6;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
         * @return Whether the transcoding field is set.
         */
        public boolean hasTranscoding() {
          return transcoding_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
         * @return The transcoding.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions getTranscoding() {
          return transcoding_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.getDefaultInstance() : transcoding_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder getTranscodingOrBuilder() {
          return getTranscoding();
        }

        public static final int KACOHA_FIELD_NUMBER = 7;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
         * @return Whether the kacoha field is set.
         */
        public boolean hasKacoha() {
          return kacoha_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
         * @return The kacoha.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions getKacoha() {
          return kacoha_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.getDefaultInstance() : kacoha_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder getKacohaOrBuilder() {
          return getKacoha();
        }

        public static final int DEDUPLICATE_FIELD_NUMBER = 8;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
         * @return Whether the deduplicate field is set.
         */
        public boolean hasDeduplicate() {
          return deduplicate_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
         * @return The deduplicate.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions getDeduplicate() {
          return deduplicate_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.getDefaultInstance() : deduplicate_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder getDeduplicateOrBuilder() {
          return getDeduplicate();
        }

        public static final int SAMPLER_FIELD_NUMBER = 9;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler_;
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
         * @return Whether the sampler field is set.
         */
        public boolean hasSampler() {
          return sampler_ != null;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
         * @return The sampler.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions getSampler() {
          return sampler_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.getDefaultInstance() : sampler_;
        }
        /**
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder getSamplerOrBuilder() {
          return getSampler();
        }

        public static final int COMPARATOR_FIELD_NUMBER = 10;
        private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator_;
        /**
         * <pre>
         * Add here any new hdfs producer
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
         * @return Whether the comparator field is set.
         */
        public boolean hasComparator() {
          return comparator_ != null;
        }
        /**
         * <pre>
         * Add here any new hdfs producer
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
         * @return The comparator.
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions getComparator() {
          return comparator_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.getDefaultInstance() : comparator_;
        }
        /**
         * <pre>
         * Add here any new hdfs producer
         * </pre>
         *
         * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder getComparatorOrBuilder() {
          return getComparator();
        }

        public static final int TO_FIELD_NUMBER = 250;
        private java.util.List<com.acme.glup.MetadataProto.Location> to_;
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        public java.util.List<com.acme.glup.MetadataProto.Location> getToList() {
          return to_;
        }
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        public java.util.List<? extends com.acme.glup.MetadataProto.LocationOrBuilder> 
            getToOrBuilderList() {
          return to_;
        }
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        public int getToCount() {
          return to_.size();
        }
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        public com.acme.glup.MetadataProto.Location getTo(int index) {
          return to_.get(index);
        }
        /**
         * <pre>
         * defines where it will run and push data
         * </pre>
         *
         * <code>repeated .Acme.Glup.Location to = 250;</code>
         */
        public com.acme.glup.MetadataProto.LocationOrBuilder getToOrBuilder(
            int index) {
          return to_.get(index);
        }

        public static final int NAMESPACE_FIELD_NUMBER = 251;
        private volatile java.lang.Object namespace_;
        /**
         * <code>string namespace = 251;</code>
         * @return The namespace.
         */
        public java.lang.String getNamespace() {
          java.lang.Object ref = namespace_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            namespace_ = s;
            return s;
          }
        }
        /**
         * <code>string namespace = 251;</code>
         * @return The bytes for namespace.
         */
        public com.google.protobuf.ByteString
            getNamespaceBytes() {
          java.lang.Object ref = namespace_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            namespace_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int START_DATE_FIELD_NUMBER = 253;
        private volatile java.lang.Object startDate_;
        /**
         * <pre>
         * define beginning date inclusive
         * </pre>
         *
         * <code>string start_date = 253;</code>
         * @return The startDate.
         */
        public java.lang.String getStartDate() {
          java.lang.Object ref = startDate_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            startDate_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * define beginning date inclusive
         * </pre>
         *
         * <code>string start_date = 253;</code>
         * @return The bytes for startDate.
         */
        public com.google.protobuf.ByteString
            getStartDateBytes() {
          java.lang.Object ref = startDate_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            startDate_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int STOP_DATE_FIELD_NUMBER = 254;
        private volatile java.lang.Object stopDate_;
        /**
         * <pre>
         * define stop date exclusive
         * </pre>
         *
         * <code>string stop_date = 254;</code>
         * @return The stopDate.
         */
        public java.lang.String getStopDate() {
          java.lang.Object ref = stopDate_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            stopDate_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * define stop date exclusive
         * </pre>
         *
         * <code>string stop_date = 254;</code>
         * @return The bytes for stopDate.
         */
        public com.google.protobuf.ByteString
            getStopDateBytes() {
          java.lang.Object ref = stopDate_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            stopDate_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int IGNORE_CN_FIELD_NUMBER = 255;
        private boolean ignoreCn_;
        /**
         * <pre>
         * TODO : remove this property when RIVERS-3723 (remove CN platform) is over
         * </pre>
         *
         * <code>bool ignore_cn = 255;</code>
         * @return The ignoreCn.
         */
        public boolean getIgnoreCn() {
          return ignoreCn_;
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (dataloader_ != null) {
            output.writeMessage(1, getDataloader());
          }
          if (kafka2Hdfs_ != null) {
            output.writeMessage(2, getKafka2Hdfs());
          }
          if (sync_ != null) {
            output.writeMessage(3, getSync());
          }
          if (external_ != null) {
            output.writeMessage(4, getExternal());
          }
          if (backup_ != null) {
            output.writeMessage(5, getBackup());
          }
          if (transcoding_ != null) {
            output.writeMessage(6, getTranscoding());
          }
          if (kacoha_ != null) {
            output.writeMessage(7, getKacoha());
          }
          if (deduplicate_ != null) {
            output.writeMessage(8, getDeduplicate());
          }
          if (sampler_ != null) {
            output.writeMessage(9, getSampler());
          }
          if (comparator_ != null) {
            output.writeMessage(10, getComparator());
          }
          for (int i = 0; i < to_.size(); i++) {
            output.writeMessage(250, to_.get(i));
          }
          if (!getNamespaceBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 251, namespace_);
          }
          if (!getStartDateBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 253, startDate_);
          }
          if (!getStopDateBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 254, stopDate_);
          }
          if (ignoreCn_ != false) {
            output.writeBool(255, ignoreCn_);
          }
          unknownFields.writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          if (dataloader_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, getDataloader());
          }
          if (kafka2Hdfs_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(2, getKafka2Hdfs());
          }
          if (sync_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(3, getSync());
          }
          if (external_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, getExternal());
          }
          if (backup_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(5, getBackup());
          }
          if (transcoding_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(6, getTranscoding());
          }
          if (kacoha_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(7, getKacoha());
          }
          if (deduplicate_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(8, getDeduplicate());
          }
          if (sampler_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(9, getSampler());
          }
          if (comparator_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(10, getComparator());
          }
          for (int i = 0; i < to_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(250, to_.get(i));
          }
          if (!getNamespaceBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(251, namespace_);
          }
          if (!getStartDateBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(253, startDate_);
          }
          if (!getStopDateBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(254, stopDate_);
          }
          if (ignoreCn_ != false) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(255, ignoreCn_);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator)) {
            return super.equals(obj);
          }
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator) obj;

          if (hasDataloader() != other.hasDataloader()) return false;
          if (hasDataloader()) {
            if (!getDataloader()
                .equals(other.getDataloader())) return false;
          }
          if (hasKafka2Hdfs() != other.hasKafka2Hdfs()) return false;
          if (hasKafka2Hdfs()) {
            if (!getKafka2Hdfs()
                .equals(other.getKafka2Hdfs())) return false;
          }
          if (hasSync() != other.hasSync()) return false;
          if (hasSync()) {
            if (!getSync()
                .equals(other.getSync())) return false;
          }
          if (hasExternal() != other.hasExternal()) return false;
          if (hasExternal()) {
            if (!getExternal()
                .equals(other.getExternal())) return false;
          }
          if (hasBackup() != other.hasBackup()) return false;
          if (hasBackup()) {
            if (!getBackup()
                .equals(other.getBackup())) return false;
          }
          if (hasTranscoding() != other.hasTranscoding()) return false;
          if (hasTranscoding()) {
            if (!getTranscoding()
                .equals(other.getTranscoding())) return false;
          }
          if (hasKacoha() != other.hasKacoha()) return false;
          if (hasKacoha()) {
            if (!getKacoha()
                .equals(other.getKacoha())) return false;
          }
          if (hasDeduplicate() != other.hasDeduplicate()) return false;
          if (hasDeduplicate()) {
            if (!getDeduplicate()
                .equals(other.getDeduplicate())) return false;
          }
          if (hasSampler() != other.hasSampler()) return false;
          if (hasSampler()) {
            if (!getSampler()
                .equals(other.getSampler())) return false;
          }
          if (hasComparator() != other.hasComparator()) return false;
          if (hasComparator()) {
            if (!getComparator()
                .equals(other.getComparator())) return false;
          }
          if (!getToList()
              .equals(other.getToList())) return false;
          if (!getNamespace()
              .equals(other.getNamespace())) return false;
          if (!getStartDate()
              .equals(other.getStartDate())) return false;
          if (!getStopDate()
              .equals(other.getStopDate())) return false;
          if (getIgnoreCn()
              != other.getIgnoreCn()) return false;
          if (!unknownFields.equals(other.unknownFields)) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (hasDataloader()) {
            hash = (37 * hash) + DATALOADER_FIELD_NUMBER;
            hash = (53 * hash) + getDataloader().hashCode();
          }
          if (hasKafka2Hdfs()) {
            hash = (37 * hash) + KAFKA2HDFS_FIELD_NUMBER;
            hash = (53 * hash) + getKafka2Hdfs().hashCode();
          }
          if (hasSync()) {
            hash = (37 * hash) + SYNC_FIELD_NUMBER;
            hash = (53 * hash) + getSync().hashCode();
          }
          if (hasExternal()) {
            hash = (37 * hash) + EXTERNAL_FIELD_NUMBER;
            hash = (53 * hash) + getExternal().hashCode();
          }
          if (hasBackup()) {
            hash = (37 * hash) + BACKUP_FIELD_NUMBER;
            hash = (53 * hash) + getBackup().hashCode();
          }
          if (hasTranscoding()) {
            hash = (37 * hash) + TRANSCODING_FIELD_NUMBER;
            hash = (53 * hash) + getTranscoding().hashCode();
          }
          if (hasKacoha()) {
            hash = (37 * hash) + KACOHA_FIELD_NUMBER;
            hash = (53 * hash) + getKacoha().hashCode();
          }
          if (hasDeduplicate()) {
            hash = (37 * hash) + DEDUPLICATE_FIELD_NUMBER;
            hash = (53 * hash) + getDeduplicate().hashCode();
          }
          if (hasSampler()) {
            hash = (37 * hash) + SAMPLER_FIELD_NUMBER;
            hash = (53 * hash) + getSampler().hashCode();
          }
          if (hasComparator()) {
            hash = (37 * hash) + COMPARATOR_FIELD_NUMBER;
            hash = (53 * hash) + getComparator().hashCode();
          }
          if (getToCount() > 0) {
            hash = (37 * hash) + TO_FIELD_NUMBER;
            hash = (53 * hash) + getToList().hashCode();
          }
          hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
          hash = (53 * hash) + getNamespace().hashCode();
          hash = (37 * hash) + START_DATE_FIELD_NUMBER;
          hash = (53 * hash) + getStartDate().hashCode();
          hash = (37 * hash) + STOP_DATE_FIELD_NUMBER;
          hash = (53 * hash) + getStopDate().hashCode();
          hash = (37 * hash) + IGNORE_CN_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getIgnoreCn());
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions.Generator}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions.Generator)
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder.class);
          }

          // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
              getToFieldBuilder();
            }
          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            if (dataloaderBuilder_ == null) {
              dataloader_ = null;
            } else {
              dataloader_ = null;
              dataloaderBuilder_ = null;
            }
            if (kafka2HdfsBuilder_ == null) {
              kafka2Hdfs_ = null;
            } else {
              kafka2Hdfs_ = null;
              kafka2HdfsBuilder_ = null;
            }
            if (syncBuilder_ == null) {
              sync_ = null;
            } else {
              sync_ = null;
              syncBuilder_ = null;
            }
            if (externalBuilder_ == null) {
              external_ = null;
            } else {
              external_ = null;
              externalBuilder_ = null;
            }
            if (backupBuilder_ == null) {
              backup_ = null;
            } else {
              backup_ = null;
              backupBuilder_ = null;
            }
            if (transcodingBuilder_ == null) {
              transcoding_ = null;
            } else {
              transcoding_ = null;
              transcodingBuilder_ = null;
            }
            if (kacohaBuilder_ == null) {
              kacoha_ = null;
            } else {
              kacoha_ = null;
              kacohaBuilder_ = null;
            }
            if (deduplicateBuilder_ == null) {
              deduplicate_ = null;
            } else {
              deduplicate_ = null;
              deduplicateBuilder_ = null;
            }
            if (samplerBuilder_ == null) {
              sampler_ = null;
            } else {
              sampler_ = null;
              samplerBuilder_ = null;
            }
            if (comparatorBuilder_ == null) {
              comparator_ = null;
            } else {
              comparator_ = null;
              comparatorBuilder_ = null;
            }
            if (toBuilder_ == null) {
              to_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              toBuilder_.clear();
            }
            namespace_ = "";

            startDate_ = "";

            stopDate_ = "";

            ignoreCn_ = false;

            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator getDefaultInstanceForType() {
            return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.getDefaultInstance();
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator build() {
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator buildPartial() {
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator(this);
            int from_bitField0_ = bitField0_;
            if (dataloaderBuilder_ == null) {
              result.dataloader_ = dataloader_;
            } else {
              result.dataloader_ = dataloaderBuilder_.build();
            }
            if (kafka2HdfsBuilder_ == null) {
              result.kafka2Hdfs_ = kafka2Hdfs_;
            } else {
              result.kafka2Hdfs_ = kafka2HdfsBuilder_.build();
            }
            if (syncBuilder_ == null) {
              result.sync_ = sync_;
            } else {
              result.sync_ = syncBuilder_.build();
            }
            if (externalBuilder_ == null) {
              result.external_ = external_;
            } else {
              result.external_ = externalBuilder_.build();
            }
            if (backupBuilder_ == null) {
              result.backup_ = backup_;
            } else {
              result.backup_ = backupBuilder_.build();
            }
            if (transcodingBuilder_ == null) {
              result.transcoding_ = transcoding_;
            } else {
              result.transcoding_ = transcodingBuilder_.build();
            }
            if (kacohaBuilder_ == null) {
              result.kacoha_ = kacoha_;
            } else {
              result.kacoha_ = kacohaBuilder_.build();
            }
            if (deduplicateBuilder_ == null) {
              result.deduplicate_ = deduplicate_;
            } else {
              result.deduplicate_ = deduplicateBuilder_.build();
            }
            if (samplerBuilder_ == null) {
              result.sampler_ = sampler_;
            } else {
              result.sampler_ = samplerBuilder_.build();
            }
            if (comparatorBuilder_ == null) {
              result.comparator_ = comparator_;
            } else {
              result.comparator_ = comparatorBuilder_.build();
            }
            if (toBuilder_ == null) {
              if (((bitField0_ & 0x00000001) != 0)) {
                to_ = java.util.Collections.unmodifiableList(to_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.to_ = to_;
            } else {
              result.to_ = toBuilder_.build();
            }
            result.namespace_ = namespace_;
            result.startDate_ = startDate_;
            result.stopDate_ = stopDate_;
            result.ignoreCn_ = ignoreCn_;
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder clone() {
            return super.clone();
          }
          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.setField(field, value);
          }
          @java.lang.Override
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }
          @java.lang.Override
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }
          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }
          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }
          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator) {
              return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator other) {
            if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.getDefaultInstance()) return this;
            if (other.hasDataloader()) {
              mergeDataloader(other.getDataloader());
            }
            if (other.hasKafka2Hdfs()) {
              mergeKafka2Hdfs(other.getKafka2Hdfs());
            }
            if (other.hasSync()) {
              mergeSync(other.getSync());
            }
            if (other.hasExternal()) {
              mergeExternal(other.getExternal());
            }
            if (other.hasBackup()) {
              mergeBackup(other.getBackup());
            }
            if (other.hasTranscoding()) {
              mergeTranscoding(other.getTranscoding());
            }
            if (other.hasKacoha()) {
              mergeKacoha(other.getKacoha());
            }
            if (other.hasDeduplicate()) {
              mergeDeduplicate(other.getDeduplicate());
            }
            if (other.hasSampler()) {
              mergeSampler(other.getSampler());
            }
            if (other.hasComparator()) {
              mergeComparator(other.getComparator());
            }
            if (toBuilder_ == null) {
              if (!other.to_.isEmpty()) {
                if (to_.isEmpty()) {
                  to_ = other.to_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensureToIsMutable();
                  to_.addAll(other.to_);
                }
                onChanged();
              }
            } else {
              if (!other.to_.isEmpty()) {
                if (toBuilder_.isEmpty()) {
                  toBuilder_.dispose();
                  toBuilder_ = null;
                  to_ = other.to_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  toBuilder_ = 
                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                       getToFieldBuilder() : null;
                } else {
                  toBuilder_.addAllMessages(other.to_);
                }
              }
            }
            if (!other.getNamespace().isEmpty()) {
              namespace_ = other.namespace_;
              onChanged();
            }
            if (!other.getStartDate().isEmpty()) {
              startDate_ = other.startDate_;
              onChanged();
            }
            if (!other.getStopDate().isEmpty()) {
              stopDate_ = other.stopDate_;
              onChanged();
            }
            if (other.getIgnoreCn() != false) {
              setIgnoreCn(other.getIgnoreCn());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder> dataloaderBuilder_;
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           * @return Whether the dataloader field is set.
           */
          public boolean hasDataloader() {
            return dataloaderBuilder_ != null || dataloader_ != null;
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           * @return The dataloader.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions getDataloader() {
            if (dataloaderBuilder_ == null) {
              return dataloader_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.getDefaultInstance() : dataloader_;
            } else {
              return dataloaderBuilder_.getMessage();
            }
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          public Builder setDataloader(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions value) {
            if (dataloaderBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              dataloader_ = value;
              onChanged();
            } else {
              dataloaderBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          public Builder setDataloader(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder builderForValue) {
            if (dataloaderBuilder_ == null) {
              dataloader_ = builderForValue.build();
              onChanged();
            } else {
              dataloaderBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          public Builder mergeDataloader(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions value) {
            if (dataloaderBuilder_ == null) {
              if (dataloader_ != null) {
                dataloader_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.newBuilder(dataloader_).mergeFrom(value).buildPartial();
              } else {
                dataloader_ = value;
              }
              onChanged();
            } else {
              dataloaderBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          public Builder clearDataloader() {
            if (dataloaderBuilder_ == null) {
              dataloader_ = null;
              onChanged();
            } else {
              dataloader_ = null;
              dataloaderBuilder_ = null;
            }

            return this;
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder getDataloaderBuilder() {
            
            onChanged();
            return getDataloaderFieldBuilder().getBuilder();
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder getDataloaderOrBuilder() {
            if (dataloaderBuilder_ != null) {
              return dataloaderBuilder_.getMessageOrBuilder();
            } else {
              return dataloader_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.getDefaultInstance() : dataloader_;
            }
          }
          /**
           * <pre>
           * oneof is not currently supporte by protonet
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DataloaderOptions dataloader = 1;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder> 
              getDataloaderFieldBuilder() {
            if (dataloaderBuilder_ == null) {
              dataloaderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DataloaderOptionsOrBuilder>(
                      getDataloader(),
                      getParentForChildren(),
                      isClean());
              dataloader_ = null;
            }
            return dataloaderBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2Hdfs_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder> kafka2HdfsBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           * @return Whether the kafka2hdfs field is set.
           */
          public boolean hasKafka2Hdfs() {
            return kafka2HdfsBuilder_ != null || kafka2Hdfs_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           * @return The kafka2hdfs.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions getKafka2Hdfs() {
            if (kafka2HdfsBuilder_ == null) {
              return kafka2Hdfs_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.getDefaultInstance() : kafka2Hdfs_;
            } else {
              return kafka2HdfsBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          public Builder setKafka2Hdfs(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions value) {
            if (kafka2HdfsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              kafka2Hdfs_ = value;
              onChanged();
            } else {
              kafka2HdfsBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          public Builder setKafka2Hdfs(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder builderForValue) {
            if (kafka2HdfsBuilder_ == null) {
              kafka2Hdfs_ = builderForValue.build();
              onChanged();
            } else {
              kafka2HdfsBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          public Builder mergeKafka2Hdfs(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions value) {
            if (kafka2HdfsBuilder_ == null) {
              if (kafka2Hdfs_ != null) {
                kafka2Hdfs_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.newBuilder(kafka2Hdfs_).mergeFrom(value).buildPartial();
              } else {
                kafka2Hdfs_ = value;
              }
              onChanged();
            } else {
              kafka2HdfsBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          public Builder clearKafka2Hdfs() {
            if (kafka2HdfsBuilder_ == null) {
              kafka2Hdfs_ = null;
              onChanged();
            } else {
              kafka2Hdfs_ = null;
              kafka2HdfsBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder getKafka2HdfsBuilder() {
            
            onChanged();
            return getKafka2HdfsFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder getKafka2HdfsOrBuilder() {
            if (kafka2HdfsBuilder_ != null) {
              return kafka2HdfsBuilder_.getMessageOrBuilder();
            } else {
              return kafka2Hdfs_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.getDefaultInstance() : kafka2Hdfs_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions kafka2hdfs = 2;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder> 
              getKafka2HdfsFieldBuilder() {
            if (kafka2HdfsBuilder_ == null) {
              kafka2HdfsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Kafka2HdfsOptionsOrBuilder>(
                      getKafka2Hdfs(),
                      getParentForChildren(),
                      isClean());
              kafka2Hdfs_ = null;
            }
            return kafka2HdfsBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions sync_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder> syncBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           * @return Whether the sync field is set.
           */
          public boolean hasSync() {
            return syncBuilder_ != null || sync_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           * @return The sync.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions getSync() {
            if (syncBuilder_ == null) {
              return sync_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.getDefaultInstance() : sync_;
            } else {
              return syncBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          public Builder setSync(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions value) {
            if (syncBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              sync_ = value;
              onChanged();
            } else {
              syncBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          public Builder setSync(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder builderForValue) {
            if (syncBuilder_ == null) {
              sync_ = builderForValue.build();
              onChanged();
            } else {
              syncBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          public Builder mergeSync(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions value) {
            if (syncBuilder_ == null) {
              if (sync_ != null) {
                sync_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.newBuilder(sync_).mergeFrom(value).buildPartial();
              } else {
                sync_ = value;
              }
              onChanged();
            } else {
              syncBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          public Builder clearSync() {
            if (syncBuilder_ == null) {
              sync_ = null;
              onChanged();
            } else {
              sync_ = null;
              syncBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder getSyncBuilder() {
            
            onChanged();
            return getSyncFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder getSyncOrBuilder() {
            if (syncBuilder_ != null) {
              return syncBuilder_.getMessageOrBuilder();
            } else {
              return sync_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.getDefaultInstance() : sync_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SyncOptions sync = 3;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder> 
              getSyncFieldBuilder() {
            if (syncBuilder_ == null) {
              syncBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SyncOptionsOrBuilder>(
                      getSync(),
                      getParentForChildren(),
                      isClean());
              sync_ = null;
            }
            return syncBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions external_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder> externalBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           * @return Whether the external field is set.
           */
          public boolean hasExternal() {
            return externalBuilder_ != null || external_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           * @return The external.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions getExternal() {
            if (externalBuilder_ == null) {
              return external_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.getDefaultInstance() : external_;
            } else {
              return externalBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          public Builder setExternal(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions value) {
            if (externalBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              external_ = value;
              onChanged();
            } else {
              externalBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          public Builder setExternal(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder builderForValue) {
            if (externalBuilder_ == null) {
              external_ = builderForValue.build();
              onChanged();
            } else {
              externalBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          public Builder mergeExternal(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions value) {
            if (externalBuilder_ == null) {
              if (external_ != null) {
                external_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.newBuilder(external_).mergeFrom(value).buildPartial();
              } else {
                external_ = value;
              }
              onChanged();
            } else {
              externalBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          public Builder clearExternal() {
            if (externalBuilder_ == null) {
              external_ = null;
              onChanged();
            } else {
              external_ = null;
              externalBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder getExternalBuilder() {
            
            onChanged();
            return getExternalFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder getExternalOrBuilder() {
            if (externalBuilder_ != null) {
              return externalBuilder_.getMessageOrBuilder();
            } else {
              return external_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.getDefaultInstance() : external_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ExternalOptions external = 4;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder> 
              getExternalFieldBuilder() {
            if (externalBuilder_ == null) {
              externalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ExternalOptionsOrBuilder>(
                      getExternal(),
                      getParentForChildren(),
                      isClean());
              external_ = null;
            }
            return externalBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions backup_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder> backupBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           * @return Whether the backup field is set.
           */
          public boolean hasBackup() {
            return backupBuilder_ != null || backup_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           * @return The backup.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions getBackup() {
            if (backupBuilder_ == null) {
              return backup_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.getDefaultInstance() : backup_;
            } else {
              return backupBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          public Builder setBackup(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions value) {
            if (backupBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              backup_ = value;
              onChanged();
            } else {
              backupBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          public Builder setBackup(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder builderForValue) {
            if (backupBuilder_ == null) {
              backup_ = builderForValue.build();
              onChanged();
            } else {
              backupBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          public Builder mergeBackup(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions value) {
            if (backupBuilder_ == null) {
              if (backup_ != null) {
                backup_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.newBuilder(backup_).mergeFrom(value).buildPartial();
              } else {
                backup_ = value;
              }
              onChanged();
            } else {
              backupBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          public Builder clearBackup() {
            if (backupBuilder_ == null) {
              backup_ = null;
              onChanged();
            } else {
              backup_ = null;
              backupBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder getBackupBuilder() {
            
            onChanged();
            return getBackupFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder getBackupOrBuilder() {
            if (backupBuilder_ != null) {
              return backupBuilder_.getMessageOrBuilder();
            } else {
              return backup_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.getDefaultInstance() : backup_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.BackupOptions backup = 5;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder> 
              getBackupFieldBuilder() {
            if (backupBuilder_ == null) {
              backupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.BackupOptionsOrBuilder>(
                      getBackup(),
                      getParentForChildren(),
                      isClean());
              backup_ = null;
            }
            return backupBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder> transcodingBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           * @return Whether the transcoding field is set.
           */
          public boolean hasTranscoding() {
            return transcodingBuilder_ != null || transcoding_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           * @return The transcoding.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions getTranscoding() {
            if (transcodingBuilder_ == null) {
              return transcoding_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.getDefaultInstance() : transcoding_;
            } else {
              return transcodingBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          public Builder setTranscoding(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions value) {
            if (transcodingBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              transcoding_ = value;
              onChanged();
            } else {
              transcodingBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          public Builder setTranscoding(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder builderForValue) {
            if (transcodingBuilder_ == null) {
              transcoding_ = builderForValue.build();
              onChanged();
            } else {
              transcodingBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          public Builder mergeTranscoding(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions value) {
            if (transcodingBuilder_ == null) {
              if (transcoding_ != null) {
                transcoding_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.newBuilder(transcoding_).mergeFrom(value).buildPartial();
              } else {
                transcoding_ = value;
              }
              onChanged();
            } else {
              transcodingBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          public Builder clearTranscoding() {
            if (transcodingBuilder_ == null) {
              transcoding_ = null;
              onChanged();
            } else {
              transcoding_ = null;
              transcodingBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder getTranscodingBuilder() {
            
            onChanged();
            return getTranscodingFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder getTranscodingOrBuilder() {
            if (transcodingBuilder_ != null) {
              return transcodingBuilder_.getMessageOrBuilder();
            } else {
              return transcoding_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.getDefaultInstance() : transcoding_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.TranscodingOptions transcoding = 6;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder> 
              getTranscodingFieldBuilder() {
            if (transcodingBuilder_ == null) {
              transcodingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.TranscodingOptionsOrBuilder>(
                      getTranscoding(),
                      getParentForChildren(),
                      isClean());
              transcoding_ = null;
            }
            return transcodingBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder> kacohaBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           * @return Whether the kacoha field is set.
           */
          public boolean hasKacoha() {
            return kacohaBuilder_ != null || kacoha_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           * @return The kacoha.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions getKacoha() {
            if (kacohaBuilder_ == null) {
              return kacoha_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.getDefaultInstance() : kacoha_;
            } else {
              return kacohaBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          public Builder setKacoha(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions value) {
            if (kacohaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              kacoha_ = value;
              onChanged();
            } else {
              kacohaBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          public Builder setKacoha(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder builderForValue) {
            if (kacohaBuilder_ == null) {
              kacoha_ = builderForValue.build();
              onChanged();
            } else {
              kacohaBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          public Builder mergeKacoha(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions value) {
            if (kacohaBuilder_ == null) {
              if (kacoha_ != null) {
                kacoha_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.newBuilder(kacoha_).mergeFrom(value).buildPartial();
              } else {
                kacoha_ = value;
              }
              onChanged();
            } else {
              kacohaBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          public Builder clearKacoha() {
            if (kacohaBuilder_ == null) {
              kacoha_ = null;
              onChanged();
            } else {
              kacoha_ = null;
              kacohaBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder getKacohaBuilder() {
            
            onChanged();
            return getKacohaFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder getKacohaOrBuilder() {
            if (kacohaBuilder_ != null) {
              return kacohaBuilder_.getMessageOrBuilder();
            } else {
              return kacoha_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.getDefaultInstance() : kacoha_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.KaCoHaOptions kacoha = 7;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder> 
              getKacohaFieldBuilder() {
            if (kacohaBuilder_ == null) {
              kacohaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.KaCoHaOptionsOrBuilder>(
                      getKacoha(),
                      getParentForChildren(),
                      isClean());
              kacoha_ = null;
            }
            return kacohaBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder> deduplicateBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           * @return Whether the deduplicate field is set.
           */
          public boolean hasDeduplicate() {
            return deduplicateBuilder_ != null || deduplicate_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           * @return The deduplicate.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions getDeduplicate() {
            if (deduplicateBuilder_ == null) {
              return deduplicate_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.getDefaultInstance() : deduplicate_;
            } else {
              return deduplicateBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          public Builder setDeduplicate(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions value) {
            if (deduplicateBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              deduplicate_ = value;
              onChanged();
            } else {
              deduplicateBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          public Builder setDeduplicate(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder builderForValue) {
            if (deduplicateBuilder_ == null) {
              deduplicate_ = builderForValue.build();
              onChanged();
            } else {
              deduplicateBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          public Builder mergeDeduplicate(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions value) {
            if (deduplicateBuilder_ == null) {
              if (deduplicate_ != null) {
                deduplicate_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.newBuilder(deduplicate_).mergeFrom(value).buildPartial();
              } else {
                deduplicate_ = value;
              }
              onChanged();
            } else {
              deduplicateBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          public Builder clearDeduplicate() {
            if (deduplicateBuilder_ == null) {
              deduplicate_ = null;
              onChanged();
            } else {
              deduplicate_ = null;
              deduplicateBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder getDeduplicateBuilder() {
            
            onChanged();
            return getDeduplicateFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder getDeduplicateOrBuilder() {
            if (deduplicateBuilder_ != null) {
              return deduplicateBuilder_.getMessageOrBuilder();
            } else {
              return deduplicate_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.getDefaultInstance() : deduplicate_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.DedupOptions deduplicate = 8;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder> 
              getDeduplicateFieldBuilder() {
            if (deduplicateBuilder_ == null) {
              deduplicateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.DedupOptionsOrBuilder>(
                      getDeduplicate(),
                      getParentForChildren(),
                      isClean());
              deduplicate_ = null;
            }
            return deduplicateBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder> samplerBuilder_;
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           * @return Whether the sampler field is set.
           */
          public boolean hasSampler() {
            return samplerBuilder_ != null || sampler_ != null;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           * @return The sampler.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions getSampler() {
            if (samplerBuilder_ == null) {
              return sampler_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.getDefaultInstance() : sampler_;
            } else {
              return samplerBuilder_.getMessage();
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          public Builder setSampler(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions value) {
            if (samplerBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              sampler_ = value;
              onChanged();
            } else {
              samplerBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          public Builder setSampler(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder builderForValue) {
            if (samplerBuilder_ == null) {
              sampler_ = builderForValue.build();
              onChanged();
            } else {
              samplerBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          public Builder mergeSampler(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions value) {
            if (samplerBuilder_ == null) {
              if (sampler_ != null) {
                sampler_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.newBuilder(sampler_).mergeFrom(value).buildPartial();
              } else {
                sampler_ = value;
              }
              onChanged();
            } else {
              samplerBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          public Builder clearSampler() {
            if (samplerBuilder_ == null) {
              sampler_ = null;
              onChanged();
            } else {
              sampler_ = null;
              samplerBuilder_ = null;
            }

            return this;
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder getSamplerBuilder() {
            
            onChanged();
            return getSamplerFieldBuilder().getBuilder();
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder getSamplerOrBuilder() {
            if (samplerBuilder_ != null) {
              return samplerBuilder_.getMessageOrBuilder();
            } else {
              return sampler_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.getDefaultInstance() : sampler_;
            }
          }
          /**
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.SamplerOptions sampler = 9;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder> 
              getSamplerFieldBuilder() {
            if (samplerBuilder_ == null) {
              samplerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.SamplerOptionsOrBuilder>(
                      getSampler(),
                      getParentForChildren(),
                      isClean());
              sampler_ = null;
            }
            return samplerBuilder_;
          }

          private com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder> comparatorBuilder_;
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           * @return Whether the comparator field is set.
           */
          public boolean hasComparator() {
            return comparatorBuilder_ != null || comparator_ != null;
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           * @return The comparator.
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions getComparator() {
            if (comparatorBuilder_ == null) {
              return comparator_ == null ? com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.getDefaultInstance() : comparator_;
            } else {
              return comparatorBuilder_.getMessage();
            }
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          public Builder setComparator(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions value) {
            if (comparatorBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              comparator_ = value;
              onChanged();
            } else {
              comparatorBuilder_.setMessage(value);
            }

            return this;
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          public Builder setComparator(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder builderForValue) {
            if (comparatorBuilder_ == null) {
              comparator_ = builderForValue.build();
              onChanged();
            } else {
              comparatorBuilder_.setMessage(builderForValue.build());
            }

            return this;
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          public Builder mergeComparator(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions value) {
            if (comparatorBuilder_ == null) {
              if (comparator_ != null) {
                comparator_ =
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.newBuilder(comparator_).mergeFrom(value).buildPartial();
              } else {
                comparator_ = value;
              }
              onChanged();
            } else {
              comparatorBuilder_.mergeFrom(value);
            }

            return this;
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          public Builder clearComparator() {
            if (comparatorBuilder_ == null) {
              comparator_ = null;
              onChanged();
            } else {
              comparator_ = null;
              comparatorBuilder_ = null;
            }

            return this;
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder getComparatorBuilder() {
            
            onChanged();
            return getComparatorFieldBuilder().getBuilder();
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder getComparatorOrBuilder() {
            if (comparatorBuilder_ != null) {
              return comparatorBuilder_.getMessageOrBuilder();
            } else {
              return comparator_ == null ?
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.getDefaultInstance() : comparator_;
            }
          }
          /**
           * <pre>
           * Add here any new hdfs producer
           * </pre>
           *
           * <code>.Acme.Glup.HDFSOptions.ImportOptions.Generator.ComparatorOptions comparator = 10;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder> 
              getComparatorFieldBuilder() {
            if (comparatorBuilder_ == null) {
              comparatorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.ComparatorOptionsOrBuilder>(
                      getComparator(),
                      getParentForChildren(),
                      isClean());
              comparator_ = null;
            }
            return comparatorBuilder_;
          }

          private java.util.List<com.acme.glup.MetadataProto.Location> to_ =
            java.util.Collections.emptyList();
          private void ensureToIsMutable() {
            if (!((bitField0_ & 0x00000001) != 0)) {
              to_ = new java.util.ArrayList<com.acme.glup.MetadataProto.Location>(to_);
              bitField0_ |= 0x00000001;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder> toBuilder_;

          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public java.util.List<com.acme.glup.MetadataProto.Location> getToList() {
            if (toBuilder_ == null) {
              return java.util.Collections.unmodifiableList(to_);
            } else {
              return toBuilder_.getMessageList();
            }
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public int getToCount() {
            if (toBuilder_ == null) {
              return to_.size();
            } else {
              return toBuilder_.getCount();
            }
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public com.acme.glup.MetadataProto.Location getTo(int index) {
            if (toBuilder_ == null) {
              return to_.get(index);
            } else {
              return toBuilder_.getMessage(index);
            }
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder setTo(
              int index, com.acme.glup.MetadataProto.Location value) {
            if (toBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureToIsMutable();
              to_.set(index, value);
              onChanged();
            } else {
              toBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder setTo(
              int index, com.acme.glup.MetadataProto.Location.Builder builderForValue) {
            if (toBuilder_ == null) {
              ensureToIsMutable();
              to_.set(index, builderForValue.build());
              onChanged();
            } else {
              toBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder addTo(com.acme.glup.MetadataProto.Location value) {
            if (toBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureToIsMutable();
              to_.add(value);
              onChanged();
            } else {
              toBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder addTo(
              int index, com.acme.glup.MetadataProto.Location value) {
            if (toBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureToIsMutable();
              to_.add(index, value);
              onChanged();
            } else {
              toBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder addTo(
              com.acme.glup.MetadataProto.Location.Builder builderForValue) {
            if (toBuilder_ == null) {
              ensureToIsMutable();
              to_.add(builderForValue.build());
              onChanged();
            } else {
              toBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder addTo(
              int index, com.acme.glup.MetadataProto.Location.Builder builderForValue) {
            if (toBuilder_ == null) {
              ensureToIsMutable();
              to_.add(index, builderForValue.build());
              onChanged();
            } else {
              toBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder addAllTo(
              java.lang.Iterable<? extends com.acme.glup.MetadataProto.Location> values) {
            if (toBuilder_ == null) {
              ensureToIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, to_);
              onChanged();
            } else {
              toBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder clearTo() {
            if (toBuilder_ == null) {
              to_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
            } else {
              toBuilder_.clear();
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public Builder removeTo(int index) {
            if (toBuilder_ == null) {
              ensureToIsMutable();
              to_.remove(index);
              onChanged();
            } else {
              toBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public com.acme.glup.MetadataProto.Location.Builder getToBuilder(
              int index) {
            return getToFieldBuilder().getBuilder(index);
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public com.acme.glup.MetadataProto.LocationOrBuilder getToOrBuilder(
              int index) {
            if (toBuilder_ == null) {
              return to_.get(index);  } else {
              return toBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public java.util.List<? extends com.acme.glup.MetadataProto.LocationOrBuilder> 
               getToOrBuilderList() {
            if (toBuilder_ != null) {
              return toBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(to_);
            }
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public com.acme.glup.MetadataProto.Location.Builder addToBuilder() {
            return getToFieldBuilder().addBuilder(
                com.acme.glup.MetadataProto.Location.getDefaultInstance());
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public com.acme.glup.MetadataProto.Location.Builder addToBuilder(
              int index) {
            return getToFieldBuilder().addBuilder(
                index, com.acme.glup.MetadataProto.Location.getDefaultInstance());
          }
          /**
           * <pre>
           * defines where it will run and push data
           * </pre>
           *
           * <code>repeated .Acme.Glup.Location to = 250;</code>
           */
          public java.util.List<com.acme.glup.MetadataProto.Location.Builder> 
               getToBuilderList() {
            return getToFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder> 
              getToFieldBuilder() {
            if (toBuilder_ == null) {
              toBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.acme.glup.MetadataProto.Location, com.acme.glup.MetadataProto.Location.Builder, com.acme.glup.MetadataProto.LocationOrBuilder>(
                      to_,
                      ((bitField0_ & 0x00000001) != 0),
                      getParentForChildren(),
                      isClean());
              to_ = null;
            }
            return toBuilder_;
          }

          private java.lang.Object namespace_ = "";
          /**
           * <code>string namespace = 251;</code>
           * @return The namespace.
           */
          public java.lang.String getNamespace() {
            java.lang.Object ref = namespace_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              namespace_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>string namespace = 251;</code>
           * @return The bytes for namespace.
           */
          public com.google.protobuf.ByteString
              getNamespaceBytes() {
            java.lang.Object ref = namespace_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              namespace_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>string namespace = 251;</code>
           * @param value The namespace to set.
           * @return This builder for chaining.
           */
          public Builder setNamespace(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  
            namespace_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>string namespace = 251;</code>
           * @return This builder for chaining.
           */
          public Builder clearNamespace() {
            
            namespace_ = getDefaultInstance().getNamespace();
            onChanged();
            return this;
          }
          /**
           * <code>string namespace = 251;</code>
           * @param value The bytes for namespace to set.
           * @return This builder for chaining.
           */
          public Builder setNamespaceBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
            
            namespace_ = value;
            onChanged();
            return this;
          }

          private java.lang.Object startDate_ = "";
          /**
           * <pre>
           * define beginning date inclusive
           * </pre>
           *
           * <code>string start_date = 253;</code>
           * @return The startDate.
           */
          public java.lang.String getStartDate() {
            java.lang.Object ref = startDate_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              startDate_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * define beginning date inclusive
           * </pre>
           *
           * <code>string start_date = 253;</code>
           * @return The bytes for startDate.
           */
          public com.google.protobuf.ByteString
              getStartDateBytes() {
            java.lang.Object ref = startDate_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              startDate_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * define beginning date inclusive
           * </pre>
           *
           * <code>string start_date = 253;</code>
           * @param value The startDate to set.
           * @return This builder for chaining.
           */
          public Builder setStartDate(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  
            startDate_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * define beginning date inclusive
           * </pre>
           *
           * <code>string start_date = 253;</code>
           * @return This builder for chaining.
           */
          public Builder clearStartDate() {
            
            startDate_ = getDefaultInstance().getStartDate();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * define beginning date inclusive
           * </pre>
           *
           * <code>string start_date = 253;</code>
           * @param value The bytes for startDate to set.
           * @return This builder for chaining.
           */
          public Builder setStartDateBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
            
            startDate_ = value;
            onChanged();
            return this;
          }

          private java.lang.Object stopDate_ = "";
          /**
           * <pre>
           * define stop date exclusive
           * </pre>
           *
           * <code>string stop_date = 254;</code>
           * @return The stopDate.
           */
          public java.lang.String getStopDate() {
            java.lang.Object ref = stopDate_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              stopDate_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * define stop date exclusive
           * </pre>
           *
           * <code>string stop_date = 254;</code>
           * @return The bytes for stopDate.
           */
          public com.google.protobuf.ByteString
              getStopDateBytes() {
            java.lang.Object ref = stopDate_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              stopDate_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * define stop date exclusive
           * </pre>
           *
           * <code>string stop_date = 254;</code>
           * @param value The stopDate to set.
           * @return This builder for chaining.
           */
          public Builder setStopDate(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  
            stopDate_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * define stop date exclusive
           * </pre>
           *
           * <code>string stop_date = 254;</code>
           * @return This builder for chaining.
           */
          public Builder clearStopDate() {
            
            stopDate_ = getDefaultInstance().getStopDate();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * define stop date exclusive
           * </pre>
           *
           * <code>string stop_date = 254;</code>
           * @param value The bytes for stopDate to set.
           * @return This builder for chaining.
           */
          public Builder setStopDateBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
            
            stopDate_ = value;
            onChanged();
            return this;
          }

          private boolean ignoreCn_ ;
          /**
           * <pre>
           * TODO : remove this property when RIVERS-3723 (remove CN platform) is over
           * </pre>
           *
           * <code>bool ignore_cn = 255;</code>
           * @return The ignoreCn.
           */
          public boolean getIgnoreCn() {
            return ignoreCn_;
          }
          /**
           * <pre>
           * TODO : remove this property when RIVERS-3723 (remove CN platform) is over
           * </pre>
           *
           * <code>bool ignore_cn = 255;</code>
           * @param value The ignoreCn to set.
           * @return This builder for chaining.
           */
          public Builder setIgnoreCn(boolean value) {
            
            ignoreCn_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * TODO : remove this property when RIVERS-3723 (remove CN platform) is over
           * </pre>
           *
           * <code>bool ignore_cn = 255;</code>
           * @return This builder for chaining.
           */
          public Builder clearIgnoreCn() {
            
            ignoreCn_ = false;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator)
        }

        // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions.Generator)
        private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator();
        }

        public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Generator>
            PARSER = new com.google.protobuf.AbstractParser<Generator>() {
          @java.lang.Override
          public Generator parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new Generator(input, extensionRegistry);
          }
        };

        public static com.google.protobuf.Parser<Generator> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Generator> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int OWNER_FIELD_NUMBER = 1;
      private volatile java.lang.Object owner_;
      /**
       * <pre>
       * location on hdfs
       * </pre>
       *
       * <code>string owner = 1;</code>
       * @return The owner.
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          owner_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * location on hdfs
       * </pre>
       *
       * <code>string owner = 1;</code>
       * @return The bytes for owner.
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int NAME_FIELD_NUMBER = 2;
      private volatile java.lang.Object name_;
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PARTITIONING_FIELD_NUMBER = 4;
      private int partitioning_;
      /**
       * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
       * @return The enum numeric value on the wire for partitioning.
       */
      public int getPartitioningValue() {
        return partitioning_;
      }
      /**
       * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
       * @return The partitioning.
       */
      public com.acme.glup.MetadataProto.PartitionScheme getPartitioning() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitioning_);
        return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
      }

      public static final int FORMAT_FIELD_NUMBER = 5;
      private int format_;
      /**
       * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
       * @return The enum numeric value on the wire for format.
       */
      public int getFormatValue() {
        return format_;
      }
      /**
       * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
       * @return The format.
       */
      public com.acme.glup.MetadataProto.HDFSDataFormat getFormat() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(format_);
        return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
      }

      public static final int PRIVATE_FIELD_NUMBER = 6;
      private boolean private_;
      /**
       * <pre>
       * if set to true, imported data won't be readable from other users
       * (permission o-rwx)
       * </pre>
       *
       * <code>bool private = 6;</code>
       * @return The private.
       */
      public boolean getPrivate() {
        return private_;
      }

      public static final int GENERATOR_FIELD_NUMBER = 11;
      private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator> generator_;
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator> getGeneratorList() {
        return generator_;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder> 
          getGeneratorOrBuilderList() {
        return generator_;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      public int getGeneratorCount() {
        return generator_.size();
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator getGenerator(int index) {
        return generator_.get(index);
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder getGeneratorOrBuilder(
          int index) {
        return generator_.get(index);
      }

      public static final int VIEW_FIELD_NUMBER = 12;
      private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View> view_;
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View> getViewList() {
        return view_;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder> 
          getViewOrBuilderList() {
        return view_;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      public int getViewCount() {
        return view_.size();
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View getView(int index) {
        return view_.get(index);
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder getViewOrBuilder(
          int index) {
        return view_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getOwnerBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, owner_);
        }
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
        }
        if (partitioning_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
          output.writeEnum(4, partitioning_);
        }
        if (format_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
          output.writeEnum(5, format_);
        }
        if (private_ != false) {
          output.writeBool(6, private_);
        }
        for (int i = 0; i < generator_.size(); i++) {
          output.writeMessage(11, generator_.get(i));
        }
        for (int i = 0; i < view_.size(); i++) {
          output.writeMessage(12, view_.get(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getOwnerBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, owner_);
        }
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
        }
        if (partitioning_ != com.acme.glup.MetadataProto.PartitionScheme.UNSUPPORTED_PARTITION_SCHEME.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, partitioning_);
        }
        if (format_ != com.acme.glup.MetadataProto.HDFSDataFormat.UNSUPPORTED_DATA_FORMAT.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, format_);
        }
        if (private_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, private_);
        }
        for (int i = 0; i < generator_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, generator_.get(i));
        }
        for (int i = 0; i < view_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, view_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions)) {
          return super.equals(obj);
        }
        com.acme.glup.MetadataProto.HDFSOptions.ImportOptions other = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions) obj;

        if (!getOwner()
            .equals(other.getOwner())) return false;
        if (!getName()
            .equals(other.getName())) return false;
        if (partitioning_ != other.partitioning_) return false;
        if (format_ != other.format_) return false;
        if (getPrivate()
            != other.getPrivate()) return false;
        if (!getGeneratorList()
            .equals(other.getGeneratorList())) return false;
        if (!getViewList()
            .equals(other.getViewList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + OWNER_FIELD_NUMBER;
        hash = (53 * hash) + getOwner().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + PARTITIONING_FIELD_NUMBER;
        hash = (53 * hash) + partitioning_;
        hash = (37 * hash) + FORMAT_FIELD_NUMBER;
        hash = (53 * hash) + format_;
        hash = (37 * hash) + PRIVATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPrivate());
        if (getGeneratorCount() > 0) {
          hash = (37 * hash) + GENERATOR_FIELD_NUMBER;
          hash = (53 * hash) + getGeneratorList().hashCode();
        }
        if (getViewCount() > 0) {
          hash = (37 * hash) + VIEW_FIELD_NUMBER;
          hash = (53 * hash) + getViewList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Acme.Glup.HDFSOptions.ImportOptions}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions.ImportOptions)
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.class, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder.class);
        }

        // Construct using com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getGeneratorFieldBuilder();
            getViewFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          owner_ = "";

          name_ = "";

          partitioning_ = 0;

          format_ = 0;

          private_ = false;

          if (generatorBuilder_ == null) {
            generator_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            generatorBuilder_.clear();
          }
          if (viewBuilder_ == null) {
            view_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            viewBuilder_.clear();
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions getDefaultInstanceForType() {
          return com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.getDefaultInstance();
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions build() {
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions buildPartial() {
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions result = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions(this);
          int from_bitField0_ = bitField0_;
          result.owner_ = owner_;
          result.name_ = name_;
          result.partitioning_ = partitioning_;
          result.format_ = format_;
          result.private_ = private_;
          if (generatorBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              generator_ = java.util.Collections.unmodifiableList(generator_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.generator_ = generator_;
          } else {
            result.generator_ = generatorBuilder_.build();
          }
          if (viewBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)) {
              view_ = java.util.Collections.unmodifiableList(view_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.view_ = view_;
          } else {
            result.view_ = viewBuilder_.build();
          }
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.acme.glup.MetadataProto.HDFSOptions.ImportOptions) {
            return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions.ImportOptions)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions other) {
          if (other == com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.getDefaultInstance()) return this;
          if (!other.getOwner().isEmpty()) {
            owner_ = other.owner_;
            onChanged();
          }
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (other.partitioning_ != 0) {
            setPartitioningValue(other.getPartitioningValue());
          }
          if (other.format_ != 0) {
            setFormatValue(other.getFormatValue());
          }
          if (other.getPrivate() != false) {
            setPrivate(other.getPrivate());
          }
          if (generatorBuilder_ == null) {
            if (!other.generator_.isEmpty()) {
              if (generator_.isEmpty()) {
                generator_ = other.generator_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureGeneratorIsMutable();
                generator_.addAll(other.generator_);
              }
              onChanged();
            }
          } else {
            if (!other.generator_.isEmpty()) {
              if (generatorBuilder_.isEmpty()) {
                generatorBuilder_.dispose();
                generatorBuilder_ = null;
                generator_ = other.generator_;
                bitField0_ = (bitField0_ & ~0x00000001);
                generatorBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getGeneratorFieldBuilder() : null;
              } else {
                generatorBuilder_.addAllMessages(other.generator_);
              }
            }
          }
          if (viewBuilder_ == null) {
            if (!other.view_.isEmpty()) {
              if (view_.isEmpty()) {
                view_ = other.view_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureViewIsMutable();
                view_.addAll(other.view_);
              }
              onChanged();
            }
          } else {
            if (!other.view_.isEmpty()) {
              if (viewBuilder_.isEmpty()) {
                viewBuilder_.dispose();
                viewBuilder_ = null;
                view_ = other.view_;
                bitField0_ = (bitField0_ & ~0x00000002);
                viewBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getViewFieldBuilder() : null;
              } else {
                viewBuilder_.addAllMessages(other.view_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions.ImportOptions) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object owner_ = "";
        /**
         * <pre>
         * location on hdfs
         * </pre>
         *
         * <code>string owner = 1;</code>
         * @return The owner.
         */
        public java.lang.String getOwner() {
          java.lang.Object ref = owner_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            owner_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * location on hdfs
         * </pre>
         *
         * <code>string owner = 1;</code>
         * @return The bytes for owner.
         */
        public com.google.protobuf.ByteString
            getOwnerBytes() {
          java.lang.Object ref = owner_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            owner_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * location on hdfs
         * </pre>
         *
         * <code>string owner = 1;</code>
         * @param value The owner to set.
         * @return This builder for chaining.
         */
        public Builder setOwner(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          owner_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * location on hdfs
         * </pre>
         *
         * <code>string owner = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearOwner() {
          
          owner_ = getDefaultInstance().getOwner();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * location on hdfs
         * </pre>
         *
         * <code>string owner = 1;</code>
         * @param value The bytes for owner to set.
         * @return This builder for chaining.
         */
        public Builder setOwnerBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          owner_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object name_ = "";
        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string name = 2;</code>
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string name = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearName() {
          
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>string name = 2;</code>
         * @param value The bytes for name to set.
         * @return This builder for chaining.
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          name_ = value;
          onChanged();
          return this;
        }

        private int partitioning_ = 0;
        /**
         * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
         * @return The enum numeric value on the wire for partitioning.
         */
        public int getPartitioningValue() {
          return partitioning_;
        }
        /**
         * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
         * @param value The enum numeric value on the wire for partitioning to set.
         * @return This builder for chaining.
         */
        public Builder setPartitioningValue(int value) {
          partitioning_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
         * @return The partitioning.
         */
        public com.acme.glup.MetadataProto.PartitionScheme getPartitioning() {
          @SuppressWarnings("deprecation")
          com.acme.glup.MetadataProto.PartitionScheme result = com.acme.glup.MetadataProto.PartitionScheme.valueOf(partitioning_);
          return result == null ? com.acme.glup.MetadataProto.PartitionScheme.UNRECOGNIZED : result;
        }
        /**
         * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
         * @param value The partitioning to set.
         * @return This builder for chaining.
         */
        public Builder setPartitioning(com.acme.glup.MetadataProto.PartitionScheme value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          partitioning_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.PartitionScheme partitioning = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearPartitioning() {
          
          partitioning_ = 0;
          onChanged();
          return this;
        }

        private int format_ = 0;
        /**
         * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
         * @return The enum numeric value on the wire for format.
         */
        public int getFormatValue() {
          return format_;
        }
        /**
         * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
         * @param value The enum numeric value on the wire for format to set.
         * @return This builder for chaining.
         */
        public Builder setFormatValue(int value) {
          format_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
         * @return The format.
         */
        public com.acme.glup.MetadataProto.HDFSDataFormat getFormat() {
          @SuppressWarnings("deprecation")
          com.acme.glup.MetadataProto.HDFSDataFormat result = com.acme.glup.MetadataProto.HDFSDataFormat.valueOf(format_);
          return result == null ? com.acme.glup.MetadataProto.HDFSDataFormat.UNRECOGNIZED : result;
        }
        /**
         * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
         * @param value The format to set.
         * @return This builder for chaining.
         */
        public Builder setFormat(com.acme.glup.MetadataProto.HDFSDataFormat value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          format_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.HDFSDataFormat format = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearFormat() {
          
          format_ = 0;
          onChanged();
          return this;
        }

        private boolean private_ ;
        /**
         * <pre>
         * if set to true, imported data won't be readable from other users
         * (permission o-rwx)
         * </pre>
         *
         * <code>bool private = 6;</code>
         * @return The private.
         */
        public boolean getPrivate() {
          return private_;
        }
        /**
         * <pre>
         * if set to true, imported data won't be readable from other users
         * (permission o-rwx)
         * </pre>
         *
         * <code>bool private = 6;</code>
         * @param value The private to set.
         * @return This builder for chaining.
         */
        public Builder setPrivate(boolean value) {
          
          private_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * if set to true, imported data won't be readable from other users
         * (permission o-rwx)
         * </pre>
         *
         * <code>bool private = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearPrivate() {
          
          private_ = false;
          onChanged();
          return this;
        }

        private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator> generator_ =
          java.util.Collections.emptyList();
        private void ensureGeneratorIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            generator_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator>(generator_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder> generatorBuilder_;

        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator> getGeneratorList() {
          if (generatorBuilder_ == null) {
            return java.util.Collections.unmodifiableList(generator_);
          } else {
            return generatorBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public int getGeneratorCount() {
          if (generatorBuilder_ == null) {
            return generator_.size();
          } else {
            return generatorBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator getGenerator(int index) {
          if (generatorBuilder_ == null) {
            return generator_.get(index);
          } else {
            return generatorBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder setGenerator(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator value) {
          if (generatorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGeneratorIsMutable();
            generator_.set(index, value);
            onChanged();
          } else {
            generatorBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder setGenerator(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder builderForValue) {
          if (generatorBuilder_ == null) {
            ensureGeneratorIsMutable();
            generator_.set(index, builderForValue.build());
            onChanged();
          } else {
            generatorBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder addGenerator(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator value) {
          if (generatorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGeneratorIsMutable();
            generator_.add(value);
            onChanged();
          } else {
            generatorBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder addGenerator(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator value) {
          if (generatorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGeneratorIsMutable();
            generator_.add(index, value);
            onChanged();
          } else {
            generatorBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder addGenerator(
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder builderForValue) {
          if (generatorBuilder_ == null) {
            ensureGeneratorIsMutable();
            generator_.add(builderForValue.build());
            onChanged();
          } else {
            generatorBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder addGenerator(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder builderForValue) {
          if (generatorBuilder_ == null) {
            ensureGeneratorIsMutable();
            generator_.add(index, builderForValue.build());
            onChanged();
          } else {
            generatorBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder addAllGenerator(
            java.lang.Iterable<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator> values) {
          if (generatorBuilder_ == null) {
            ensureGeneratorIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, generator_);
            onChanged();
          } else {
            generatorBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder clearGenerator() {
          if (generatorBuilder_ == null) {
            generator_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            generatorBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public Builder removeGenerator(int index) {
          if (generatorBuilder_ == null) {
            ensureGeneratorIsMutable();
            generator_.remove(index);
            onChanged();
          } else {
            generatorBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder getGeneratorBuilder(
            int index) {
          return getGeneratorFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder getGeneratorOrBuilder(
            int index) {
          if (generatorBuilder_ == null) {
            return generator_.get(index);  } else {
            return generatorBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder> 
             getGeneratorOrBuilderList() {
          if (generatorBuilder_ != null) {
            return generatorBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(generator_);
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder addGeneratorBuilder() {
          return getGeneratorFieldBuilder().addBuilder(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.getDefaultInstance());
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder addGeneratorBuilder(
            int index) {
          return getGeneratorFieldBuilder().addBuilder(
              index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.getDefaultInstance());
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.Generator generator = 11;</code>
         */
        public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder> 
             getGeneratorBuilderList() {
          return getGeneratorFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder> 
            getGeneratorFieldBuilder() {
          if (generatorBuilder_ == null) {
            generatorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Generator.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.GeneratorOrBuilder>(
                    generator_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            generator_ = null;
          }
          return generatorBuilder_;
        }

        private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View> view_ =
          java.util.Collections.emptyList();
        private void ensureViewIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            view_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View>(view_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder> viewBuilder_;

        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View> getViewList() {
          if (viewBuilder_ == null) {
            return java.util.Collections.unmodifiableList(view_);
          } else {
            return viewBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public int getViewCount() {
          if (viewBuilder_ == null) {
            return view_.size();
          } else {
            return viewBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View getView(int index) {
          if (viewBuilder_ == null) {
            return view_.get(index);
          } else {
            return viewBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder setView(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View value) {
          if (viewBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureViewIsMutable();
            view_.set(index, value);
            onChanged();
          } else {
            viewBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder setView(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder builderForValue) {
          if (viewBuilder_ == null) {
            ensureViewIsMutable();
            view_.set(index, builderForValue.build());
            onChanged();
          } else {
            viewBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder addView(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View value) {
          if (viewBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureViewIsMutable();
            view_.add(value);
            onChanged();
          } else {
            viewBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder addView(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View value) {
          if (viewBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureViewIsMutable();
            view_.add(index, value);
            onChanged();
          } else {
            viewBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder addView(
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder builderForValue) {
          if (viewBuilder_ == null) {
            ensureViewIsMutable();
            view_.add(builderForValue.build());
            onChanged();
          } else {
            viewBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder addView(
            int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder builderForValue) {
          if (viewBuilder_ == null) {
            ensureViewIsMutable();
            view_.add(index, builderForValue.build());
            onChanged();
          } else {
            viewBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder addAllView(
            java.lang.Iterable<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View> values) {
          if (viewBuilder_ == null) {
            ensureViewIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, view_);
            onChanged();
          } else {
            viewBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder clearView() {
          if (viewBuilder_ == null) {
            view_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            viewBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public Builder removeView(int index) {
          if (viewBuilder_ == null) {
            ensureViewIsMutable();
            view_.remove(index);
            onChanged();
          } else {
            viewBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder getViewBuilder(
            int index) {
          return getViewFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder getViewOrBuilder(
            int index) {
          if (viewBuilder_ == null) {
            return view_.get(index);  } else {
            return viewBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder> 
             getViewOrBuilderList() {
          if (viewBuilder_ != null) {
            return viewBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(view_);
          }
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder addViewBuilder() {
          return getViewFieldBuilder().addBuilder(
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.getDefaultInstance());
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder addViewBuilder(
            int index) {
          return getViewFieldBuilder().addBuilder(
              index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.getDefaultInstance());
        }
        /**
         * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions.View view = 12;</code>
         */
        public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder> 
             getViewBuilderList() {
          return getViewFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder> 
            getViewFieldBuilder() {
          if (viewBuilder_ == null) {
            viewBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.View.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.ViewOrBuilder>(
                    view_,
                    ((bitField0_ & 0x00000002) != 0),
                    getParentForChildren(),
                    isClean());
            view_ = null;
          }
          return viewBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions.ImportOptions)
      }

      // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions.ImportOptions)
      private static final com.acme.glup.MetadataProto.HDFSOptions.ImportOptions DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions.ImportOptions();
      }

      public static com.acme.glup.MetadataProto.HDFSOptions.ImportOptions getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<ImportOptions>
          PARSER = new com.google.protobuf.AbstractParser<ImportOptions>() {
        @java.lang.Override
        public ImportOptions parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new ImportOptions(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<ImportOptions> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ImportOptions> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int IMPORT_FIELD_NUMBER = 3;
    private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions> import_;
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions> getImportList() {
      return import_;
    }
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder> 
        getImportOrBuilderList() {
      return import_;
    }
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    public int getImportCount() {
      return import_.size();
    }
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions getImport(int index) {
      return import_.get(index);
    }
    /**
     * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
     */
    public com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder getImportOrBuilder(
        int index) {
      return import_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < import_.size(); i++) {
        output.writeMessage(3, import_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < import_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, import_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.HDFSOptions)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.HDFSOptions other = (com.acme.glup.MetadataProto.HDFSOptions) obj;

      if (!getImportList()
          .equals(other.getImportList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getImportCount() > 0) {
        hash = (37 * hash) + IMPORT_FIELD_NUMBER;
        hash = (53 * hash) + getImportList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.HDFSOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Acme.Glup.HDFSOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSOptions)
        com.acme.glup.MetadataProto.HDFSOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.HDFSOptions.class, com.acme.glup.MetadataProto.HDFSOptions.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.HDFSOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getImportFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (importBuilder_ == null) {
          import_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          importBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSOptions_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSOptions getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.HDFSOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSOptions build() {
        com.acme.glup.MetadataProto.HDFSOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSOptions buildPartial() {
        com.acme.glup.MetadataProto.HDFSOptions result = new com.acme.glup.MetadataProto.HDFSOptions(this);
        int from_bitField0_ = bitField0_;
        if (importBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            import_ = java.util.Collections.unmodifiableList(import_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.import_ = import_;
        } else {
          result.import_ = importBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.HDFSOptions) {
          return mergeFrom((com.acme.glup.MetadataProto.HDFSOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSOptions other) {
        if (other == com.acme.glup.MetadataProto.HDFSOptions.getDefaultInstance()) return this;
        if (importBuilder_ == null) {
          if (!other.import_.isEmpty()) {
            if (import_.isEmpty()) {
              import_ = other.import_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureImportIsMutable();
              import_.addAll(other.import_);
            }
            onChanged();
          }
        } else {
          if (!other.import_.isEmpty()) {
            if (importBuilder_.isEmpty()) {
              importBuilder_.dispose();
              importBuilder_ = null;
              import_ = other.import_;
              bitField0_ = (bitField0_ & ~0x00000001);
              importBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getImportFieldBuilder() : null;
            } else {
              importBuilder_.addAllMessages(other.import_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.HDFSOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.HDFSOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions> import_ =
        java.util.Collections.emptyList();
      private void ensureImportIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          import_ = new java.util.ArrayList<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions>(import_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder> importBuilder_;

      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions> getImportList() {
        if (importBuilder_ == null) {
          return java.util.Collections.unmodifiableList(import_);
        } else {
          return importBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public int getImportCount() {
        if (importBuilder_ == null) {
          return import_.size();
        } else {
          return importBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions getImport(int index) {
        if (importBuilder_ == null) {
          return import_.get(index);
        } else {
          return importBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder setImport(
          int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions value) {
        if (importBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImportIsMutable();
          import_.set(index, value);
          onChanged();
        } else {
          importBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder setImport(
          int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder builderForValue) {
        if (importBuilder_ == null) {
          ensureImportIsMutable();
          import_.set(index, builderForValue.build());
          onChanged();
        } else {
          importBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder addImport(com.acme.glup.MetadataProto.HDFSOptions.ImportOptions value) {
        if (importBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImportIsMutable();
          import_.add(value);
          onChanged();
        } else {
          importBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder addImport(
          int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions value) {
        if (importBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImportIsMutable();
          import_.add(index, value);
          onChanged();
        } else {
          importBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder addImport(
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder builderForValue) {
        if (importBuilder_ == null) {
          ensureImportIsMutable();
          import_.add(builderForValue.build());
          onChanged();
        } else {
          importBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder addImport(
          int index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder builderForValue) {
        if (importBuilder_ == null) {
          ensureImportIsMutable();
          import_.add(index, builderForValue.build());
          onChanged();
        } else {
          importBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder addAllImport(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptions> values) {
        if (importBuilder_ == null) {
          ensureImportIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, import_);
          onChanged();
        } else {
          importBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder clearImport() {
        if (importBuilder_ == null) {
          import_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          importBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public Builder removeImport(int index) {
        if (importBuilder_ == null) {
          ensureImportIsMutable();
          import_.remove(index);
          onChanged();
        } else {
          importBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder getImportBuilder(
          int index) {
        return getImportFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder getImportOrBuilder(
          int index) {
        if (importBuilder_ == null) {
          return import_.get(index);  } else {
          return importBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder> 
           getImportOrBuilderList() {
        if (importBuilder_ != null) {
          return importBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(import_);
        }
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder addImportBuilder() {
        return getImportFieldBuilder().addBuilder(
            com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.getDefaultInstance());
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder addImportBuilder(
          int index) {
        return getImportFieldBuilder().addBuilder(
            index, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.getDefaultInstance());
      }
      /**
       * <code>repeated .Acme.Glup.HDFSOptions.ImportOptions import = 3;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder> 
           getImportBuilderList() {
        return getImportFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSOptions.ImportOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder> 
          getImportFieldBuilder() {
        if (importBuilder_ == null) {
          importBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions.ImportOptions, com.acme.glup.MetadataProto.HDFSOptions.ImportOptions.Builder, com.acme.glup.MetadataProto.HDFSOptions.ImportOptionsOrBuilder>(
                  import_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          import_ = null;
        }
        return importBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSOptions)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSOptions)
    private static final com.acme.glup.MetadataProto.HDFSOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSOptions();
    }

    public static com.acme.glup.MetadataProto.HDFSOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HDFSOptions>
        PARSER = new com.google.protobuf.AbstractParser<HDFSOptions>() {
      @java.lang.Override
      public HDFSOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HDFSOptions(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<HDFSOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HDFSOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.HDFSOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProducerTransportOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.ProducerTransportOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * send glup through syslog. Deprecated, do not use for new glup
     * </pre>
     *
     * <code>bool syslog = 1;</code>
     * @return The syslog.
     */
    boolean getSyslog();

    /**
     * <pre>
     * send glup through kafka
     * </pre>
     *
     * <code>bool kafka = 2;</code>
     * @return The kafka.
     */
    boolean getKafka();
  }
  /**
   * <pre>
   * Describes the producers to use when emitting a Glup
   * If the producer is not set or is set to false, then the producer is not used
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.ProducerTransportOptions}
   */
  public  static final class ProducerTransportOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.ProducerTransportOptions)
      ProducerTransportOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ProducerTransportOptions.newBuilder() to construct.
    private ProducerTransportOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ProducerTransportOptions() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ProducerTransportOptions();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ProducerTransportOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              syslog_ = input.readBool();
              break;
            }
            case 16: {

              kafka_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ProducerTransportOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ProducerTransportOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.ProducerTransportOptions.class, com.acme.glup.MetadataProto.ProducerTransportOptions.Builder.class);
    }

    public static final int SYSLOG_FIELD_NUMBER = 1;
    private boolean syslog_;
    /**
     * <pre>
     * send glup through syslog. Deprecated, do not use for new glup
     * </pre>
     *
     * <code>bool syslog = 1;</code>
     * @return The syslog.
     */
    public boolean getSyslog() {
      return syslog_;
    }

    public static final int KAFKA_FIELD_NUMBER = 2;
    private boolean kafka_;
    /**
     * <pre>
     * send glup through kafka
     * </pre>
     *
     * <code>bool kafka = 2;</code>
     * @return The kafka.
     */
    public boolean getKafka() {
      return kafka_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (syslog_ != false) {
        output.writeBool(1, syslog_);
      }
      if (kafka_ != false) {
        output.writeBool(2, kafka_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (syslog_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, syslog_);
      }
      if (kafka_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, kafka_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.ProducerTransportOptions)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.ProducerTransportOptions other = (com.acme.glup.MetadataProto.ProducerTransportOptions) obj;

      if (getSyslog()
          != other.getSyslog()) return false;
      if (getKafka()
          != other.getKafka()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SYSLOG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSyslog());
      hash = (37 * hash) + KAFKA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getKafka());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ProducerTransportOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.ProducerTransportOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Describes the producers to use when emitting a Glup
     * If the producer is not set or is set to false, then the producer is not used
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.ProducerTransportOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.ProducerTransportOptions)
        com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ProducerTransportOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ProducerTransportOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.ProducerTransportOptions.class, com.acme.glup.MetadataProto.ProducerTransportOptions.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.ProducerTransportOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        syslog_ = false;

        kafka_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ProducerTransportOptions_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ProducerTransportOptions getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.ProducerTransportOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ProducerTransportOptions build() {
        com.acme.glup.MetadataProto.ProducerTransportOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ProducerTransportOptions buildPartial() {
        com.acme.glup.MetadataProto.ProducerTransportOptions result = new com.acme.glup.MetadataProto.ProducerTransportOptions(this);
        result.syslog_ = syslog_;
        result.kafka_ = kafka_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.ProducerTransportOptions) {
          return mergeFrom((com.acme.glup.MetadataProto.ProducerTransportOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.ProducerTransportOptions other) {
        if (other == com.acme.glup.MetadataProto.ProducerTransportOptions.getDefaultInstance()) return this;
        if (other.getSyslog() != false) {
          setSyslog(other.getSyslog());
        }
        if (other.getKafka() != false) {
          setKafka(other.getKafka());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.ProducerTransportOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.ProducerTransportOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean syslog_ ;
      /**
       * <pre>
       * send glup through syslog. Deprecated, do not use for new glup
       * </pre>
       *
       * <code>bool syslog = 1;</code>
       * @return The syslog.
       */
      public boolean getSyslog() {
        return syslog_;
      }
      /**
       * <pre>
       * send glup through syslog. Deprecated, do not use for new glup
       * </pre>
       *
       * <code>bool syslog = 1;</code>
       * @param value The syslog to set.
       * @return This builder for chaining.
       */
      public Builder setSyslog(boolean value) {
        
        syslog_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * send glup through syslog. Deprecated, do not use for new glup
       * </pre>
       *
       * <code>bool syslog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSyslog() {
        
        syslog_ = false;
        onChanged();
        return this;
      }

      private boolean kafka_ ;
      /**
       * <pre>
       * send glup through kafka
       * </pre>
       *
       * <code>bool kafka = 2;</code>
       * @return The kafka.
       */
      public boolean getKafka() {
        return kafka_;
      }
      /**
       * <pre>
       * send glup through kafka
       * </pre>
       *
       * <code>bool kafka = 2;</code>
       * @param value The kafka to set.
       * @return This builder for chaining.
       */
      public Builder setKafka(boolean value) {
        
        kafka_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * send glup through kafka
       * </pre>
       *
       * <code>bool kafka = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKafka() {
        
        kafka_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.ProducerTransportOptions)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.ProducerTransportOptions)
    private static final com.acme.glup.MetadataProto.ProducerTransportOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.ProducerTransportOptions();
    }

    public static com.acme.glup.MetadataProto.ProducerTransportOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ProducerTransportOptions>
        PARSER = new com.google.protobuf.AbstractParser<ProducerTransportOptions>() {
      @java.lang.Override
      public ProducerTransportOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ProducerTransportOptions(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ProducerTransportOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ProducerTransportOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.ProducerTransportOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PropertyOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.PropertyOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * can be used to provide a different QoS for important glups
     * </pre>
     *
     * <code>bool valuable = 1;</code>
     * @return The valuable.
     */
    boolean getValuable();

    /**
     * <pre>
     * can be used to select suitable instances capable of handling a high volume of glups
     * </pre>
     *
     * <code>bool high_volume = 2;</code>
     * @return The highVolume.
     */
    boolean getHighVolume();
  }
  /**
   * <pre>
   * Describes additional glup properties
   * It is used to help selecting the most appropriate pipeline configuration when sending a glup
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.PropertyOptions}
   */
  public  static final class PropertyOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.PropertyOptions)
      PropertyOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PropertyOptions.newBuilder() to construct.
    private PropertyOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PropertyOptions() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PropertyOptions();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PropertyOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              valuable_ = input.readBool();
              break;
            }
            case 16: {

              highVolume_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_PropertyOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_PropertyOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.PropertyOptions.class, com.acme.glup.MetadataProto.PropertyOptions.Builder.class);
    }

    public static final int VALUABLE_FIELD_NUMBER = 1;
    private boolean valuable_;
    /**
     * <pre>
     * can be used to provide a different QoS for important glups
     * </pre>
     *
     * <code>bool valuable = 1;</code>
     * @return The valuable.
     */
    public boolean getValuable() {
      return valuable_;
    }

    public static final int HIGH_VOLUME_FIELD_NUMBER = 2;
    private boolean highVolume_;
    /**
     * <pre>
     * can be used to select suitable instances capable of handling a high volume of glups
     * </pre>
     *
     * <code>bool high_volume = 2;</code>
     * @return The highVolume.
     */
    public boolean getHighVolume() {
      return highVolume_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (valuable_ != false) {
        output.writeBool(1, valuable_);
      }
      if (highVolume_ != false) {
        output.writeBool(2, highVolume_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (valuable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, valuable_);
      }
      if (highVolume_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, highVolume_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.PropertyOptions)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.PropertyOptions other = (com.acme.glup.MetadataProto.PropertyOptions) obj;

      if (getValuable()
          != other.getValuable()) return false;
      if (getHighVolume()
          != other.getHighVolume()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VALUABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getValuable());
      hash = (37 * hash) + HIGH_VOLUME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getHighVolume());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.PropertyOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.PropertyOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Describes additional glup properties
     * It is used to help selecting the most appropriate pipeline configuration when sending a glup
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.PropertyOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.PropertyOptions)
        com.acme.glup.MetadataProto.PropertyOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_PropertyOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_PropertyOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.PropertyOptions.class, com.acme.glup.MetadataProto.PropertyOptions.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.PropertyOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        valuable_ = false;

        highVolume_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_PropertyOptions_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.PropertyOptions getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.PropertyOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.PropertyOptions build() {
        com.acme.glup.MetadataProto.PropertyOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.PropertyOptions buildPartial() {
        com.acme.glup.MetadataProto.PropertyOptions result = new com.acme.glup.MetadataProto.PropertyOptions(this);
        result.valuable_ = valuable_;
        result.highVolume_ = highVolume_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.PropertyOptions) {
          return mergeFrom((com.acme.glup.MetadataProto.PropertyOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.PropertyOptions other) {
        if (other == com.acme.glup.MetadataProto.PropertyOptions.getDefaultInstance()) return this;
        if (other.getValuable() != false) {
          setValuable(other.getValuable());
        }
        if (other.getHighVolume() != false) {
          setHighVolume(other.getHighVolume());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.PropertyOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.PropertyOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean valuable_ ;
      /**
       * <pre>
       * can be used to provide a different QoS for important glups
       * </pre>
       *
       * <code>bool valuable = 1;</code>
       * @return The valuable.
       */
      public boolean getValuable() {
        return valuable_;
      }
      /**
       * <pre>
       * can be used to provide a different QoS for important glups
       * </pre>
       *
       * <code>bool valuable = 1;</code>
       * @param value The valuable to set.
       * @return This builder for chaining.
       */
      public Builder setValuable(boolean value) {
        
        valuable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * can be used to provide a different QoS for important glups
       * </pre>
       *
       * <code>bool valuable = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValuable() {
        
        valuable_ = false;
        onChanged();
        return this;
      }

      private boolean highVolume_ ;
      /**
       * <pre>
       * can be used to select suitable instances capable of handling a high volume of glups
       * </pre>
       *
       * <code>bool high_volume = 2;</code>
       * @return The highVolume.
       */
      public boolean getHighVolume() {
        return highVolume_;
      }
      /**
       * <pre>
       * can be used to select suitable instances capable of handling a high volume of glups
       * </pre>
       *
       * <code>bool high_volume = 2;</code>
       * @param value The highVolume to set.
       * @return This builder for chaining.
       */
      public Builder setHighVolume(boolean value) {
        
        highVolume_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * can be used to select suitable instances capable of handling a high volume of glups
       * </pre>
       *
       * <code>bool high_volume = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHighVolume() {
        
        highVolume_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.PropertyOptions)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.PropertyOptions)
    private static final com.acme.glup.MetadataProto.PropertyOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.PropertyOptions();
    }

    public static com.acme.glup.MetadataProto.PropertyOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PropertyOptions>
        PARSER = new com.google.protobuf.AbstractParser<PropertyOptions>() {
      @java.lang.Override
      public PropertyOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PropertyOptions(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PropertyOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PropertyOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.PropertyOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GlupOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.GlupOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * kafka settings
     * </pre>
     *
     * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
     * @return Whether the kafka field is set.
     */
    boolean hasKafka();
    /**
     * <pre>
     * kafka settings
     * </pre>
     *
     * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
     * @return The kafka.
     */
    com.acme.glup.MetadataProto.KafkaMessageOptions getKafka();
    /**
     * <pre>
     * kafka settings
     * </pre>
     *
     * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
     */
    com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder getKafkaOrBuilder();

    /**
     * <pre>
     * hdfs import settings
     * </pre>
     *
     * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
     * @return Whether the hdfs field is set.
     */
    boolean hasHdfs();
    /**
     * <pre>
     * hdfs import settings
     * </pre>
     *
     * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
     * @return The hdfs.
     */
    com.acme.glup.MetadataProto.HDFSOptions getHdfs();
    /**
     * <pre>
     * hdfs import settings
     * </pre>
     *
     * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
     */
    com.acme.glup.MetadataProto.HDFSOptionsOrBuilder getHdfsOrBuilder();

    /**
     * <pre>
     * field samplimg rate
     * </pre>
     *
     * <code>uint32 sampling_pct = 3;</code>
     * @return The samplingPct.
     */
    int getSamplingPct();

    /**
     * <pre>
     * preprod message sampling rate
     * </pre>
     *
     * <code>uint32 preprod_sampling_pct = 4;</code>
     * @return The preprodSamplingPct.
     */
    int getPreprodSamplingPct();

    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    java.util.List<com.acme.glup.MetadataProto.DataSet> 
        getDatasetList();
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    com.acme.glup.MetadataProto.DataSet getDataset(int index);
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    int getDatasetCount();
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    java.util.List<? extends com.acme.glup.MetadataProto.DataSetOrBuilder> 
        getDatasetOrBuilderList();
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    com.acme.glup.MetadataProto.DataSetOrBuilder getDatasetOrBuilder(
        int index);

    /**
     * <pre>
     * message sampling rate
     * </pre>
     *
     * <code>uint32 message_sampling_pct = 6;</code>
     * @return The messageSamplingPct.
     */
    int getMessageSamplingPct();

    /**
     * <pre>
     * producer(s) to use
     * </pre>
     *
     * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
     * @return Whether the producers field is set.
     */
    boolean hasProducers();
    /**
     * <pre>
     * producer(s) to use
     * </pre>
     *
     * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
     * @return The producers.
     */
    com.acme.glup.MetadataProto.ProducerTransportOptions getProducers();
    /**
     * <pre>
     * producer(s) to use
     * </pre>
     *
     * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
     */
    com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder getProducersOrBuilder();

    /**
     * <pre>
     * additional glup properties
     * </pre>
     *
     * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
     * @return Whether the properties field is set.
     */
    boolean hasProperties();
    /**
     * <pre>
     * additional glup properties
     * </pre>
     *
     * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
     * @return The properties.
     */
    com.acme.glup.MetadataProto.PropertyOptions getProperties();
    /**
     * <pre>
     * additional glup properties
     * </pre>
     *
     * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
     */
    com.acme.glup.MetadataProto.PropertyOptionsOrBuilder getPropertiesOrBuilder();
  }
  /**
   * Protobuf type {@code Acme.Glup.GlupOptions}
   */
  public  static final class GlupOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.GlupOptions)
      GlupOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GlupOptions.newBuilder() to construct.
    private GlupOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GlupOptions() {
      dataset_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GlupOptions();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GlupOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.acme.glup.MetadataProto.KafkaMessageOptions.Builder subBuilder = null;
              if (kafka_ != null) {
                subBuilder = kafka_.toBuilder();
              }
              kafka_ = input.readMessage(com.acme.glup.MetadataProto.KafkaMessageOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(kafka_);
                kafka_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              com.acme.glup.MetadataProto.HDFSOptions.Builder subBuilder = null;
              if (hdfs_ != null) {
                subBuilder = hdfs_.toBuilder();
              }
              hdfs_ = input.readMessage(com.acme.glup.MetadataProto.HDFSOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(hdfs_);
                hdfs_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              samplingPct_ = input.readUInt32();
              break;
            }
            case 32: {

              preprodSamplingPct_ = input.readUInt32();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                dataset_ = new java.util.ArrayList<com.acme.glup.MetadataProto.DataSet>();
                mutable_bitField0_ |= 0x00000001;
              }
              dataset_.add(
                  input.readMessage(com.acme.glup.MetadataProto.DataSet.parser(), extensionRegistry));
              break;
            }
            case 48: {

              messageSamplingPct_ = input.readUInt32();
              break;
            }
            case 58: {
              com.acme.glup.MetadataProto.ProducerTransportOptions.Builder subBuilder = null;
              if (producers_ != null) {
                subBuilder = producers_.toBuilder();
              }
              producers_ = input.readMessage(com.acme.glup.MetadataProto.ProducerTransportOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(producers_);
                producers_ = subBuilder.buildPartial();
              }

              break;
            }
            case 66: {
              com.acme.glup.MetadataProto.PropertyOptions.Builder subBuilder = null;
              if (properties_ != null) {
                subBuilder = properties_.toBuilder();
              }
              properties_ = input.readMessage(com.acme.glup.MetadataProto.PropertyOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(properties_);
                properties_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          dataset_ = java.util.Collections.unmodifiableList(dataset_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.GlupOptions.class, com.acme.glup.MetadataProto.GlupOptions.Builder.class);
    }

    public static final int KAFKA_FIELD_NUMBER = 1;
    private com.acme.glup.MetadataProto.KafkaMessageOptions kafka_;
    /**
     * <pre>
     * kafka settings
     * </pre>
     *
     * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
     * @return Whether the kafka field is set.
     */
    public boolean hasKafka() {
      return kafka_ != null;
    }
    /**
     * <pre>
     * kafka settings
     * </pre>
     *
     * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
     * @return The kafka.
     */
    public com.acme.glup.MetadataProto.KafkaMessageOptions getKafka() {
      return kafka_ == null ? com.acme.glup.MetadataProto.KafkaMessageOptions.getDefaultInstance() : kafka_;
    }
    /**
     * <pre>
     * kafka settings
     * </pre>
     *
     * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
     */
    public com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder getKafkaOrBuilder() {
      return getKafka();
    }

    public static final int HDFS_FIELD_NUMBER = 2;
    private com.acme.glup.MetadataProto.HDFSOptions hdfs_;
    /**
     * <pre>
     * hdfs import settings
     * </pre>
     *
     * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
     * @return Whether the hdfs field is set.
     */
    public boolean hasHdfs() {
      return hdfs_ != null;
    }
    /**
     * <pre>
     * hdfs import settings
     * </pre>
     *
     * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
     * @return The hdfs.
     */
    public com.acme.glup.MetadataProto.HDFSOptions getHdfs() {
      return hdfs_ == null ? com.acme.glup.MetadataProto.HDFSOptions.getDefaultInstance() : hdfs_;
    }
    /**
     * <pre>
     * hdfs import settings
     * </pre>
     *
     * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
     */
    public com.acme.glup.MetadataProto.HDFSOptionsOrBuilder getHdfsOrBuilder() {
      return getHdfs();
    }

    public static final int SAMPLING_PCT_FIELD_NUMBER = 3;
    private int samplingPct_;
    /**
     * <pre>
     * field samplimg rate
     * </pre>
     *
     * <code>uint32 sampling_pct = 3;</code>
     * @return The samplingPct.
     */
    public int getSamplingPct() {
      return samplingPct_;
    }

    public static final int PREPROD_SAMPLING_PCT_FIELD_NUMBER = 4;
    private int preprodSamplingPct_;
    /**
     * <pre>
     * preprod message sampling rate
     * </pre>
     *
     * <code>uint32 preprod_sampling_pct = 4;</code>
     * @return The preprodSamplingPct.
     */
    public int getPreprodSamplingPct() {
      return preprodSamplingPct_;
    }

    public static final int DATASET_FIELD_NUMBER = 5;
    private java.util.List<com.acme.glup.MetadataProto.DataSet> dataset_;
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    public java.util.List<com.acme.glup.MetadataProto.DataSet> getDatasetList() {
      return dataset_;
    }
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    public java.util.List<? extends com.acme.glup.MetadataProto.DataSetOrBuilder> 
        getDatasetOrBuilderList() {
      return dataset_;
    }
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    public int getDatasetCount() {
      return dataset_.size();
    }
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    public com.acme.glup.MetadataProto.DataSet getDataset(int index) {
      return dataset_.get(index);
    }
    /**
     * <pre>
     * dataset definition
     * </pre>
     *
     * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
     */
    public com.acme.glup.MetadataProto.DataSetOrBuilder getDatasetOrBuilder(
        int index) {
      return dataset_.get(index);
    }

    public static final int MESSAGE_SAMPLING_PCT_FIELD_NUMBER = 6;
    private int messageSamplingPct_;
    /**
     * <pre>
     * message sampling rate
     * </pre>
     *
     * <code>uint32 message_sampling_pct = 6;</code>
     * @return The messageSamplingPct.
     */
    public int getMessageSamplingPct() {
      return messageSamplingPct_;
    }

    public static final int PRODUCERS_FIELD_NUMBER = 7;
    private com.acme.glup.MetadataProto.ProducerTransportOptions producers_;
    /**
     * <pre>
     * producer(s) to use
     * </pre>
     *
     * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
     * @return Whether the producers field is set.
     */
    public boolean hasProducers() {
      return producers_ != null;
    }
    /**
     * <pre>
     * producer(s) to use
     * </pre>
     *
     * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
     * @return The producers.
     */
    public com.acme.glup.MetadataProto.ProducerTransportOptions getProducers() {
      return producers_ == null ? com.acme.glup.MetadataProto.ProducerTransportOptions.getDefaultInstance() : producers_;
    }
    /**
     * <pre>
     * producer(s) to use
     * </pre>
     *
     * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
     */
    public com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder getProducersOrBuilder() {
      return getProducers();
    }

    public static final int PROPERTIES_FIELD_NUMBER = 8;
    private com.acme.glup.MetadataProto.PropertyOptions properties_;
    /**
     * <pre>
     * additional glup properties
     * </pre>
     *
     * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
     * @return Whether the properties field is set.
     */
    public boolean hasProperties() {
      return properties_ != null;
    }
    /**
     * <pre>
     * additional glup properties
     * </pre>
     *
     * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
     * @return The properties.
     */
    public com.acme.glup.MetadataProto.PropertyOptions getProperties() {
      return properties_ == null ? com.acme.glup.MetadataProto.PropertyOptions.getDefaultInstance() : properties_;
    }
    /**
     * <pre>
     * additional glup properties
     * </pre>
     *
     * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
     */
    public com.acme.glup.MetadataProto.PropertyOptionsOrBuilder getPropertiesOrBuilder() {
      return getProperties();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (kafka_ != null) {
        output.writeMessage(1, getKafka());
      }
      if (hdfs_ != null) {
        output.writeMessage(2, getHdfs());
      }
      if (samplingPct_ != 0) {
        output.writeUInt32(3, samplingPct_);
      }
      if (preprodSamplingPct_ != 0) {
        output.writeUInt32(4, preprodSamplingPct_);
      }
      for (int i = 0; i < dataset_.size(); i++) {
        output.writeMessage(5, dataset_.get(i));
      }
      if (messageSamplingPct_ != 0) {
        output.writeUInt32(6, messageSamplingPct_);
      }
      if (producers_ != null) {
        output.writeMessage(7, getProducers());
      }
      if (properties_ != null) {
        output.writeMessage(8, getProperties());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (kafka_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getKafka());
      }
      if (hdfs_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getHdfs());
      }
      if (samplingPct_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, samplingPct_);
      }
      if (preprodSamplingPct_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, preprodSamplingPct_);
      }
      for (int i = 0; i < dataset_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, dataset_.get(i));
      }
      if (messageSamplingPct_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, messageSamplingPct_);
      }
      if (producers_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getProducers());
      }
      if (properties_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getProperties());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.GlupOptions)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.GlupOptions other = (com.acme.glup.MetadataProto.GlupOptions) obj;

      if (hasKafka() != other.hasKafka()) return false;
      if (hasKafka()) {
        if (!getKafka()
            .equals(other.getKafka())) return false;
      }
      if (hasHdfs() != other.hasHdfs()) return false;
      if (hasHdfs()) {
        if (!getHdfs()
            .equals(other.getHdfs())) return false;
      }
      if (getSamplingPct()
          != other.getSamplingPct()) return false;
      if (getPreprodSamplingPct()
          != other.getPreprodSamplingPct()) return false;
      if (!getDatasetList()
          .equals(other.getDatasetList())) return false;
      if (getMessageSamplingPct()
          != other.getMessageSamplingPct()) return false;
      if (hasProducers() != other.hasProducers()) return false;
      if (hasProducers()) {
        if (!getProducers()
            .equals(other.getProducers())) return false;
      }
      if (hasProperties() != other.hasProperties()) return false;
      if (hasProperties()) {
        if (!getProperties()
            .equals(other.getProperties())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasKafka()) {
        hash = (37 * hash) + KAFKA_FIELD_NUMBER;
        hash = (53 * hash) + getKafka().hashCode();
      }
      if (hasHdfs()) {
        hash = (37 * hash) + HDFS_FIELD_NUMBER;
        hash = (53 * hash) + getHdfs().hashCode();
      }
      hash = (37 * hash) + SAMPLING_PCT_FIELD_NUMBER;
      hash = (53 * hash) + getSamplingPct();
      hash = (37 * hash) + PREPROD_SAMPLING_PCT_FIELD_NUMBER;
      hash = (53 * hash) + getPreprodSamplingPct();
      if (getDatasetCount() > 0) {
        hash = (37 * hash) + DATASET_FIELD_NUMBER;
        hash = (53 * hash) + getDatasetList().hashCode();
      }
      hash = (37 * hash) + MESSAGE_SAMPLING_PCT_FIELD_NUMBER;
      hash = (53 * hash) + getMessageSamplingPct();
      if (hasProducers()) {
        hash = (37 * hash) + PRODUCERS_FIELD_NUMBER;
        hash = (53 * hash) + getProducers().hashCode();
      }
      if (hasProperties()) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + getProperties().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.GlupOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.GlupOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Acme.Glup.GlupOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.GlupOptions)
        com.acme.glup.MetadataProto.GlupOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.GlupOptions.class, com.acme.glup.MetadataProto.GlupOptions.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.GlupOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDatasetFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (kafkaBuilder_ == null) {
          kafka_ = null;
        } else {
          kafka_ = null;
          kafkaBuilder_ = null;
        }
        if (hdfsBuilder_ == null) {
          hdfs_ = null;
        } else {
          hdfs_ = null;
          hdfsBuilder_ = null;
        }
        samplingPct_ = 0;

        preprodSamplingPct_ = 0;

        if (datasetBuilder_ == null) {
          dataset_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          datasetBuilder_.clear();
        }
        messageSamplingPct_ = 0;

        if (producersBuilder_ == null) {
          producers_ = null;
        } else {
          producers_ = null;
          producersBuilder_ = null;
        }
        if (propertiesBuilder_ == null) {
          properties_ = null;
        } else {
          properties_ = null;
          propertiesBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupOptions_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.GlupOptions getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.GlupOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.GlupOptions build() {
        com.acme.glup.MetadataProto.GlupOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.GlupOptions buildPartial() {
        com.acme.glup.MetadataProto.GlupOptions result = new com.acme.glup.MetadataProto.GlupOptions(this);
        int from_bitField0_ = bitField0_;
        if (kafkaBuilder_ == null) {
          result.kafka_ = kafka_;
        } else {
          result.kafka_ = kafkaBuilder_.build();
        }
        if (hdfsBuilder_ == null) {
          result.hdfs_ = hdfs_;
        } else {
          result.hdfs_ = hdfsBuilder_.build();
        }
        result.samplingPct_ = samplingPct_;
        result.preprodSamplingPct_ = preprodSamplingPct_;
        if (datasetBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            dataset_ = java.util.Collections.unmodifiableList(dataset_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.dataset_ = dataset_;
        } else {
          result.dataset_ = datasetBuilder_.build();
        }
        result.messageSamplingPct_ = messageSamplingPct_;
        if (producersBuilder_ == null) {
          result.producers_ = producers_;
        } else {
          result.producers_ = producersBuilder_.build();
        }
        if (propertiesBuilder_ == null) {
          result.properties_ = properties_;
        } else {
          result.properties_ = propertiesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.GlupOptions) {
          return mergeFrom((com.acme.glup.MetadataProto.GlupOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.GlupOptions other) {
        if (other == com.acme.glup.MetadataProto.GlupOptions.getDefaultInstance()) return this;
        if (other.hasKafka()) {
          mergeKafka(other.getKafka());
        }
        if (other.hasHdfs()) {
          mergeHdfs(other.getHdfs());
        }
        if (other.getSamplingPct() != 0) {
          setSamplingPct(other.getSamplingPct());
        }
        if (other.getPreprodSamplingPct() != 0) {
          setPreprodSamplingPct(other.getPreprodSamplingPct());
        }
        if (datasetBuilder_ == null) {
          if (!other.dataset_.isEmpty()) {
            if (dataset_.isEmpty()) {
              dataset_ = other.dataset_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDatasetIsMutable();
              dataset_.addAll(other.dataset_);
            }
            onChanged();
          }
        } else {
          if (!other.dataset_.isEmpty()) {
            if (datasetBuilder_.isEmpty()) {
              datasetBuilder_.dispose();
              datasetBuilder_ = null;
              dataset_ = other.dataset_;
              bitField0_ = (bitField0_ & ~0x00000001);
              datasetBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDatasetFieldBuilder() : null;
            } else {
              datasetBuilder_.addAllMessages(other.dataset_);
            }
          }
        }
        if (other.getMessageSamplingPct() != 0) {
          setMessageSamplingPct(other.getMessageSamplingPct());
        }
        if (other.hasProducers()) {
          mergeProducers(other.getProducers());
        }
        if (other.hasProperties()) {
          mergeProperties(other.getProperties());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.GlupOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.GlupOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.acme.glup.MetadataProto.KafkaMessageOptions kafka_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.KafkaMessageOptions, com.acme.glup.MetadataProto.KafkaMessageOptions.Builder, com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder> kafkaBuilder_;
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       * @return Whether the kafka field is set.
       */
      public boolean hasKafka() {
        return kafkaBuilder_ != null || kafka_ != null;
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       * @return The kafka.
       */
      public com.acme.glup.MetadataProto.KafkaMessageOptions getKafka() {
        if (kafkaBuilder_ == null) {
          return kafka_ == null ? com.acme.glup.MetadataProto.KafkaMessageOptions.getDefaultInstance() : kafka_;
        } else {
          return kafkaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      public Builder setKafka(com.acme.glup.MetadataProto.KafkaMessageOptions value) {
        if (kafkaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          kafka_ = value;
          onChanged();
        } else {
          kafkaBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      public Builder setKafka(
          com.acme.glup.MetadataProto.KafkaMessageOptions.Builder builderForValue) {
        if (kafkaBuilder_ == null) {
          kafka_ = builderForValue.build();
          onChanged();
        } else {
          kafkaBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      public Builder mergeKafka(com.acme.glup.MetadataProto.KafkaMessageOptions value) {
        if (kafkaBuilder_ == null) {
          if (kafka_ != null) {
            kafka_ =
              com.acme.glup.MetadataProto.KafkaMessageOptions.newBuilder(kafka_).mergeFrom(value).buildPartial();
          } else {
            kafka_ = value;
          }
          onChanged();
        } else {
          kafkaBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      public Builder clearKafka() {
        if (kafkaBuilder_ == null) {
          kafka_ = null;
          onChanged();
        } else {
          kafka_ = null;
          kafkaBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      public com.acme.glup.MetadataProto.KafkaMessageOptions.Builder getKafkaBuilder() {
        
        onChanged();
        return getKafkaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      public com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder getKafkaOrBuilder() {
        if (kafkaBuilder_ != null) {
          return kafkaBuilder_.getMessageOrBuilder();
        } else {
          return kafka_ == null ?
              com.acme.glup.MetadataProto.KafkaMessageOptions.getDefaultInstance() : kafka_;
        }
      }
      /**
       * <pre>
       * kafka settings
       * </pre>
       *
       * <code>.Acme.Glup.KafkaMessageOptions kafka = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.KafkaMessageOptions, com.acme.glup.MetadataProto.KafkaMessageOptions.Builder, com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder> 
          getKafkaFieldBuilder() {
        if (kafkaBuilder_ == null) {
          kafkaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.KafkaMessageOptions, com.acme.glup.MetadataProto.KafkaMessageOptions.Builder, com.acme.glup.MetadataProto.KafkaMessageOptionsOrBuilder>(
                  getKafka(),
                  getParentForChildren(),
                  isClean());
          kafka_ = null;
        }
        return kafkaBuilder_;
      }

      private com.acme.glup.MetadataProto.HDFSOptions hdfs_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSOptions, com.acme.glup.MetadataProto.HDFSOptions.Builder, com.acme.glup.MetadataProto.HDFSOptionsOrBuilder> hdfsBuilder_;
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       * @return Whether the hdfs field is set.
       */
      public boolean hasHdfs() {
        return hdfsBuilder_ != null || hdfs_ != null;
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       * @return The hdfs.
       */
      public com.acme.glup.MetadataProto.HDFSOptions getHdfs() {
        if (hdfsBuilder_ == null) {
          return hdfs_ == null ? com.acme.glup.MetadataProto.HDFSOptions.getDefaultInstance() : hdfs_;
        } else {
          return hdfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      public Builder setHdfs(com.acme.glup.MetadataProto.HDFSOptions value) {
        if (hdfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          hdfs_ = value;
          onChanged();
        } else {
          hdfsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      public Builder setHdfs(
          com.acme.glup.MetadataProto.HDFSOptions.Builder builderForValue) {
        if (hdfsBuilder_ == null) {
          hdfs_ = builderForValue.build();
          onChanged();
        } else {
          hdfsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      public Builder mergeHdfs(com.acme.glup.MetadataProto.HDFSOptions value) {
        if (hdfsBuilder_ == null) {
          if (hdfs_ != null) {
            hdfs_ =
              com.acme.glup.MetadataProto.HDFSOptions.newBuilder(hdfs_).mergeFrom(value).buildPartial();
          } else {
            hdfs_ = value;
          }
          onChanged();
        } else {
          hdfsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      public Builder clearHdfs() {
        if (hdfsBuilder_ == null) {
          hdfs_ = null;
          onChanged();
        } else {
          hdfs_ = null;
          hdfsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptions.Builder getHdfsBuilder() {
        
        onChanged();
        return getHdfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      public com.acme.glup.MetadataProto.HDFSOptionsOrBuilder getHdfsOrBuilder() {
        if (hdfsBuilder_ != null) {
          return hdfsBuilder_.getMessageOrBuilder();
        } else {
          return hdfs_ == null ?
              com.acme.glup.MetadataProto.HDFSOptions.getDefaultInstance() : hdfs_;
        }
      }
      /**
       * <pre>
       * hdfs import settings
       * </pre>
       *
       * <code>.Acme.Glup.HDFSOptions hdfs = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.HDFSOptions, com.acme.glup.MetadataProto.HDFSOptions.Builder, com.acme.glup.MetadataProto.HDFSOptionsOrBuilder> 
          getHdfsFieldBuilder() {
        if (hdfsBuilder_ == null) {
          hdfsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.HDFSOptions, com.acme.glup.MetadataProto.HDFSOptions.Builder, com.acme.glup.MetadataProto.HDFSOptionsOrBuilder>(
                  getHdfs(),
                  getParentForChildren(),
                  isClean());
          hdfs_ = null;
        }
        return hdfsBuilder_;
      }

      private int samplingPct_ ;
      /**
       * <pre>
       * field samplimg rate
       * </pre>
       *
       * <code>uint32 sampling_pct = 3;</code>
       * @return The samplingPct.
       */
      public int getSamplingPct() {
        return samplingPct_;
      }
      /**
       * <pre>
       * field samplimg rate
       * </pre>
       *
       * <code>uint32 sampling_pct = 3;</code>
       * @param value The samplingPct to set.
       * @return This builder for chaining.
       */
      public Builder setSamplingPct(int value) {
        
        samplingPct_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * field samplimg rate
       * </pre>
       *
       * <code>uint32 sampling_pct = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSamplingPct() {
        
        samplingPct_ = 0;
        onChanged();
        return this;
      }

      private int preprodSamplingPct_ ;
      /**
       * <pre>
       * preprod message sampling rate
       * </pre>
       *
       * <code>uint32 preprod_sampling_pct = 4;</code>
       * @return The preprodSamplingPct.
       */
      public int getPreprodSamplingPct() {
        return preprodSamplingPct_;
      }
      /**
       * <pre>
       * preprod message sampling rate
       * </pre>
       *
       * <code>uint32 preprod_sampling_pct = 4;</code>
       * @param value The preprodSamplingPct to set.
       * @return This builder for chaining.
       */
      public Builder setPreprodSamplingPct(int value) {
        
        preprodSamplingPct_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * preprod message sampling rate
       * </pre>
       *
       * <code>uint32 preprod_sampling_pct = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreprodSamplingPct() {
        
        preprodSamplingPct_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<com.acme.glup.MetadataProto.DataSet> dataset_ =
        java.util.Collections.emptyList();
      private void ensureDatasetIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          dataset_ = new java.util.ArrayList<com.acme.glup.MetadataProto.DataSet>(dataset_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.DataSet, com.acme.glup.MetadataProto.DataSet.Builder, com.acme.glup.MetadataProto.DataSetOrBuilder> datasetBuilder_;

      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.DataSet> getDatasetList() {
        if (datasetBuilder_ == null) {
          return java.util.Collections.unmodifiableList(dataset_);
        } else {
          return datasetBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public int getDatasetCount() {
        if (datasetBuilder_ == null) {
          return dataset_.size();
        } else {
          return datasetBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public com.acme.glup.MetadataProto.DataSet getDataset(int index) {
        if (datasetBuilder_ == null) {
          return dataset_.get(index);
        } else {
          return datasetBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder setDataset(
          int index, com.acme.glup.MetadataProto.DataSet value) {
        if (datasetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDatasetIsMutable();
          dataset_.set(index, value);
          onChanged();
        } else {
          datasetBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder setDataset(
          int index, com.acme.glup.MetadataProto.DataSet.Builder builderForValue) {
        if (datasetBuilder_ == null) {
          ensureDatasetIsMutable();
          dataset_.set(index, builderForValue.build());
          onChanged();
        } else {
          datasetBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder addDataset(com.acme.glup.MetadataProto.DataSet value) {
        if (datasetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDatasetIsMutable();
          dataset_.add(value);
          onChanged();
        } else {
          datasetBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder addDataset(
          int index, com.acme.glup.MetadataProto.DataSet value) {
        if (datasetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDatasetIsMutable();
          dataset_.add(index, value);
          onChanged();
        } else {
          datasetBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder addDataset(
          com.acme.glup.MetadataProto.DataSet.Builder builderForValue) {
        if (datasetBuilder_ == null) {
          ensureDatasetIsMutable();
          dataset_.add(builderForValue.build());
          onChanged();
        } else {
          datasetBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder addDataset(
          int index, com.acme.glup.MetadataProto.DataSet.Builder builderForValue) {
        if (datasetBuilder_ == null) {
          ensureDatasetIsMutable();
          dataset_.add(index, builderForValue.build());
          onChanged();
        } else {
          datasetBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder addAllDataset(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.DataSet> values) {
        if (datasetBuilder_ == null) {
          ensureDatasetIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, dataset_);
          onChanged();
        } else {
          datasetBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder clearDataset() {
        if (datasetBuilder_ == null) {
          dataset_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          datasetBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public Builder removeDataset(int index) {
        if (datasetBuilder_ == null) {
          ensureDatasetIsMutable();
          dataset_.remove(index);
          onChanged();
        } else {
          datasetBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public com.acme.glup.MetadataProto.DataSet.Builder getDatasetBuilder(
          int index) {
        return getDatasetFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public com.acme.glup.MetadataProto.DataSetOrBuilder getDatasetOrBuilder(
          int index) {
        if (datasetBuilder_ == null) {
          return dataset_.get(index);  } else {
          return datasetBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.DataSetOrBuilder> 
           getDatasetOrBuilderList() {
        if (datasetBuilder_ != null) {
          return datasetBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(dataset_);
        }
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public com.acme.glup.MetadataProto.DataSet.Builder addDatasetBuilder() {
        return getDatasetFieldBuilder().addBuilder(
            com.acme.glup.MetadataProto.DataSet.getDefaultInstance());
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public com.acme.glup.MetadataProto.DataSet.Builder addDatasetBuilder(
          int index) {
        return getDatasetFieldBuilder().addBuilder(
            index, com.acme.glup.MetadataProto.DataSet.getDefaultInstance());
      }
      /**
       * <pre>
       * dataset definition
       * </pre>
       *
       * <code>repeated .Acme.Glup.DataSet dataset = 5;</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.DataSet.Builder> 
           getDatasetBuilderList() {
        return getDatasetFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.DataSet, com.acme.glup.MetadataProto.DataSet.Builder, com.acme.glup.MetadataProto.DataSetOrBuilder> 
          getDatasetFieldBuilder() {
        if (datasetBuilder_ == null) {
          datasetBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.DataSet, com.acme.glup.MetadataProto.DataSet.Builder, com.acme.glup.MetadataProto.DataSetOrBuilder>(
                  dataset_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          dataset_ = null;
        }
        return datasetBuilder_;
      }

      private int messageSamplingPct_ ;
      /**
       * <pre>
       * message sampling rate
       * </pre>
       *
       * <code>uint32 message_sampling_pct = 6;</code>
       * @return The messageSamplingPct.
       */
      public int getMessageSamplingPct() {
        return messageSamplingPct_;
      }
      /**
       * <pre>
       * message sampling rate
       * </pre>
       *
       * <code>uint32 message_sampling_pct = 6;</code>
       * @param value The messageSamplingPct to set.
       * @return This builder for chaining.
       */
      public Builder setMessageSamplingPct(int value) {
        
        messageSamplingPct_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * message sampling rate
       * </pre>
       *
       * <code>uint32 message_sampling_pct = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessageSamplingPct() {
        
        messageSamplingPct_ = 0;
        onChanged();
        return this;
      }

      private com.acme.glup.MetadataProto.ProducerTransportOptions producers_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.ProducerTransportOptions, com.acme.glup.MetadataProto.ProducerTransportOptions.Builder, com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder> producersBuilder_;
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       * @return Whether the producers field is set.
       */
      public boolean hasProducers() {
        return producersBuilder_ != null || producers_ != null;
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       * @return The producers.
       */
      public com.acme.glup.MetadataProto.ProducerTransportOptions getProducers() {
        if (producersBuilder_ == null) {
          return producers_ == null ? com.acme.glup.MetadataProto.ProducerTransportOptions.getDefaultInstance() : producers_;
        } else {
          return producersBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      public Builder setProducers(com.acme.glup.MetadataProto.ProducerTransportOptions value) {
        if (producersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          producers_ = value;
          onChanged();
        } else {
          producersBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      public Builder setProducers(
          com.acme.glup.MetadataProto.ProducerTransportOptions.Builder builderForValue) {
        if (producersBuilder_ == null) {
          producers_ = builderForValue.build();
          onChanged();
        } else {
          producersBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      public Builder mergeProducers(com.acme.glup.MetadataProto.ProducerTransportOptions value) {
        if (producersBuilder_ == null) {
          if (producers_ != null) {
            producers_ =
              com.acme.glup.MetadataProto.ProducerTransportOptions.newBuilder(producers_).mergeFrom(value).buildPartial();
          } else {
            producers_ = value;
          }
          onChanged();
        } else {
          producersBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      public Builder clearProducers() {
        if (producersBuilder_ == null) {
          producers_ = null;
          onChanged();
        } else {
          producers_ = null;
          producersBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      public com.acme.glup.MetadataProto.ProducerTransportOptions.Builder getProducersBuilder() {
        
        onChanged();
        return getProducersFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      public com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder getProducersOrBuilder() {
        if (producersBuilder_ != null) {
          return producersBuilder_.getMessageOrBuilder();
        } else {
          return producers_ == null ?
              com.acme.glup.MetadataProto.ProducerTransportOptions.getDefaultInstance() : producers_;
        }
      }
      /**
       * <pre>
       * producer(s) to use
       * </pre>
       *
       * <code>.Acme.Glup.ProducerTransportOptions producers = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.ProducerTransportOptions, com.acme.glup.MetadataProto.ProducerTransportOptions.Builder, com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder> 
          getProducersFieldBuilder() {
        if (producersBuilder_ == null) {
          producersBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.ProducerTransportOptions, com.acme.glup.MetadataProto.ProducerTransportOptions.Builder, com.acme.glup.MetadataProto.ProducerTransportOptionsOrBuilder>(
                  getProducers(),
                  getParentForChildren(),
                  isClean());
          producers_ = null;
        }
        return producersBuilder_;
      }

      private com.acme.glup.MetadataProto.PropertyOptions properties_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.PropertyOptions, com.acme.glup.MetadataProto.PropertyOptions.Builder, com.acme.glup.MetadataProto.PropertyOptionsOrBuilder> propertiesBuilder_;
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       * @return Whether the properties field is set.
       */
      public boolean hasProperties() {
        return propertiesBuilder_ != null || properties_ != null;
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       * @return The properties.
       */
      public com.acme.glup.MetadataProto.PropertyOptions getProperties() {
        if (propertiesBuilder_ == null) {
          return properties_ == null ? com.acme.glup.MetadataProto.PropertyOptions.getDefaultInstance() : properties_;
        } else {
          return propertiesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      public Builder setProperties(com.acme.glup.MetadataProto.PropertyOptions value) {
        if (propertiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          properties_ = value;
          onChanged();
        } else {
          propertiesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      public Builder setProperties(
          com.acme.glup.MetadataProto.PropertyOptions.Builder builderForValue) {
        if (propertiesBuilder_ == null) {
          properties_ = builderForValue.build();
          onChanged();
        } else {
          propertiesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      public Builder mergeProperties(com.acme.glup.MetadataProto.PropertyOptions value) {
        if (propertiesBuilder_ == null) {
          if (properties_ != null) {
            properties_ =
              com.acme.glup.MetadataProto.PropertyOptions.newBuilder(properties_).mergeFrom(value).buildPartial();
          } else {
            properties_ = value;
          }
          onChanged();
        } else {
          propertiesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      public Builder clearProperties() {
        if (propertiesBuilder_ == null) {
          properties_ = null;
          onChanged();
        } else {
          properties_ = null;
          propertiesBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      public com.acme.glup.MetadataProto.PropertyOptions.Builder getPropertiesBuilder() {
        
        onChanged();
        return getPropertiesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      public com.acme.glup.MetadataProto.PropertyOptionsOrBuilder getPropertiesOrBuilder() {
        if (propertiesBuilder_ != null) {
          return propertiesBuilder_.getMessageOrBuilder();
        } else {
          return properties_ == null ?
              com.acme.glup.MetadataProto.PropertyOptions.getDefaultInstance() : properties_;
        }
      }
      /**
       * <pre>
       * additional glup properties
       * </pre>
       *
       * <code>.Acme.Glup.PropertyOptions properties = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.PropertyOptions, com.acme.glup.MetadataProto.PropertyOptions.Builder, com.acme.glup.MetadataProto.PropertyOptionsOrBuilder> 
          getPropertiesFieldBuilder() {
        if (propertiesBuilder_ == null) {
          propertiesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.PropertyOptions, com.acme.glup.MetadataProto.PropertyOptions.Builder, com.acme.glup.MetadataProto.PropertyOptionsOrBuilder>(
                  getProperties(),
                  getParentForChildren(),
                  isClean());
          properties_ = null;
        }
        return propertiesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.GlupOptions)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.GlupOptions)
    private static final com.acme.glup.MetadataProto.GlupOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.GlupOptions();
    }

    public static com.acme.glup.MetadataProto.GlupOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GlupOptions>
        PARSER = new com.google.protobuf.AbstractParser<GlupOptions>() {
      @java.lang.Override
      public GlupOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GlupOptions(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GlupOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GlupOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.GlupOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GlupFieldOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.GlupFieldOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool sampled = 1;</code>
     * @return The sampled.
     */
    boolean getSampled();

    /**
     * <code>bool sampling_key = 2;</code>
     * @return The samplingKey.
     */
    boolean getSamplingKey();

    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @return A list containing the disabledPlatform.
     */
    java.util.List<com.acme.glup.MetadataProto.Platform> getDisabledPlatformList();
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @return The count of disabledPlatform.
     */
    int getDisabledPlatformCount();
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @param index The index of the element to return.
     * @return The disabledPlatform at the given index.
     */
    com.acme.glup.MetadataProto.Platform getDisabledPlatform(int index);
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @return A list containing the enum numeric values on the wire for disabledPlatform.
     */
    java.util.List<java.lang.Integer>
    getDisabledPlatformValueList();
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of disabledPlatform at the given index.
     */
    int getDisabledPlatformValue(int index);

    /**
     * <code>bool should_clean_pii = 4;</code>
     * @return The shouldCleanPii.
     */
    boolean getShouldCleanPii();

    /**
     * <pre>
     * The next fields are part of the Try&amp;Wipe hackathon 2018 project:
     * When true, this field can not be used by GLUP consumers anymore
     * </pre>
     *
     * <code>bool pending_deletion = 5;</code>
     * @return The pendingDeletion.
     */
    boolean getPendingDeletion();

    /**
     * <pre>
     * Date at which the field has been added to the schema.
     * </pre>
     *
     * <code>string added_at = 6;</code>
     * @return The addedAt.
     */
    java.lang.String getAddedAt();
    /**
     * <pre>
     * Date at which the field has been added to the schema.
     * </pre>
     *
     * <code>string added_at = 6;</code>
     * @return The bytes for addedAt.
     */
    com.google.protobuf.ByteString
        getAddedAtBytes();
  }
  /**
   * <pre>
   * It describes glup fields options:
   *disabled_platform =&gt; list of platform where the field will never be sent
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.GlupFieldOptions}
   */
  public  static final class GlupFieldOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.GlupFieldOptions)
      GlupFieldOptionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GlupFieldOptions.newBuilder() to construct.
    private GlupFieldOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GlupFieldOptions() {
      disabledPlatform_ = java.util.Collections.emptyList();
      addedAt_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GlupFieldOptions();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GlupFieldOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              sampled_ = input.readBool();
              break;
            }
            case 16: {

              samplingKey_ = input.readBool();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                disabledPlatform_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              disabledPlatform_.add(rawValue);
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  disabledPlatform_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                disabledPlatform_.add(rawValue);
              }
              input.popLimit(oldLimit);
              break;
            }
            case 32: {

              shouldCleanPii_ = input.readBool();
              break;
            }
            case 40: {

              pendingDeletion_ = input.readBool();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              addedAt_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          disabledPlatform_ = java.util.Collections.unmodifiableList(disabledPlatform_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupFieldOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupFieldOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.GlupFieldOptions.class, com.acme.glup.MetadataProto.GlupFieldOptions.Builder.class);
    }

    public static final int SAMPLED_FIELD_NUMBER = 1;
    private boolean sampled_;
    /**
     * <code>bool sampled = 1;</code>
     * @return The sampled.
     */
    public boolean getSampled() {
      return sampled_;
    }

    public static final int SAMPLING_KEY_FIELD_NUMBER = 2;
    private boolean samplingKey_;
    /**
     * <code>bool sampling_key = 2;</code>
     * @return The samplingKey.
     */
    public boolean getSamplingKey() {
      return samplingKey_;
    }

    public static final int DISABLED_PLATFORM_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> disabledPlatform_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, com.acme.glup.MetadataProto.Platform> disabledPlatform_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, com.acme.glup.MetadataProto.Platform>() {
              public com.acme.glup.MetadataProto.Platform convert(java.lang.Integer from) {
                @SuppressWarnings("deprecation")
                com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(from);
                return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @return A list containing the disabledPlatform.
     */
    public java.util.List<com.acme.glup.MetadataProto.Platform> getDisabledPlatformList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, com.acme.glup.MetadataProto.Platform>(disabledPlatform_, disabledPlatform_converter_);
    }
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @return The count of disabledPlatform.
     */
    public int getDisabledPlatformCount() {
      return disabledPlatform_.size();
    }
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @param index The index of the element to return.
     * @return The disabledPlatform at the given index.
     */
    public com.acme.glup.MetadataProto.Platform getDisabledPlatform(int index) {
      return disabledPlatform_converter_.convert(disabledPlatform_.get(index));
    }
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @return A list containing the enum numeric values on the wire for disabledPlatform.
     */
    public java.util.List<java.lang.Integer>
    getDisabledPlatformValueList() {
      return disabledPlatform_;
    }
    /**
     * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of disabledPlatform at the given index.
     */
    public int getDisabledPlatformValue(int index) {
      return disabledPlatform_.get(index);
    }
    private int disabledPlatformMemoizedSerializedSize;

    public static final int SHOULD_CLEAN_PII_FIELD_NUMBER = 4;
    private boolean shouldCleanPii_;
    /**
     * <code>bool should_clean_pii = 4;</code>
     * @return The shouldCleanPii.
     */
    public boolean getShouldCleanPii() {
      return shouldCleanPii_;
    }

    public static final int PENDING_DELETION_FIELD_NUMBER = 5;
    private boolean pendingDeletion_;
    /**
     * <pre>
     * The next fields are part of the Try&amp;Wipe hackathon 2018 project:
     * When true, this field can not be used by GLUP consumers anymore
     * </pre>
     *
     * <code>bool pending_deletion = 5;</code>
     * @return The pendingDeletion.
     */
    public boolean getPendingDeletion() {
      return pendingDeletion_;
    }

    public static final int ADDED_AT_FIELD_NUMBER = 6;
    private volatile java.lang.Object addedAt_;
    /**
     * <pre>
     * Date at which the field has been added to the schema.
     * </pre>
     *
     * <code>string added_at = 6;</code>
     * @return The addedAt.
     */
    public java.lang.String getAddedAt() {
      java.lang.Object ref = addedAt_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        addedAt_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Date at which the field has been added to the schema.
     * </pre>
     *
     * <code>string added_at = 6;</code>
     * @return The bytes for addedAt.
     */
    public com.google.protobuf.ByteString
        getAddedAtBytes() {
      java.lang.Object ref = addedAt_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        addedAt_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (sampled_ != false) {
        output.writeBool(1, sampled_);
      }
      if (samplingKey_ != false) {
        output.writeBool(2, samplingKey_);
      }
      if (getDisabledPlatformList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(disabledPlatformMemoizedSerializedSize);
      }
      for (int i = 0; i < disabledPlatform_.size(); i++) {
        output.writeEnumNoTag(disabledPlatform_.get(i));
      }
      if (shouldCleanPii_ != false) {
        output.writeBool(4, shouldCleanPii_);
      }
      if (pendingDeletion_ != false) {
        output.writeBool(5, pendingDeletion_);
      }
      if (!getAddedAtBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, addedAt_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (sampled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, sampled_);
      }
      if (samplingKey_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, samplingKey_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < disabledPlatform_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(disabledPlatform_.get(i));
        }
        size += dataSize;
        if (!getDisabledPlatformList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }disabledPlatformMemoizedSerializedSize = dataSize;
      }
      if (shouldCleanPii_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, shouldCleanPii_);
      }
      if (pendingDeletion_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, pendingDeletion_);
      }
      if (!getAddedAtBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, addedAt_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.GlupFieldOptions)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.GlupFieldOptions other = (com.acme.glup.MetadataProto.GlupFieldOptions) obj;

      if (getSampled()
          != other.getSampled()) return false;
      if (getSamplingKey()
          != other.getSamplingKey()) return false;
      if (!disabledPlatform_.equals(other.disabledPlatform_)) return false;
      if (getShouldCleanPii()
          != other.getShouldCleanPii()) return false;
      if (getPendingDeletion()
          != other.getPendingDeletion()) return false;
      if (!getAddedAt()
          .equals(other.getAddedAt())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SAMPLED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSampled());
      hash = (37 * hash) + SAMPLING_KEY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSamplingKey());
      if (getDisabledPlatformCount() > 0) {
        hash = (37 * hash) + DISABLED_PLATFORM_FIELD_NUMBER;
        hash = (53 * hash) + disabledPlatform_.hashCode();
      }
      hash = (37 * hash) + SHOULD_CLEAN_PII_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getShouldCleanPii());
      hash = (37 * hash) + PENDING_DELETION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getPendingDeletion());
      hash = (37 * hash) + ADDED_AT_FIELD_NUMBER;
      hash = (53 * hash) + getAddedAt().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.GlupFieldOptions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.GlupFieldOptions prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * It describes glup fields options:
     *disabled_platform =&gt; list of platform where the field will never be sent
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.GlupFieldOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.GlupFieldOptions)
        com.acme.glup.MetadataProto.GlupFieldOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupFieldOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupFieldOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.GlupFieldOptions.class, com.acme.glup.MetadataProto.GlupFieldOptions.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.GlupFieldOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sampled_ = false;

        samplingKey_ = false;

        disabledPlatform_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        shouldCleanPii_ = false;

        pendingDeletion_ = false;

        addedAt_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_GlupFieldOptions_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.GlupFieldOptions getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.GlupFieldOptions.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.GlupFieldOptions build() {
        com.acme.glup.MetadataProto.GlupFieldOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.GlupFieldOptions buildPartial() {
        com.acme.glup.MetadataProto.GlupFieldOptions result = new com.acme.glup.MetadataProto.GlupFieldOptions(this);
        int from_bitField0_ = bitField0_;
        result.sampled_ = sampled_;
        result.samplingKey_ = samplingKey_;
        if (((bitField0_ & 0x00000001) != 0)) {
          disabledPlatform_ = java.util.Collections.unmodifiableList(disabledPlatform_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.disabledPlatform_ = disabledPlatform_;
        result.shouldCleanPii_ = shouldCleanPii_;
        result.pendingDeletion_ = pendingDeletion_;
        result.addedAt_ = addedAt_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.GlupFieldOptions) {
          return mergeFrom((com.acme.glup.MetadataProto.GlupFieldOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.GlupFieldOptions other) {
        if (other == com.acme.glup.MetadataProto.GlupFieldOptions.getDefaultInstance()) return this;
        if (other.getSampled() != false) {
          setSampled(other.getSampled());
        }
        if (other.getSamplingKey() != false) {
          setSamplingKey(other.getSamplingKey());
        }
        if (!other.disabledPlatform_.isEmpty()) {
          if (disabledPlatform_.isEmpty()) {
            disabledPlatform_ = other.disabledPlatform_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDisabledPlatformIsMutable();
            disabledPlatform_.addAll(other.disabledPlatform_);
          }
          onChanged();
        }
        if (other.getShouldCleanPii() != false) {
          setShouldCleanPii(other.getShouldCleanPii());
        }
        if (other.getPendingDeletion() != false) {
          setPendingDeletion(other.getPendingDeletion());
        }
        if (!other.getAddedAt().isEmpty()) {
          addedAt_ = other.addedAt_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.GlupFieldOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.GlupFieldOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean sampled_ ;
      /**
       * <code>bool sampled = 1;</code>
       * @return The sampled.
       */
      public boolean getSampled() {
        return sampled_;
      }
      /**
       * <code>bool sampled = 1;</code>
       * @param value The sampled to set.
       * @return This builder for chaining.
       */
      public Builder setSampled(boolean value) {
        
        sampled_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool sampled = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSampled() {
        
        sampled_ = false;
        onChanged();
        return this;
      }

      private boolean samplingKey_ ;
      /**
       * <code>bool sampling_key = 2;</code>
       * @return The samplingKey.
       */
      public boolean getSamplingKey() {
        return samplingKey_;
      }
      /**
       * <code>bool sampling_key = 2;</code>
       * @param value The samplingKey to set.
       * @return This builder for chaining.
       */
      public Builder setSamplingKey(boolean value) {
        
        samplingKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool sampling_key = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSamplingKey() {
        
        samplingKey_ = false;
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> disabledPlatform_ =
        java.util.Collections.emptyList();
      private void ensureDisabledPlatformIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          disabledPlatform_ = new java.util.ArrayList<java.lang.Integer>(disabledPlatform_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @return A list containing the disabledPlatform.
       */
      public java.util.List<com.acme.glup.MetadataProto.Platform> getDisabledPlatformList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, com.acme.glup.MetadataProto.Platform>(disabledPlatform_, disabledPlatform_converter_);
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @return The count of disabledPlatform.
       */
      public int getDisabledPlatformCount() {
        return disabledPlatform_.size();
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param index The index of the element to return.
       * @return The disabledPlatform at the given index.
       */
      public com.acme.glup.MetadataProto.Platform getDisabledPlatform(int index) {
        return disabledPlatform_converter_.convert(disabledPlatform_.get(index));
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param index The index to set the value at.
       * @param value The disabledPlatform to set.
       * @return This builder for chaining.
       */
      public Builder setDisabledPlatform(
          int index, com.acme.glup.MetadataProto.Platform value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDisabledPlatformIsMutable();
        disabledPlatform_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param value The disabledPlatform to add.
       * @return This builder for chaining.
       */
      public Builder addDisabledPlatform(com.acme.glup.MetadataProto.Platform value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDisabledPlatformIsMutable();
        disabledPlatform_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param values The disabledPlatform to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisabledPlatform(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.Platform> values) {
        ensureDisabledPlatformIsMutable();
        for (com.acme.glup.MetadataProto.Platform value : values) {
          disabledPlatform_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisabledPlatform() {
        disabledPlatform_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @return A list containing the enum numeric values on the wire for disabledPlatform.
       */
      public java.util.List<java.lang.Integer>
      getDisabledPlatformValueList() {
        return java.util.Collections.unmodifiableList(disabledPlatform_);
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of disabledPlatform at the given index.
       */
      public int getDisabledPlatformValue(int index) {
        return disabledPlatform_.get(index);
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of disabledPlatform at the given index.
       * @return This builder for chaining.
       */
      public Builder setDisabledPlatformValue(
          int index, int value) {
        ensureDisabledPlatformIsMutable();
        disabledPlatform_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param value The enum numeric value on the wire for disabledPlatform to add.
       * @return This builder for chaining.
       */
      public Builder addDisabledPlatformValue(int value) {
        ensureDisabledPlatformIsMutable();
        disabledPlatform_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .Acme.Glup.Platform disabled_platform = 3;</code>
       * @param values The enum numeric values on the wire for disabledPlatform to add.
       * @return This builder for chaining.
       */
      public Builder addAllDisabledPlatformValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureDisabledPlatformIsMutable();
        for (int value : values) {
          disabledPlatform_.add(value);
        }
        onChanged();
        return this;
      }

      private boolean shouldCleanPii_ ;
      /**
       * <code>bool should_clean_pii = 4;</code>
       * @return The shouldCleanPii.
       */
      public boolean getShouldCleanPii() {
        return shouldCleanPii_;
      }
      /**
       * <code>bool should_clean_pii = 4;</code>
       * @param value The shouldCleanPii to set.
       * @return This builder for chaining.
       */
      public Builder setShouldCleanPii(boolean value) {
        
        shouldCleanPii_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool should_clean_pii = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearShouldCleanPii() {
        
        shouldCleanPii_ = false;
        onChanged();
        return this;
      }

      private boolean pendingDeletion_ ;
      /**
       * <pre>
       * The next fields are part of the Try&amp;Wipe hackathon 2018 project:
       * When true, this field can not be used by GLUP consumers anymore
       * </pre>
       *
       * <code>bool pending_deletion = 5;</code>
       * @return The pendingDeletion.
       */
      public boolean getPendingDeletion() {
        return pendingDeletion_;
      }
      /**
       * <pre>
       * The next fields are part of the Try&amp;Wipe hackathon 2018 project:
       * When true, this field can not be used by GLUP consumers anymore
       * </pre>
       *
       * <code>bool pending_deletion = 5;</code>
       * @param value The pendingDeletion to set.
       * @return This builder for chaining.
       */
      public Builder setPendingDeletion(boolean value) {
        
        pendingDeletion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The next fields are part of the Try&amp;Wipe hackathon 2018 project:
       * When true, this field can not be used by GLUP consumers anymore
       * </pre>
       *
       * <code>bool pending_deletion = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPendingDeletion() {
        
        pendingDeletion_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object addedAt_ = "";
      /**
       * <pre>
       * Date at which the field has been added to the schema.
       * </pre>
       *
       * <code>string added_at = 6;</code>
       * @return The addedAt.
       */
      public java.lang.String getAddedAt() {
        java.lang.Object ref = addedAt_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          addedAt_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Date at which the field has been added to the schema.
       * </pre>
       *
       * <code>string added_at = 6;</code>
       * @return The bytes for addedAt.
       */
      public com.google.protobuf.ByteString
          getAddedAtBytes() {
        java.lang.Object ref = addedAt_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          addedAt_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Date at which the field has been added to the schema.
       * </pre>
       *
       * <code>string added_at = 6;</code>
       * @param value The addedAt to set.
       * @return This builder for chaining.
       */
      public Builder setAddedAt(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        addedAt_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Date at which the field has been added to the schema.
       * </pre>
       *
       * <code>string added_at = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddedAt() {
        
        addedAt_ = getDefaultInstance().getAddedAt();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Date at which the field has been added to the schema.
       * </pre>
       *
       * <code>string added_at = 6;</code>
       * @param value The bytes for addedAt to set.
       * @return This builder for chaining.
       */
      public Builder setAddedAtBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        addedAt_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.GlupFieldOptions)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.GlupFieldOptions)
    private static final com.acme.glup.MetadataProto.GlupFieldOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.GlupFieldOptions();
    }

    public static com.acme.glup.MetadataProto.GlupFieldOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GlupFieldOptions>
        PARSER = new com.google.protobuf.AbstractParser<GlupFieldOptions>() {
      @java.lang.Override
      public GlupFieldOptions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GlupFieldOptions(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GlupFieldOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GlupFieldOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.GlupFieldOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JsonMappingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.JsonMapping)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * alias to use for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * alias to use for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * do we have to skip this field from json serialization
     * </pre>
     *
     * <code>bool skip = 2;</code>
     * @return The skip.
     */
    boolean getSkip();
  }
  /**
   * <pre>
   * This option is used when exposing a message to hive
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.JsonMapping}
   */
  public  static final class JsonMapping extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.JsonMapping)
      JsonMappingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JsonMapping.newBuilder() to construct.
    private JsonMapping(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private JsonMapping() {
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new JsonMapping();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private JsonMapping(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 16: {

              skip_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonMapping_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonMapping_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.JsonMapping.class, com.acme.glup.MetadataProto.JsonMapping.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * alias to use for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * alias to use for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SKIP_FIELD_NUMBER = 2;
    private boolean skip_;
    /**
     * <pre>
     * do we have to skip this field from json serialization
     * </pre>
     *
     * <code>bool skip = 2;</code>
     * @return The skip.
     */
    public boolean getSkip() {
      return skip_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (skip_ != false) {
        output.writeBool(2, skip_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (skip_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, skip_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.JsonMapping)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.JsonMapping other = (com.acme.glup.MetadataProto.JsonMapping) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getSkip()
          != other.getSkip()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + SKIP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSkip());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.JsonMapping parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.JsonMapping prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * This option is used when exposing a message to hive
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.JsonMapping}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.JsonMapping)
        com.acme.glup.MetadataProto.JsonMappingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonMapping_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonMapping_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.JsonMapping.class, com.acme.glup.MetadataProto.JsonMapping.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.JsonMapping.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        skip_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonMapping_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.JsonMapping getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.JsonMapping.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.JsonMapping build() {
        com.acme.glup.MetadataProto.JsonMapping result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.JsonMapping buildPartial() {
        com.acme.glup.MetadataProto.JsonMapping result = new com.acme.glup.MetadataProto.JsonMapping(this);
        result.name_ = name_;
        result.skip_ = skip_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.JsonMapping) {
          return mergeFrom((com.acme.glup.MetadataProto.JsonMapping)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.JsonMapping other) {
        if (other == com.acme.glup.MetadataProto.JsonMapping.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getSkip() != false) {
          setSkip(other.getSkip());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.JsonMapping parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.JsonMapping) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * alias to use for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * alias to use for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * alias to use for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * alias to use for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * alias to use for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private boolean skip_ ;
      /**
       * <pre>
       * do we have to skip this field from json serialization
       * </pre>
       *
       * <code>bool skip = 2;</code>
       * @return The skip.
       */
      public boolean getSkip() {
        return skip_;
      }
      /**
       * <pre>
       * do we have to skip this field from json serialization
       * </pre>
       *
       * <code>bool skip = 2;</code>
       * @param value The skip to set.
       * @return This builder for chaining.
       */
      public Builder setSkip(boolean value) {
        
        skip_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * do we have to skip this field from json serialization
       * </pre>
       *
       * <code>bool skip = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSkip() {
        
        skip_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.JsonMapping)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.JsonMapping)
    private static final com.acme.glup.MetadataProto.JsonMapping DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.JsonMapping();
    }

    public static com.acme.glup.MetadataProto.JsonMapping getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<JsonMapping>
        PARSER = new com.google.protobuf.AbstractParser<JsonMapping>() {
      @java.lang.Override
      public JsonMapping parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new JsonMapping(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<JsonMapping> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<JsonMapping> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.JsonMapping getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JsonAliasOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.JsonAlias)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * alias for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * alias for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * When the field type is an enum in protobuf, the value of this field in
     * json is the id of the field of the enum (an integer value) rather
     * than its name.
     * </pre>
     *
     * <code>bool use_enum_field_id = 3;</code>
     * @return The useEnumFieldId.
     */
    boolean getUseEnumFieldId();
  }
  /**
   * <pre>
   * This option is used by the transcoder
   * Note that both options could be merged, see RIVERS-1894
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.JsonAlias}
   */
  public  static final class JsonAlias extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.JsonAlias)
      JsonAliasOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JsonAlias.newBuilder() to construct.
    private JsonAlias(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private JsonAlias() {
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new JsonAlias();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private JsonAlias(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 24: {

              useEnumFieldId_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonAlias_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonAlias_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.JsonAlias.class, com.acme.glup.MetadataProto.JsonAlias.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * alias for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * alias for json serialization
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USE_ENUM_FIELD_ID_FIELD_NUMBER = 3;
    private boolean useEnumFieldId_;
    /**
     * <pre>
     * When the field type is an enum in protobuf, the value of this field in
     * json is the id of the field of the enum (an integer value) rather
     * than its name.
     * </pre>
     *
     * <code>bool use_enum_field_id = 3;</code>
     * @return The useEnumFieldId.
     */
    public boolean getUseEnumFieldId() {
      return useEnumFieldId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (useEnumFieldId_ != false) {
        output.writeBool(3, useEnumFieldId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (useEnumFieldId_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, useEnumFieldId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.JsonAlias)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.JsonAlias other = (com.acme.glup.MetadataProto.JsonAlias) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getUseEnumFieldId()
          != other.getUseEnumFieldId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + USE_ENUM_FIELD_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getUseEnumFieldId());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.JsonAlias parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.JsonAlias prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * This option is used by the transcoder
     * Note that both options could be merged, see RIVERS-1894
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.JsonAlias}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.JsonAlias)
        com.acme.glup.MetadataProto.JsonAliasOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonAlias_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonAlias_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.JsonAlias.class, com.acme.glup.MetadataProto.JsonAlias.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.JsonAlias.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        useEnumFieldId_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_JsonAlias_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.JsonAlias getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.JsonAlias.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.JsonAlias build() {
        com.acme.glup.MetadataProto.JsonAlias result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.JsonAlias buildPartial() {
        com.acme.glup.MetadataProto.JsonAlias result = new com.acme.glup.MetadataProto.JsonAlias(this);
        result.name_ = name_;
        result.useEnumFieldId_ = useEnumFieldId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.JsonAlias) {
          return mergeFrom((com.acme.glup.MetadataProto.JsonAlias)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.JsonAlias other) {
        if (other == com.acme.glup.MetadataProto.JsonAlias.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getUseEnumFieldId() != false) {
          setUseEnumFieldId(other.getUseEnumFieldId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.JsonAlias parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.JsonAlias) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * alias for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * alias for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * alias for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * alias for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * alias for json serialization
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private boolean useEnumFieldId_ ;
      /**
       * <pre>
       * When the field type is an enum in protobuf, the value of this field in
       * json is the id of the field of the enum (an integer value) rather
       * than its name.
       * </pre>
       *
       * <code>bool use_enum_field_id = 3;</code>
       * @return The useEnumFieldId.
       */
      public boolean getUseEnumFieldId() {
        return useEnumFieldId_;
      }
      /**
       * <pre>
       * When the field type is an enum in protobuf, the value of this field in
       * json is the id of the field of the enum (an integer value) rather
       * than its name.
       * </pre>
       *
       * <code>bool use_enum_field_id = 3;</code>
       * @param value The useEnumFieldId to set.
       * @return This builder for chaining.
       */
      public Builder setUseEnumFieldId(boolean value) {
        
        useEnumFieldId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the field type is an enum in protobuf, the value of this field in
       * json is the id of the field of the enum (an integer value) rather
       * than its name.
       * </pre>
       *
       * <code>bool use_enum_field_id = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUseEnumFieldId() {
        
        useEnumFieldId_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.JsonAlias)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.JsonAlias)
    private static final com.acme.glup.MetadataProto.JsonAlias DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.JsonAlias();
    }

    public static com.acme.glup.MetadataProto.JsonAlias getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<JsonAlias>
        PARSER = new com.google.protobuf.AbstractParser<JsonAlias>() {
      @java.lang.Override
      public JsonAlias parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new JsonAlias(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<JsonAlias> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<JsonAlias> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.JsonAlias getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BaseGlupMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.BaseGlupMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Acme.Glup.Origin glup_origin = 1;</code>
     * @return Whether the glupOrigin field is set.
     */
    boolean hasGlupOrigin();
    /**
     * <code>.Acme.Glup.Origin glup_origin = 1;</code>
     * @return The glupOrigin.
     */
    com.acme.glup.MetadataProto.Origin getGlupOrigin();
    /**
     * <code>.Acme.Glup.Origin glup_origin = 1;</code>
     */
    com.acme.glup.MetadataProto.OriginOrBuilder getGlupOriginOrBuilder();

    /**
     * <code>.Acme.Glup.Partition partition = 2;</code>
     * @return Whether the partition field is set.
     */
    boolean hasPartition();
    /**
     * <code>.Acme.Glup.Partition partition = 2;</code>
     * @return The partition.
     */
    com.acme.glup.MetadataProto.Partition getPartition();
    /**
     * <code>.Acme.Glup.Partition partition = 2;</code>
     */
    com.acme.glup.MetadataProto.PartitionOrBuilder getPartitionOrBuilder();

    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */
    int getSetFieldsCount();
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */
    boolean containsSetFields(
        int key);
    /**
     * Use {@link #getSetFieldsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Boolean>
    getSetFields();
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.Boolean>
    getSetFieldsMap();
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    boolean getSetFieldsOrDefault(
        int key,
        boolean defaultValue);
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    boolean getSetFieldsOrThrow(
        int key);

    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> 
        getControlMessageList();
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    com.acme.glup.MetadataProto.ControlMessage.Watermark getControlMessage(int index);
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    int getControlMessageCount();
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    java.util.List<? extends com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
        getControlMessageOrBuilderList();
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getControlMessageOrBuilder(
        int index);
  }
  /**
   * <pre>
   * It is safe to read any GLUP message as a BaseGlupMessage 
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.BaseGlupMessage}
   */
  public  static final class BaseGlupMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.BaseGlupMessage)
      BaseGlupMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BaseGlupMessage.newBuilder() to construct.
    private BaseGlupMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BaseGlupMessage() {
      controlMessage_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BaseGlupMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BaseGlupMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.acme.glup.MetadataProto.Origin.Builder subBuilder = null;
              if (glupOrigin_ != null) {
                subBuilder = glupOrigin_.toBuilder();
              }
              glupOrigin_ = input.readMessage(com.acme.glup.MetadataProto.Origin.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(glupOrigin_);
                glupOrigin_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              com.acme.glup.MetadataProto.Partition.Builder subBuilder = null;
              if (partition_ != null) {
                subBuilder = partition_.toBuilder();
              }
              partition_ = input.readMessage(com.acme.glup.MetadataProto.Partition.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(partition_);
                partition_ = subBuilder.buildPartial();
              }

              break;
            }
            case 400082: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                setFields_ = com.google.protobuf.MapField.newMapField(
                    SetFieldsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Boolean>
              setFields__ = input.readMessage(
                  SetFieldsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              setFields_.getMutableMap().put(
                  setFields__.getKey(), setFields__.getValue());
              break;
            }
            case 16777210: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                controlMessage_ = new java.util.ArrayList<com.acme.glup.MetadataProto.ControlMessage.Watermark>();
                mutable_bitField0_ |= 0x00000002;
              }
              controlMessage_.add(
                  input.readMessage(com.acme.glup.MetadataProto.ControlMessage.Watermark.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          controlMessage_ = java.util.Collections.unmodifiableList(controlMessage_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_BaseGlupMessage_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 50010:
          return internalGetSetFields();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_BaseGlupMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.BaseGlupMessage.class, com.acme.glup.MetadataProto.BaseGlupMessage.Builder.class);
    }

    public static final int GLUP_ORIGIN_FIELD_NUMBER = 1;
    private com.acme.glup.MetadataProto.Origin glupOrigin_;
    /**
     * <code>.Acme.Glup.Origin glup_origin = 1;</code>
     * @return Whether the glupOrigin field is set.
     */
    public boolean hasGlupOrigin() {
      return glupOrigin_ != null;
    }
    /**
     * <code>.Acme.Glup.Origin glup_origin = 1;</code>
     * @return The glupOrigin.
     */
    public com.acme.glup.MetadataProto.Origin getGlupOrigin() {
      return glupOrigin_ == null ? com.acme.glup.MetadataProto.Origin.getDefaultInstance() : glupOrigin_;
    }
    /**
     * <code>.Acme.Glup.Origin glup_origin = 1;</code>
     */
    public com.acme.glup.MetadataProto.OriginOrBuilder getGlupOriginOrBuilder() {
      return getGlupOrigin();
    }

    public static final int PARTITION_FIELD_NUMBER = 2;
    private com.acme.glup.MetadataProto.Partition partition_;
    /**
     * <code>.Acme.Glup.Partition partition = 2;</code>
     * @return Whether the partition field is set.
     */
    public boolean hasPartition() {
      return partition_ != null;
    }
    /**
     * <code>.Acme.Glup.Partition partition = 2;</code>
     * @return The partition.
     */
    public com.acme.glup.MetadataProto.Partition getPartition() {
      return partition_ == null ? com.acme.glup.MetadataProto.Partition.getDefaultInstance() : partition_;
    }
    /**
     * <code>.Acme.Glup.Partition partition = 2;</code>
     */
    public com.acme.glup.MetadataProto.PartitionOrBuilder getPartitionOrBuilder() {
      return getPartition();
    }

    public static final int SET_FIELDS_FIELD_NUMBER = 50010;
    private static final class SetFieldsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Integer, java.lang.Boolean> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Integer, java.lang.Boolean>newDefaultInstance(
                  com.acme.glup.MetadataProto.internal_static_Acme_Glup_BaseGlupMessage_SetFieldsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.INT32,
                  0,
                  com.google.protobuf.WireFormat.FieldType.BOOL,
                  false);
    }
    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.Boolean> setFields_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
    internalGetSetFields() {
      if (setFields_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SetFieldsDefaultEntryHolder.defaultEntry);
      }
      return setFields_;
    }

    public int getSetFieldsCount() {
      return internalGetSetFields().getMap().size();
    }
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public boolean containsSetFields(
        int key) {
      
      return internalGetSetFields().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSetFieldsMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFields() {
      return getSetFieldsMap();
    }
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFieldsMap() {
      return internalGetSetFields().getMap();
    }
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public boolean getSetFieldsOrDefault(
        int key,
        boolean defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.Boolean> map =
          internalGetSetFields().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * ID 3 is reserved, ask rivers-team&#64; first.
     * ID 4 is reserved, ask rivers-team&#64; first.
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public boolean getSetFieldsOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.Boolean> map =
          internalGetSetFields().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CONTROL_MESSAGE_FIELD_NUMBER = 2097151;
    private java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> controlMessage_;
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> getControlMessageList() {
      return controlMessage_;
    }
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public java.util.List<? extends com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
        getControlMessageOrBuilderList() {
      return controlMessage_;
    }
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public int getControlMessageCount() {
      return controlMessage_.size();
    }
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public com.acme.glup.MetadataProto.ControlMessage.Watermark getControlMessage(int index) {
      return controlMessage_.get(index);
    }
    /**
     * <pre>
     * standard glup field
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getControlMessageOrBuilder(
        int index) {
      return controlMessage_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (glupOrigin_ != null) {
        output.writeMessage(1, getGlupOrigin());
      }
      if (partition_ != null) {
        output.writeMessage(2, getPartition());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeIntegerMapTo(
          output,
          internalGetSetFields(),
          SetFieldsDefaultEntryHolder.defaultEntry,
          50010);
      for (int i = 0; i < controlMessage_.size(); i++) {
        output.writeMessage(2097151, controlMessage_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (glupOrigin_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getGlupOrigin());
      }
      if (partition_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPartition());
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Boolean> entry
           : internalGetSetFields().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Boolean>
        setFields__ = SetFieldsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(50010, setFields__);
      }
      for (int i = 0; i < controlMessage_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2097151, controlMessage_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.BaseGlupMessage)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.BaseGlupMessage other = (com.acme.glup.MetadataProto.BaseGlupMessage) obj;

      if (hasGlupOrigin() != other.hasGlupOrigin()) return false;
      if (hasGlupOrigin()) {
        if (!getGlupOrigin()
            .equals(other.getGlupOrigin())) return false;
      }
      if (hasPartition() != other.hasPartition()) return false;
      if (hasPartition()) {
        if (!getPartition()
            .equals(other.getPartition())) return false;
      }
      if (!internalGetSetFields().equals(
          other.internalGetSetFields())) return false;
      if (!getControlMessageList()
          .equals(other.getControlMessageList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasGlupOrigin()) {
        hash = (37 * hash) + GLUP_ORIGIN_FIELD_NUMBER;
        hash = (53 * hash) + getGlupOrigin().hashCode();
      }
      if (hasPartition()) {
        hash = (37 * hash) + PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getPartition().hashCode();
      }
      if (!internalGetSetFields().getMap().isEmpty()) {
        hash = (37 * hash) + SET_FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSetFields().hashCode();
      }
      if (getControlMessageCount() > 0) {
        hash = (37 * hash) + CONTROL_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getControlMessageList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.BaseGlupMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.BaseGlupMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * It is safe to read any GLUP message as a BaseGlupMessage 
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.BaseGlupMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.BaseGlupMessage)
        com.acme.glup.MetadataProto.BaseGlupMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_BaseGlupMessage_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 50010:
            return internalGetSetFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 50010:
            return internalGetMutableSetFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_BaseGlupMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.BaseGlupMessage.class, com.acme.glup.MetadataProto.BaseGlupMessage.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.BaseGlupMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getControlMessageFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (glupOriginBuilder_ == null) {
          glupOrigin_ = null;
        } else {
          glupOrigin_ = null;
          glupOriginBuilder_ = null;
        }
        if (partitionBuilder_ == null) {
          partition_ = null;
        } else {
          partition_ = null;
          partitionBuilder_ = null;
        }
        internalGetMutableSetFields().clear();
        if (controlMessageBuilder_ == null) {
          controlMessage_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          controlMessageBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_BaseGlupMessage_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.BaseGlupMessage getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.BaseGlupMessage.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.BaseGlupMessage build() {
        com.acme.glup.MetadataProto.BaseGlupMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.BaseGlupMessage buildPartial() {
        com.acme.glup.MetadataProto.BaseGlupMessage result = new com.acme.glup.MetadataProto.BaseGlupMessage(this);
        int from_bitField0_ = bitField0_;
        if (glupOriginBuilder_ == null) {
          result.glupOrigin_ = glupOrigin_;
        } else {
          result.glupOrigin_ = glupOriginBuilder_.build();
        }
        if (partitionBuilder_ == null) {
          result.partition_ = partition_;
        } else {
          result.partition_ = partitionBuilder_.build();
        }
        result.setFields_ = internalGetSetFields();
        result.setFields_.makeImmutable();
        if (controlMessageBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            controlMessage_ = java.util.Collections.unmodifiableList(controlMessage_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.controlMessage_ = controlMessage_;
        } else {
          result.controlMessage_ = controlMessageBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.BaseGlupMessage) {
          return mergeFrom((com.acme.glup.MetadataProto.BaseGlupMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.BaseGlupMessage other) {
        if (other == com.acme.glup.MetadataProto.BaseGlupMessage.getDefaultInstance()) return this;
        if (other.hasGlupOrigin()) {
          mergeGlupOrigin(other.getGlupOrigin());
        }
        if (other.hasPartition()) {
          mergePartition(other.getPartition());
        }
        internalGetMutableSetFields().mergeFrom(
            other.internalGetSetFields());
        if (controlMessageBuilder_ == null) {
          if (!other.controlMessage_.isEmpty()) {
            if (controlMessage_.isEmpty()) {
              controlMessage_ = other.controlMessage_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureControlMessageIsMutable();
              controlMessage_.addAll(other.controlMessage_);
            }
            onChanged();
          }
        } else {
          if (!other.controlMessage_.isEmpty()) {
            if (controlMessageBuilder_.isEmpty()) {
              controlMessageBuilder_.dispose();
              controlMessageBuilder_ = null;
              controlMessage_ = other.controlMessage_;
              bitField0_ = (bitField0_ & ~0x00000002);
              controlMessageBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getControlMessageFieldBuilder() : null;
            } else {
              controlMessageBuilder_.addAllMessages(other.controlMessage_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.BaseGlupMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.BaseGlupMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.acme.glup.MetadataProto.Origin glupOrigin_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.Origin, com.acme.glup.MetadataProto.Origin.Builder, com.acme.glup.MetadataProto.OriginOrBuilder> glupOriginBuilder_;
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       * @return Whether the glupOrigin field is set.
       */
      public boolean hasGlupOrigin() {
        return glupOriginBuilder_ != null || glupOrigin_ != null;
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       * @return The glupOrigin.
       */
      public com.acme.glup.MetadataProto.Origin getGlupOrigin() {
        if (glupOriginBuilder_ == null) {
          return glupOrigin_ == null ? com.acme.glup.MetadataProto.Origin.getDefaultInstance() : glupOrigin_;
        } else {
          return glupOriginBuilder_.getMessage();
        }
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      public Builder setGlupOrigin(com.acme.glup.MetadataProto.Origin value) {
        if (glupOriginBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          glupOrigin_ = value;
          onChanged();
        } else {
          glupOriginBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      public Builder setGlupOrigin(
          com.acme.glup.MetadataProto.Origin.Builder builderForValue) {
        if (glupOriginBuilder_ == null) {
          glupOrigin_ = builderForValue.build();
          onChanged();
        } else {
          glupOriginBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      public Builder mergeGlupOrigin(com.acme.glup.MetadataProto.Origin value) {
        if (glupOriginBuilder_ == null) {
          if (glupOrigin_ != null) {
            glupOrigin_ =
              com.acme.glup.MetadataProto.Origin.newBuilder(glupOrigin_).mergeFrom(value).buildPartial();
          } else {
            glupOrigin_ = value;
          }
          onChanged();
        } else {
          glupOriginBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      public Builder clearGlupOrigin() {
        if (glupOriginBuilder_ == null) {
          glupOrigin_ = null;
          onChanged();
        } else {
          glupOrigin_ = null;
          glupOriginBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      public com.acme.glup.MetadataProto.Origin.Builder getGlupOriginBuilder() {
        
        onChanged();
        return getGlupOriginFieldBuilder().getBuilder();
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      public com.acme.glup.MetadataProto.OriginOrBuilder getGlupOriginOrBuilder() {
        if (glupOriginBuilder_ != null) {
          return glupOriginBuilder_.getMessageOrBuilder();
        } else {
          return glupOrigin_ == null ?
              com.acme.glup.MetadataProto.Origin.getDefaultInstance() : glupOrigin_;
        }
      }
      /**
       * <code>.Acme.Glup.Origin glup_origin = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.Origin, com.acme.glup.MetadataProto.Origin.Builder, com.acme.glup.MetadataProto.OriginOrBuilder> 
          getGlupOriginFieldBuilder() {
        if (glupOriginBuilder_ == null) {
          glupOriginBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.Origin, com.acme.glup.MetadataProto.Origin.Builder, com.acme.glup.MetadataProto.OriginOrBuilder>(
                  getGlupOrigin(),
                  getParentForChildren(),
                  isClean());
          glupOrigin_ = null;
        }
        return glupOriginBuilder_;
      }

      private com.acme.glup.MetadataProto.Partition partition_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.Partition, com.acme.glup.MetadataProto.Partition.Builder, com.acme.glup.MetadataProto.PartitionOrBuilder> partitionBuilder_;
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       * @return Whether the partition field is set.
       */
      public boolean hasPartition() {
        return partitionBuilder_ != null || partition_ != null;
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       * @return The partition.
       */
      public com.acme.glup.MetadataProto.Partition getPartition() {
        if (partitionBuilder_ == null) {
          return partition_ == null ? com.acme.glup.MetadataProto.Partition.getDefaultInstance() : partition_;
        } else {
          return partitionBuilder_.getMessage();
        }
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      public Builder setPartition(com.acme.glup.MetadataProto.Partition value) {
        if (partitionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          partition_ = value;
          onChanged();
        } else {
          partitionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      public Builder setPartition(
          com.acme.glup.MetadataProto.Partition.Builder builderForValue) {
        if (partitionBuilder_ == null) {
          partition_ = builderForValue.build();
          onChanged();
        } else {
          partitionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      public Builder mergePartition(com.acme.glup.MetadataProto.Partition value) {
        if (partitionBuilder_ == null) {
          if (partition_ != null) {
            partition_ =
              com.acme.glup.MetadataProto.Partition.newBuilder(partition_).mergeFrom(value).buildPartial();
          } else {
            partition_ = value;
          }
          onChanged();
        } else {
          partitionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      public Builder clearPartition() {
        if (partitionBuilder_ == null) {
          partition_ = null;
          onChanged();
        } else {
          partition_ = null;
          partitionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      public com.acme.glup.MetadataProto.Partition.Builder getPartitionBuilder() {
        
        onChanged();
        return getPartitionFieldBuilder().getBuilder();
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      public com.acme.glup.MetadataProto.PartitionOrBuilder getPartitionOrBuilder() {
        if (partitionBuilder_ != null) {
          return partitionBuilder_.getMessageOrBuilder();
        } else {
          return partition_ == null ?
              com.acme.glup.MetadataProto.Partition.getDefaultInstance() : partition_;
        }
      }
      /**
       * <code>.Acme.Glup.Partition partition = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.Partition, com.acme.glup.MetadataProto.Partition.Builder, com.acme.glup.MetadataProto.PartitionOrBuilder> 
          getPartitionFieldBuilder() {
        if (partitionBuilder_ == null) {
          partitionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.Partition, com.acme.glup.MetadataProto.Partition.Builder, com.acme.glup.MetadataProto.PartitionOrBuilder>(
                  getPartition(),
                  getParentForChildren(),
                  isClean());
          partition_ = null;
        }
        return partitionBuilder_;
      }

      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.Boolean> setFields_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
      internalGetSetFields() {
        if (setFields_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              SetFieldsDefaultEntryHolder.defaultEntry);
        }
        return setFields_;
      }
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
      internalGetMutableSetFields() {
        onChanged();;
        if (setFields_ == null) {
          setFields_ = com.google.protobuf.MapField.newMapField(
              SetFieldsDefaultEntryHolder.defaultEntry);
        }
        if (!setFields_.isMutable()) {
          setFields_ = setFields_.copy();
        }
        return setFields_;
      }

      public int getSetFieldsCount() {
        return internalGetSetFields().getMap().size();
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean containsSetFields(
          int key) {
        
        return internalGetSetFields().getMap().containsKey(key);
      }
      /**
       * Use {@link #getSetFieldsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFields() {
        return getSetFieldsMap();
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFieldsMap() {
        return internalGetSetFields().getMap();
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean getSetFieldsOrDefault(
          int key,
          boolean defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.Boolean> map =
            internalGetSetFields().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean getSetFieldsOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.Boolean> map =
            internalGetSetFields().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearSetFields() {
        internalGetMutableSetFields().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public Builder removeSetFields(
          int key) {
        
        internalGetMutableSetFields().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Boolean>
      getMutableSetFields() {
        return internalGetMutableSetFields().getMutableMap();
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */
      public Builder putSetFields(
          int key,
          boolean value) {
        
        
        internalGetMutableSetFields().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * ID 3 is reserved, ask rivers-team&#64; first.
       * ID 4 is reserved, ask rivers-team&#64; first.
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public Builder putAllSetFields(
          java.util.Map<java.lang.Integer, java.lang.Boolean> values) {
        internalGetMutableSetFields().getMutableMap()
            .putAll(values);
        return this;
      }

      private java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> controlMessage_ =
        java.util.Collections.emptyList();
      private void ensureControlMessageIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          controlMessage_ = new java.util.ArrayList<com.acme.glup.MetadataProto.ControlMessage.Watermark>(controlMessage_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> controlMessageBuilder_;

      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> getControlMessageList() {
        if (controlMessageBuilder_ == null) {
          return java.util.Collections.unmodifiableList(controlMessage_);
        } else {
          return controlMessageBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public int getControlMessageCount() {
        if (controlMessageBuilder_ == null) {
          return controlMessage_.size();
        } else {
          return controlMessageBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark getControlMessage(int index) {
        if (controlMessageBuilder_ == null) {
          return controlMessage_.get(index);
        } else {
          return controlMessageBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder setControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (controlMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureControlMessageIsMutable();
          controlMessage_.set(index, value);
          onChanged();
        } else {
          controlMessageBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder setControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.set(index, builderForValue.build());
          onChanged();
        } else {
          controlMessageBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (controlMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureControlMessageIsMutable();
          controlMessage_.add(value);
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (controlMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureControlMessageIsMutable();
          controlMessage_.add(index, value);
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(
          com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.add(builderForValue.build());
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.add(index, builderForValue.build());
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addAllControlMessage(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.ControlMessage.Watermark> values) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, controlMessage_);
          onChanged();
        } else {
          controlMessageBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder clearControlMessage() {
        if (controlMessageBuilder_ == null) {
          controlMessage_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          controlMessageBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder removeControlMessage(int index) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.remove(index);
          onChanged();
        } else {
          controlMessageBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder getControlMessageBuilder(
          int index) {
        return getControlMessageFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getControlMessageOrBuilder(
          int index) {
        if (controlMessageBuilder_ == null) {
          return controlMessage_.get(index);  } else {
          return controlMessageBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
           getControlMessageOrBuilderList() {
        if (controlMessageBuilder_ != null) {
          return controlMessageBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(controlMessage_);
        }
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder addControlMessageBuilder() {
        return getControlMessageFieldBuilder().addBuilder(
            com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance());
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder addControlMessageBuilder(
          int index) {
        return getControlMessageFieldBuilder().addBuilder(
            index, com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance());
      }
      /**
       * <pre>
       * standard glup field
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder> 
           getControlMessageBuilderList() {
        return getControlMessageFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
          getControlMessageFieldBuilder() {
        if (controlMessageBuilder_ == null) {
          controlMessageBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder>(
                  controlMessage_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          controlMessage_ = null;
        }
        return controlMessageBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.BaseGlupMessage)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.BaseGlupMessage)
    private static final com.acme.glup.MetadataProto.BaseGlupMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.BaseGlupMessage();
    }

    public static com.acme.glup.MetadataProto.BaseGlupMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BaseGlupMessage>
        PARSER = new com.google.protobuf.AbstractParser<BaseGlupMessage>() {
      @java.lang.Override
      public BaseGlupMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BaseGlupMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BaseGlupMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BaseGlupMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.BaseGlupMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ForwardedWatermarkMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.ForwardedWatermarkMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *Where it was taken
     * </pre>
     *
     * <code>int64 original_kafka_offset = 5;</code>
     * @return The originalKafkaOffset.
     */
    long getOriginalKafkaOffset();

    /**
     * <pre>
     *When message was created
     * </pre>
     *
     * <code>int64 timestamp = 6;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     *True to update consensus in consolidation folder, false for consensus in dataset folder
     * </pre>
     *
     * <code>bool consolidation_enabled = 7;</code>
     * @return The consolidationEnabled.
     */
    boolean getConsolidationEnabled();

    /**
     * <pre>
     *DatasetId that we should process
     * </pre>
     *
     * <code>string dataset_id = 10;</code>
     * @return The datasetId.
     */
    java.lang.String getDatasetId();
    /**
     * <pre>
     *DatasetId that we should process
     * </pre>
     *
     * <code>string dataset_id = 10;</code>
     * @return The bytes for datasetId.
     */
    com.google.protobuf.ByteString
        getDatasetIdBytes();

    /**
     * <pre>
     * Exact format that we're processing (when overriding the default format)
     * </pre>
     *
     * <code>string dataset_format_label = 11;</code>
     * @return The datasetFormatLabel.
     */
    java.lang.String getDatasetFormatLabel();
    /**
     * <pre>
     * Exact format that we're processing (when overriding the default format)
     * </pre>
     *
     * <code>string dataset_format_label = 11;</code>
     * @return The bytes for datasetFormatLabel.
     */
    com.google.protobuf.ByteString
        getDatasetFormatLabelBytes();

    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> 
        getControlMessageList();
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    com.acme.glup.MetadataProto.ControlMessage.Watermark getControlMessage(int index);
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    int getControlMessageCount();
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    java.util.List<? extends com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
        getControlMessageOrBuilderList();
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getControlMessageOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Message to be used for forward watermarks in KaCoHa 
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.ForwardedWatermarkMessage}
   */
  public  static final class ForwardedWatermarkMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.ForwardedWatermarkMessage)
      ForwardedWatermarkMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ForwardedWatermarkMessage.newBuilder() to construct.
    private ForwardedWatermarkMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ForwardedWatermarkMessage() {
      datasetId_ = "";
      datasetFormatLabel_ = "";
      controlMessage_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ForwardedWatermarkMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ForwardedWatermarkMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 40: {

              originalKafkaOffset_ = input.readInt64();
              break;
            }
            case 48: {

              timestamp_ = input.readInt64();
              break;
            }
            case 56: {

              consolidationEnabled_ = input.readBool();
              break;
            }
            case 82: {
              java.lang.String s = input.readStringRequireUtf8();

              datasetId_ = s;
              break;
            }
            case 90: {
              java.lang.String s = input.readStringRequireUtf8();

              datasetFormatLabel_ = s;
              break;
            }
            case 16777210: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                controlMessage_ = new java.util.ArrayList<com.acme.glup.MetadataProto.ControlMessage.Watermark>();
                mutable_bitField0_ |= 0x00000001;
              }
              controlMessage_.add(
                  input.readMessage(com.acme.glup.MetadataProto.ControlMessage.Watermark.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          controlMessage_ = java.util.Collections.unmodifiableList(controlMessage_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ForwardedWatermarkMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ForwardedWatermarkMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.ForwardedWatermarkMessage.class, com.acme.glup.MetadataProto.ForwardedWatermarkMessage.Builder.class);
    }

    public static final int ORIGINAL_KAFKA_OFFSET_FIELD_NUMBER = 5;
    private long originalKafkaOffset_;
    /**
     * <pre>
     *Where it was taken
     * </pre>
     *
     * <code>int64 original_kafka_offset = 5;</code>
     * @return The originalKafkaOffset.
     */
    public long getOriginalKafkaOffset() {
      return originalKafkaOffset_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 6;
    private long timestamp_;
    /**
     * <pre>
     *When message was created
     * </pre>
     *
     * <code>int64 timestamp = 6;</code>
     * @return The timestamp.
     */
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CONSOLIDATION_ENABLED_FIELD_NUMBER = 7;
    private boolean consolidationEnabled_;
    /**
     * <pre>
     *True to update consensus in consolidation folder, false for consensus in dataset folder
     * </pre>
     *
     * <code>bool consolidation_enabled = 7;</code>
     * @return The consolidationEnabled.
     */
    public boolean getConsolidationEnabled() {
      return consolidationEnabled_;
    }

    public static final int DATASET_ID_FIELD_NUMBER = 10;
    private volatile java.lang.Object datasetId_;
    /**
     * <pre>
     *DatasetId that we should process
     * </pre>
     *
     * <code>string dataset_id = 10;</code>
     * @return The datasetId.
     */
    public java.lang.String getDatasetId() {
      java.lang.Object ref = datasetId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        datasetId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *DatasetId that we should process
     * </pre>
     *
     * <code>string dataset_id = 10;</code>
     * @return The bytes for datasetId.
     */
    public com.google.protobuf.ByteString
        getDatasetIdBytes() {
      java.lang.Object ref = datasetId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datasetId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATASET_FORMAT_LABEL_FIELD_NUMBER = 11;
    private volatile java.lang.Object datasetFormatLabel_;
    /**
     * <pre>
     * Exact format that we're processing (when overriding the default format)
     * </pre>
     *
     * <code>string dataset_format_label = 11;</code>
     * @return The datasetFormatLabel.
     */
    public java.lang.String getDatasetFormatLabel() {
      java.lang.Object ref = datasetFormatLabel_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        datasetFormatLabel_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Exact format that we're processing (when overriding the default format)
     * </pre>
     *
     * <code>string dataset_format_label = 11;</code>
     * @return The bytes for datasetFormatLabel.
     */
    public com.google.protobuf.ByteString
        getDatasetFormatLabelBytes() {
      java.lang.Object ref = datasetFormatLabel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datasetFormatLabel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTROL_MESSAGE_FIELD_NUMBER = 2097151;
    private java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> controlMessage_;
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> getControlMessageList() {
      return controlMessage_;
    }
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public java.util.List<? extends com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
        getControlMessageOrBuilderList() {
      return controlMessage_;
    }
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public int getControlMessageCount() {
      return controlMessage_.size();
    }
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public com.acme.glup.MetadataProto.ControlMessage.Watermark getControlMessage(int index) {
      return controlMessage_.get(index);
    }
    /**
     * <pre>
     * original watermark
     * </pre>
     *
     * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
     */
    public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getControlMessageOrBuilder(
        int index) {
      return controlMessage_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (originalKafkaOffset_ != 0L) {
        output.writeInt64(5, originalKafkaOffset_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(6, timestamp_);
      }
      if (consolidationEnabled_ != false) {
        output.writeBool(7, consolidationEnabled_);
      }
      if (!getDatasetIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, datasetId_);
      }
      if (!getDatasetFormatLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, datasetFormatLabel_);
      }
      for (int i = 0; i < controlMessage_.size(); i++) {
        output.writeMessage(2097151, controlMessage_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (originalKafkaOffset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, originalKafkaOffset_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, timestamp_);
      }
      if (consolidationEnabled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, consolidationEnabled_);
      }
      if (!getDatasetIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, datasetId_);
      }
      if (!getDatasetFormatLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, datasetFormatLabel_);
      }
      for (int i = 0; i < controlMessage_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2097151, controlMessage_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.ForwardedWatermarkMessage)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.ForwardedWatermarkMessage other = (com.acme.glup.MetadataProto.ForwardedWatermarkMessage) obj;

      if (getOriginalKafkaOffset()
          != other.getOriginalKafkaOffset()) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (getConsolidationEnabled()
          != other.getConsolidationEnabled()) return false;
      if (!getDatasetId()
          .equals(other.getDatasetId())) return false;
      if (!getDatasetFormatLabel()
          .equals(other.getDatasetFormatLabel())) return false;
      if (!getControlMessageList()
          .equals(other.getControlMessageList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ORIGINAL_KAFKA_OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOriginalKafkaOffset());
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + CONSOLIDATION_ENABLED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getConsolidationEnabled());
      hash = (37 * hash) + DATASET_ID_FIELD_NUMBER;
      hash = (53 * hash) + getDatasetId().hashCode();
      hash = (37 * hash) + DATASET_FORMAT_LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getDatasetFormatLabel().hashCode();
      if (getControlMessageCount() > 0) {
        hash = (37 * hash) + CONTROL_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getControlMessageList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.ForwardedWatermarkMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Message to be used for forward watermarks in KaCoHa 
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.ForwardedWatermarkMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.ForwardedWatermarkMessage)
        com.acme.glup.MetadataProto.ForwardedWatermarkMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ForwardedWatermarkMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ForwardedWatermarkMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.ForwardedWatermarkMessage.class, com.acme.glup.MetadataProto.ForwardedWatermarkMessage.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.ForwardedWatermarkMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getControlMessageFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        originalKafkaOffset_ = 0L;

        timestamp_ = 0L;

        consolidationEnabled_ = false;

        datasetId_ = "";

        datasetFormatLabel_ = "";

        if (controlMessageBuilder_ == null) {
          controlMessage_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          controlMessageBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ForwardedWatermarkMessage_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ForwardedWatermarkMessage getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.ForwardedWatermarkMessage.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ForwardedWatermarkMessage build() {
        com.acme.glup.MetadataProto.ForwardedWatermarkMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ForwardedWatermarkMessage buildPartial() {
        com.acme.glup.MetadataProto.ForwardedWatermarkMessage result = new com.acme.glup.MetadataProto.ForwardedWatermarkMessage(this);
        int from_bitField0_ = bitField0_;
        result.originalKafkaOffset_ = originalKafkaOffset_;
        result.timestamp_ = timestamp_;
        result.consolidationEnabled_ = consolidationEnabled_;
        result.datasetId_ = datasetId_;
        result.datasetFormatLabel_ = datasetFormatLabel_;
        if (controlMessageBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            controlMessage_ = java.util.Collections.unmodifiableList(controlMessage_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.controlMessage_ = controlMessage_;
        } else {
          result.controlMessage_ = controlMessageBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.ForwardedWatermarkMessage) {
          return mergeFrom((com.acme.glup.MetadataProto.ForwardedWatermarkMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.ForwardedWatermarkMessage other) {
        if (other == com.acme.glup.MetadataProto.ForwardedWatermarkMessage.getDefaultInstance()) return this;
        if (other.getOriginalKafkaOffset() != 0L) {
          setOriginalKafkaOffset(other.getOriginalKafkaOffset());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.getConsolidationEnabled() != false) {
          setConsolidationEnabled(other.getConsolidationEnabled());
        }
        if (!other.getDatasetId().isEmpty()) {
          datasetId_ = other.datasetId_;
          onChanged();
        }
        if (!other.getDatasetFormatLabel().isEmpty()) {
          datasetFormatLabel_ = other.datasetFormatLabel_;
          onChanged();
        }
        if (controlMessageBuilder_ == null) {
          if (!other.controlMessage_.isEmpty()) {
            if (controlMessage_.isEmpty()) {
              controlMessage_ = other.controlMessage_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureControlMessageIsMutable();
              controlMessage_.addAll(other.controlMessage_);
            }
            onChanged();
          }
        } else {
          if (!other.controlMessage_.isEmpty()) {
            if (controlMessageBuilder_.isEmpty()) {
              controlMessageBuilder_.dispose();
              controlMessageBuilder_ = null;
              controlMessage_ = other.controlMessage_;
              bitField0_ = (bitField0_ & ~0x00000001);
              controlMessageBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getControlMessageFieldBuilder() : null;
            } else {
              controlMessageBuilder_.addAllMessages(other.controlMessage_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.ForwardedWatermarkMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.ForwardedWatermarkMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long originalKafkaOffset_ ;
      /**
       * <pre>
       *Where it was taken
       * </pre>
       *
       * <code>int64 original_kafka_offset = 5;</code>
       * @return The originalKafkaOffset.
       */
      public long getOriginalKafkaOffset() {
        return originalKafkaOffset_;
      }
      /**
       * <pre>
       *Where it was taken
       * </pre>
       *
       * <code>int64 original_kafka_offset = 5;</code>
       * @param value The originalKafkaOffset to set.
       * @return This builder for chaining.
       */
      public Builder setOriginalKafkaOffset(long value) {
        
        originalKafkaOffset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Where it was taken
       * </pre>
       *
       * <code>int64 original_kafka_offset = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearOriginalKafkaOffset() {
        
        originalKafkaOffset_ = 0L;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       *When message was created
       * </pre>
       *
       * <code>int64 timestamp = 6;</code>
       * @return The timestamp.
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       *When message was created
       * </pre>
       *
       * <code>int64 timestamp = 6;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *When message was created
       * </pre>
       *
       * <code>int64 timestamp = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private boolean consolidationEnabled_ ;
      /**
       * <pre>
       *True to update consensus in consolidation folder, false for consensus in dataset folder
       * </pre>
       *
       * <code>bool consolidation_enabled = 7;</code>
       * @return The consolidationEnabled.
       */
      public boolean getConsolidationEnabled() {
        return consolidationEnabled_;
      }
      /**
       * <pre>
       *True to update consensus in consolidation folder, false for consensus in dataset folder
       * </pre>
       *
       * <code>bool consolidation_enabled = 7;</code>
       * @param value The consolidationEnabled to set.
       * @return This builder for chaining.
       */
      public Builder setConsolidationEnabled(boolean value) {
        
        consolidationEnabled_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *True to update consensus in consolidation folder, false for consensus in dataset folder
       * </pre>
       *
       * <code>bool consolidation_enabled = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearConsolidationEnabled() {
        
        consolidationEnabled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object datasetId_ = "";
      /**
       * <pre>
       *DatasetId that we should process
       * </pre>
       *
       * <code>string dataset_id = 10;</code>
       * @return The datasetId.
       */
      public java.lang.String getDatasetId() {
        java.lang.Object ref = datasetId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          datasetId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *DatasetId that we should process
       * </pre>
       *
       * <code>string dataset_id = 10;</code>
       * @return The bytes for datasetId.
       */
      public com.google.protobuf.ByteString
          getDatasetIdBytes() {
        java.lang.Object ref = datasetId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datasetId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *DatasetId that we should process
       * </pre>
       *
       * <code>string dataset_id = 10;</code>
       * @param value The datasetId to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        datasetId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *DatasetId that we should process
       * </pre>
       *
       * <code>string dataset_id = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetId() {
        
        datasetId_ = getDefaultInstance().getDatasetId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *DatasetId that we should process
       * </pre>
       *
       * <code>string dataset_id = 10;</code>
       * @param value The bytes for datasetId to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        datasetId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object datasetFormatLabel_ = "";
      /**
       * <pre>
       * Exact format that we're processing (when overriding the default format)
       * </pre>
       *
       * <code>string dataset_format_label = 11;</code>
       * @return The datasetFormatLabel.
       */
      public java.lang.String getDatasetFormatLabel() {
        java.lang.Object ref = datasetFormatLabel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          datasetFormatLabel_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Exact format that we're processing (when overriding the default format)
       * </pre>
       *
       * <code>string dataset_format_label = 11;</code>
       * @return The bytes for datasetFormatLabel.
       */
      public com.google.protobuf.ByteString
          getDatasetFormatLabelBytes() {
        java.lang.Object ref = datasetFormatLabel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datasetFormatLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Exact format that we're processing (when overriding the default format)
       * </pre>
       *
       * <code>string dataset_format_label = 11;</code>
       * @param value The datasetFormatLabel to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetFormatLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        datasetFormatLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exact format that we're processing (when overriding the default format)
       * </pre>
       *
       * <code>string dataset_format_label = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetFormatLabel() {
        
        datasetFormatLabel_ = getDefaultInstance().getDatasetFormatLabel();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exact format that we're processing (when overriding the default format)
       * </pre>
       *
       * <code>string dataset_format_label = 11;</code>
       * @param value The bytes for datasetFormatLabel to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetFormatLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        datasetFormatLabel_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> controlMessage_ =
        java.util.Collections.emptyList();
      private void ensureControlMessageIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          controlMessage_ = new java.util.ArrayList<com.acme.glup.MetadataProto.ControlMessage.Watermark>(controlMessage_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> controlMessageBuilder_;

      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark> getControlMessageList() {
        if (controlMessageBuilder_ == null) {
          return java.util.Collections.unmodifiableList(controlMessage_);
        } else {
          return controlMessageBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public int getControlMessageCount() {
        if (controlMessageBuilder_ == null) {
          return controlMessage_.size();
        } else {
          return controlMessageBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark getControlMessage(int index) {
        if (controlMessageBuilder_ == null) {
          return controlMessage_.get(index);
        } else {
          return controlMessageBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder setControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (controlMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureControlMessageIsMutable();
          controlMessage_.set(index, value);
          onChanged();
        } else {
          controlMessageBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder setControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.set(index, builderForValue.build());
          onChanged();
        } else {
          controlMessageBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (controlMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureControlMessageIsMutable();
          controlMessage_.add(value);
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (controlMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureControlMessageIsMutable();
          controlMessage_.add(index, value);
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(
          com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.add(builderForValue.build());
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addControlMessage(
          int index, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.add(index, builderForValue.build());
          onChanged();
        } else {
          controlMessageBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder addAllControlMessage(
          java.lang.Iterable<? extends com.acme.glup.MetadataProto.ControlMessage.Watermark> values) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, controlMessage_);
          onChanged();
        } else {
          controlMessageBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder clearControlMessage() {
        if (controlMessageBuilder_ == null) {
          controlMessage_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          controlMessageBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public Builder removeControlMessage(int index) {
        if (controlMessageBuilder_ == null) {
          ensureControlMessageIsMutable();
          controlMessage_.remove(index);
          onChanged();
        } else {
          controlMessageBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder getControlMessageBuilder(
          int index) {
        return getControlMessageFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getControlMessageOrBuilder(
          int index) {
        if (controlMessageBuilder_ == null) {
          return controlMessage_.get(index);  } else {
          return controlMessageBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public java.util.List<? extends com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
           getControlMessageOrBuilderList() {
        if (controlMessageBuilder_ != null) {
          return controlMessageBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(controlMessage_);
        }
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder addControlMessageBuilder() {
        return getControlMessageFieldBuilder().addBuilder(
            com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance());
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder addControlMessageBuilder(
          int index) {
        return getControlMessageFieldBuilder().addBuilder(
            index, com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance());
      }
      /**
       * <pre>
       * original watermark
       * </pre>
       *
       * <code>repeated .Acme.Glup.ControlMessage.Watermark control_message = 2097151 [(.Acme.Glup.json) = { ... }</code>
       */
      public java.util.List<com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder> 
           getControlMessageBuilderList() {
        return getControlMessageFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
          getControlMessageFieldBuilder() {
        if (controlMessageBuilder_ == null) {
          controlMessageBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder>(
                  controlMessage_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          controlMessage_ = null;
        }
        return controlMessageBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.ForwardedWatermarkMessage)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.ForwardedWatermarkMessage)
    private static final com.acme.glup.MetadataProto.ForwardedWatermarkMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.ForwardedWatermarkMessage();
    }

    public static com.acme.glup.MetadataProto.ForwardedWatermarkMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ForwardedWatermarkMessage>
        PARSER = new com.google.protobuf.AbstractParser<ForwardedWatermarkMessage>() {
      @java.lang.Override
      public ForwardedWatermarkMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ForwardedWatermarkMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ForwardedWatermarkMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ForwardedWatermarkMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.ForwardedWatermarkMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.Location)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Acme.Glup.Environment env = 1;</code>
     * @return The enum numeric value on the wire for env.
     */
    int getEnvValue();
    /**
     * <code>.Acme.Glup.Environment env = 1;</code>
     * @return The env.
     */
    com.acme.glup.MetadataProto.Environment getEnv();

    /**
     * <code>.Acme.Glup.DataCenter dc = 2;</code>
     * @return The enum numeric value on the wire for dc.
     */
    int getDcValue();
    /**
     * <code>.Acme.Glup.DataCenter dc = 2;</code>
     * @return The dc.
     */
    com.acme.glup.MetadataProto.DataCenter getDc();

    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string label = 3;</code>
     * @return The label.
     */
    java.lang.String getLabel();
    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string label = 3;</code>
     * @return The bytes for label.
     */
    com.google.protobuf.ByteString
        getLabelBytes();

    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string dataset_id = 4;</code>
     * @return The datasetId.
     */
    java.lang.String getDatasetId();
    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string dataset_id = 4;</code>
     * @return The bytes for datasetId.
     */
    com.google.protobuf.ByteString
        getDatasetIdBytes();
  }
  /**
   * Protobuf type {@code Acme.Glup.Location}
   */
  public  static final class Location extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.Location)
      LocationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Location.newBuilder() to construct.
    private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Location() {
      env_ = 0;
      dc_ = 0;
      label_ = "";
      datasetId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Location();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Location(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();

              env_ = rawValue;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              dc_ = rawValue;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              label_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              datasetId_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Location_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Location_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.Location.class, com.acme.glup.MetadataProto.Location.Builder.class);
    }

    public static final int ENV_FIELD_NUMBER = 1;
    private int env_;
    /**
     * <code>.Acme.Glup.Environment env = 1;</code>
     * @return The enum numeric value on the wire for env.
     */
    public int getEnvValue() {
      return env_;
    }
    /**
     * <code>.Acme.Glup.Environment env = 1;</code>
     * @return The env.
     */
    public com.acme.glup.MetadataProto.Environment getEnv() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.Environment result = com.acme.glup.MetadataProto.Environment.valueOf(env_);
      return result == null ? com.acme.glup.MetadataProto.Environment.UNRECOGNIZED : result;
    }

    public static final int DC_FIELD_NUMBER = 2;
    private int dc_;
    /**
     * <code>.Acme.Glup.DataCenter dc = 2;</code>
     * @return The enum numeric value on the wire for dc.
     */
    public int getDcValue() {
      return dc_;
    }
    /**
     * <code>.Acme.Glup.DataCenter dc = 2;</code>
     * @return The dc.
     */
    public com.acme.glup.MetadataProto.DataCenter getDc() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(dc_);
      return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
    }

    public static final int LABEL_FIELD_NUMBER = 3;
    private volatile java.lang.Object label_;
    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string label = 3;</code>
     * @return The label.
     */
    public java.lang.String getLabel() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        label_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string label = 3;</code>
     * @return The bytes for label.
     */
    public com.google.protobuf.ByteString
        getLabelBytes() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        label_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATASET_ID_FIELD_NUMBER = 4;
    private volatile java.lang.Object datasetId_;
    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string dataset_id = 4;</code>
     * @return The datasetId.
     */
    public java.lang.String getDatasetId() {
      java.lang.Object ref = datasetId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        datasetId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * label, associated with dataset_id (both required) is used to override source path of data
     * </pre>
     *
     * <code>string dataset_id = 4;</code>
     * @return The bytes for datasetId.
     */
    public com.google.protobuf.ByteString
        getDatasetIdBytes() {
      java.lang.Object ref = datasetId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datasetId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (env_ != com.acme.glup.MetadataProto.Environment.UNSUPPORTED_ENVIRONMENT.getNumber()) {
        output.writeEnum(1, env_);
      }
      if (dc_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
        output.writeEnum(2, dc_);
      }
      if (!getLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, label_);
      }
      if (!getDatasetIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, datasetId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (env_ != com.acme.glup.MetadataProto.Environment.UNSUPPORTED_ENVIRONMENT.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, env_);
      }
      if (dc_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, dc_);
      }
      if (!getLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, label_);
      }
      if (!getDatasetIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, datasetId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.Location)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.Location other = (com.acme.glup.MetadataProto.Location) obj;

      if (env_ != other.env_) return false;
      if (dc_ != other.dc_) return false;
      if (!getLabel()
          .equals(other.getLabel())) return false;
      if (!getDatasetId()
          .equals(other.getDatasetId())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ENV_FIELD_NUMBER;
      hash = (53 * hash) + env_;
      hash = (37 * hash) + DC_FIELD_NUMBER;
      hash = (53 * hash) + dc_;
      hash = (37 * hash) + LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getLabel().hashCode();
      hash = (37 * hash) + DATASET_ID_FIELD_NUMBER;
      hash = (53 * hash) + getDatasetId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.Location parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Location parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Location parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Location parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.Location prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Acme.Glup.Location}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.Location)
        com.acme.glup.MetadataProto.LocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Location_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Location_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.Location.class, com.acme.glup.MetadataProto.Location.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.Location.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        env_ = 0;

        dc_ = 0;

        label_ = "";

        datasetId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Location_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Location getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.Location.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Location build() {
        com.acme.glup.MetadataProto.Location result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Location buildPartial() {
        com.acme.glup.MetadataProto.Location result = new com.acme.glup.MetadataProto.Location(this);
        result.env_ = env_;
        result.dc_ = dc_;
        result.label_ = label_;
        result.datasetId_ = datasetId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.Location) {
          return mergeFrom((com.acme.glup.MetadataProto.Location)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.Location other) {
        if (other == com.acme.glup.MetadataProto.Location.getDefaultInstance()) return this;
        if (other.env_ != 0) {
          setEnvValue(other.getEnvValue());
        }
        if (other.dc_ != 0) {
          setDcValue(other.getDcValue());
        }
        if (!other.getLabel().isEmpty()) {
          label_ = other.label_;
          onChanged();
        }
        if (!other.getDatasetId().isEmpty()) {
          datasetId_ = other.datasetId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.Location parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.Location) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int env_ = 0;
      /**
       * <code>.Acme.Glup.Environment env = 1;</code>
       * @return The enum numeric value on the wire for env.
       */
      public int getEnvValue() {
        return env_;
      }
      /**
       * <code>.Acme.Glup.Environment env = 1;</code>
       * @param value The enum numeric value on the wire for env to set.
       * @return This builder for chaining.
       */
      public Builder setEnvValue(int value) {
        env_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.Environment env = 1;</code>
       * @return The env.
       */
      public com.acme.glup.MetadataProto.Environment getEnv() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.Environment result = com.acme.glup.MetadataProto.Environment.valueOf(env_);
        return result == null ? com.acme.glup.MetadataProto.Environment.UNRECOGNIZED : result;
      }
      /**
       * <code>.Acme.Glup.Environment env = 1;</code>
       * @param value The env to set.
       * @return This builder for chaining.
       */
      public Builder setEnv(com.acme.glup.MetadataProto.Environment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        env_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.Environment env = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnv() {
        
        env_ = 0;
        onChanged();
        return this;
      }

      private int dc_ = 0;
      /**
       * <code>.Acme.Glup.DataCenter dc = 2;</code>
       * @return The enum numeric value on the wire for dc.
       */
      public int getDcValue() {
        return dc_;
      }
      /**
       * <code>.Acme.Glup.DataCenter dc = 2;</code>
       * @param value The enum numeric value on the wire for dc to set.
       * @return This builder for chaining.
       */
      public Builder setDcValue(int value) {
        dc_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.DataCenter dc = 2;</code>
       * @return The dc.
       */
      public com.acme.glup.MetadataProto.DataCenter getDc() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(dc_);
        return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
      }
      /**
       * <code>.Acme.Glup.DataCenter dc = 2;</code>
       * @param value The dc to set.
       * @return This builder for chaining.
       */
      public Builder setDc(com.acme.glup.MetadataProto.DataCenter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        dc_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.DataCenter dc = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDc() {
        
        dc_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object label_ = "";
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string label = 3;</code>
       * @return The label.
       */
      public java.lang.String getLabel() {
        java.lang.Object ref = label_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          label_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string label = 3;</code>
       * @return The bytes for label.
       */
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string label = 3;</code>
       * @param value The label to set.
       * @return This builder for chaining.
       */
      public Builder setLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        label_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string label = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLabel() {
        
        label_ = getDefaultInstance().getLabel();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string label = 3;</code>
       * @param value The bytes for label to set.
       * @return This builder for chaining.
       */
      public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        label_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object datasetId_ = "";
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string dataset_id = 4;</code>
       * @return The datasetId.
       */
      public java.lang.String getDatasetId() {
        java.lang.Object ref = datasetId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          datasetId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string dataset_id = 4;</code>
       * @return The bytes for datasetId.
       */
      public com.google.protobuf.ByteString
          getDatasetIdBytes() {
        java.lang.Object ref = datasetId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datasetId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string dataset_id = 4;</code>
       * @param value The datasetId to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        datasetId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string dataset_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetId() {
        
        datasetId_ = getDefaultInstance().getDatasetId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * label, associated with dataset_id (both required) is used to override source path of data
       * </pre>
       *
       * <code>string dataset_id = 4;</code>
       * @param value The bytes for datasetId to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        datasetId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.Location)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.Location)
    private static final com.acme.glup.MetadataProto.Location DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.Location();
    }

    public static com.acme.glup.MetadataProto.Location getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Location>
        PARSER = new com.google.protobuf.AbstractParser<Location>() {
      @java.lang.Override
      public Location parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Location(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Location> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Location> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.Location getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OriginOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.Origin)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * DataCenter of the emitting server.
     * </pre>
     *
     * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
     * @return The enum numeric value on the wire for datacenter.
     */
    int getDatacenterValue();
    /**
     * <pre>
     * DataCenter of the emitting server.
     * </pre>
     *
     * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
     * @return The datacenter.
     */
    com.acme.glup.MetadataProto.DataCenter getDatacenter();

    /**
     * <pre>
     * Mandatory for TLAs and chef-deployed producers.
     * IP v4 adresses in netork byte order
     * </pre>
     *
     * <code>fixed32 ip4 = 2 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The ip4.
     */
    int getIp4();

    /**
     * <pre>
     * Mandatory for TLAs and chef-deployed producers.
     * </pre>
     *
     * <code>string hostname = 3;</code>
     * @return The hostname.
     */
    java.lang.String getHostname();
    /**
     * <pre>
     * Mandatory for TLAs and chef-deployed producers.
     * </pre>
     *
     * <code>string hostname = 3;</code>
     * @return The bytes for hostname.
     */
    com.google.protobuf.ByteString
        getHostnameBytes();

    /**
     * <pre>
     * Mandatory on container environment.
     * </pre>
     *
     * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The containerTask.
     */
    java.lang.String getContainerTask();
    /**
     * <pre>
     * Mandatory on container environment.
     * </pre>
     *
     * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The bytes for containerTask.
     */
    com.google.protobuf.ByteString
        getContainerTaskBytes();

    /**
     * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The containerApp.
     */
    java.lang.String getContainerApp();
    /**
     * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The bytes for containerApp.
     */
    com.google.protobuf.ByteString
        getContainerAppBytes();
  }
  /**
   * <pre>
   * Identifies the emitter of a message. 
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.Origin}
   */
  public  static final class Origin extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.Origin)
      OriginOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Origin.newBuilder() to construct.
    private Origin(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Origin() {
      datacenter_ = 0;
      hostname_ = "";
      containerTask_ = "";
      containerApp_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Origin();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Origin(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();

              datacenter_ = rawValue;
              break;
            }
            case 21: {

              ip4_ = input.readFixed32();
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              hostname_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              containerTask_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              containerApp_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Origin_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Origin_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.Origin.class, com.acme.glup.MetadataProto.Origin.Builder.class);
    }

    public static final int DATACENTER_FIELD_NUMBER = 1;
    private int datacenter_;
    /**
     * <pre>
     * DataCenter of the emitting server.
     * </pre>
     *
     * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
     * @return The enum numeric value on the wire for datacenter.
     */
    public int getDatacenterValue() {
      return datacenter_;
    }
    /**
     * <pre>
     * DataCenter of the emitting server.
     * </pre>
     *
     * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
     * @return The datacenter.
     */
    public com.acme.glup.MetadataProto.DataCenter getDatacenter() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(datacenter_);
      return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
    }

    public static final int IP4_FIELD_NUMBER = 2;
    private int ip4_;
    /**
     * <pre>
     * Mandatory for TLAs and chef-deployed producers.
     * IP v4 adresses in netork byte order
     * </pre>
     *
     * <code>fixed32 ip4 = 2 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The ip4.
     */
    public int getIp4() {
      return ip4_;
    }

    public static final int HOSTNAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object hostname_;
    /**
     * <pre>
     * Mandatory for TLAs and chef-deployed producers.
     * </pre>
     *
     * <code>string hostname = 3;</code>
     * @return The hostname.
     */
    public java.lang.String getHostname() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hostname_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Mandatory for TLAs and chef-deployed producers.
     * </pre>
     *
     * <code>string hostname = 3;</code>
     * @return The bytes for hostname.
     */
    public com.google.protobuf.ByteString
        getHostnameBytes() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTAINER_TASK_FIELD_NUMBER = 4;
    private volatile java.lang.Object containerTask_;
    /**
     * <pre>
     * Mandatory on container environment.
     * </pre>
     *
     * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The containerTask.
     */
    public java.lang.String getContainerTask() {
      java.lang.Object ref = containerTask_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        containerTask_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Mandatory on container environment.
     * </pre>
     *
     * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The bytes for containerTask.
     */
    public com.google.protobuf.ByteString
        getContainerTaskBytes() {
      java.lang.Object ref = containerTask_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerTask_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTAINER_APP_FIELD_NUMBER = 5;
    private volatile java.lang.Object containerApp_;
    /**
     * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The containerApp.
     */
    public java.lang.String getContainerApp() {
      java.lang.Object ref = containerApp_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        containerApp_ = s;
        return s;
      }
    }
    /**
     * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The bytes for containerApp.
     */
    public com.google.protobuf.ByteString
        getContainerAppBytes() {
      java.lang.Object ref = containerApp_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerApp_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (datacenter_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
        output.writeEnum(1, datacenter_);
      }
      if (ip4_ != 0) {
        output.writeFixed32(2, ip4_);
      }
      if (!getHostnameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, hostname_);
      }
      if (!getContainerTaskBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, containerTask_);
      }
      if (!getContainerAppBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, containerApp_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (datacenter_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, datacenter_);
      }
      if (ip4_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(2, ip4_);
      }
      if (!getHostnameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, hostname_);
      }
      if (!getContainerTaskBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, containerTask_);
      }
      if (!getContainerAppBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, containerApp_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.Origin)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.Origin other = (com.acme.glup.MetadataProto.Origin) obj;

      if (datacenter_ != other.datacenter_) return false;
      if (getIp4()
          != other.getIp4()) return false;
      if (!getHostname()
          .equals(other.getHostname())) return false;
      if (!getContainerTask()
          .equals(other.getContainerTask())) return false;
      if (!getContainerApp()
          .equals(other.getContainerApp())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DATACENTER_FIELD_NUMBER;
      hash = (53 * hash) + datacenter_;
      hash = (37 * hash) + IP4_FIELD_NUMBER;
      hash = (53 * hash) + getIp4();
      hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getHostname().hashCode();
      hash = (37 * hash) + CONTAINER_TASK_FIELD_NUMBER;
      hash = (53 * hash) + getContainerTask().hashCode();
      hash = (37 * hash) + CONTAINER_APP_FIELD_NUMBER;
      hash = (53 * hash) + getContainerApp().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.Origin parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Origin parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Origin parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Origin parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.Origin prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Identifies the emitter of a message. 
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.Origin}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.Origin)
        com.acme.glup.MetadataProto.OriginOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Origin_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Origin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.Origin.class, com.acme.glup.MetadataProto.Origin.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.Origin.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        datacenter_ = 0;

        ip4_ = 0;

        hostname_ = "";

        containerTask_ = "";

        containerApp_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Origin_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Origin getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.Origin.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Origin build() {
        com.acme.glup.MetadataProto.Origin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Origin buildPartial() {
        com.acme.glup.MetadataProto.Origin result = new com.acme.glup.MetadataProto.Origin(this);
        result.datacenter_ = datacenter_;
        result.ip4_ = ip4_;
        result.hostname_ = hostname_;
        result.containerTask_ = containerTask_;
        result.containerApp_ = containerApp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.Origin) {
          return mergeFrom((com.acme.glup.MetadataProto.Origin)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.Origin other) {
        if (other == com.acme.glup.MetadataProto.Origin.getDefaultInstance()) return this;
        if (other.datacenter_ != 0) {
          setDatacenterValue(other.getDatacenterValue());
        }
        if (other.getIp4() != 0) {
          setIp4(other.getIp4());
        }
        if (!other.getHostname().isEmpty()) {
          hostname_ = other.hostname_;
          onChanged();
        }
        if (!other.getContainerTask().isEmpty()) {
          containerTask_ = other.containerTask_;
          onChanged();
        }
        if (!other.getContainerApp().isEmpty()) {
          containerApp_ = other.containerApp_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.Origin parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.Origin) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int datacenter_ = 0;
      /**
       * <pre>
       * DataCenter of the emitting server.
       * </pre>
       *
       * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
       * @return The enum numeric value on the wire for datacenter.
       */
      public int getDatacenterValue() {
        return datacenter_;
      }
      /**
       * <pre>
       * DataCenter of the emitting server.
       * </pre>
       *
       * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
       * @param value The enum numeric value on the wire for datacenter to set.
       * @return This builder for chaining.
       */
      public Builder setDatacenterValue(int value) {
        datacenter_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DataCenter of the emitting server.
       * </pre>
       *
       * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
       * @return The datacenter.
       */
      public com.acme.glup.MetadataProto.DataCenter getDatacenter() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(datacenter_);
        return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * DataCenter of the emitting server.
       * </pre>
       *
       * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
       * @param value The datacenter to set.
       * @return This builder for chaining.
       */
      public Builder setDatacenter(com.acme.glup.MetadataProto.DataCenter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        datacenter_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DataCenter of the emitting server.
       * </pre>
       *
       * <code>.Acme.Glup.DataCenter datacenter = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatacenter() {
        
        datacenter_ = 0;
        onChanged();
        return this;
      }

      private int ip4_ ;
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * IP v4 adresses in netork byte order
       * </pre>
       *
       * <code>fixed32 ip4 = 2 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The ip4.
       */
      public int getIp4() {
        return ip4_;
      }
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * IP v4 adresses in netork byte order
       * </pre>
       *
       * <code>fixed32 ip4 = 2 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The ip4 to set.
       * @return This builder for chaining.
       */
      public Builder setIp4(int value) {
        
        ip4_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * IP v4 adresses in netork byte order
       * </pre>
       *
       * <code>fixed32 ip4 = 2 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearIp4() {
        
        ip4_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object hostname_ = "";
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return The hostname.
       */
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hostname_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return The bytes for hostname.
       */
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @param value The hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostname(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hostname_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostname() {
        
        hostname_ = getDefaultInstance().getHostname();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mandatory for TLAs and chef-deployed producers.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @param value The bytes for hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        hostname_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object containerTask_ = "";
      /**
       * <pre>
       * Mandatory on container environment.
       * </pre>
       *
       * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The containerTask.
       */
      public java.lang.String getContainerTask() {
        java.lang.Object ref = containerTask_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          containerTask_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Mandatory on container environment.
       * </pre>
       *
       * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The bytes for containerTask.
       */
      public com.google.protobuf.ByteString
          getContainerTaskBytes() {
        java.lang.Object ref = containerTask_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerTask_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Mandatory on container environment.
       * </pre>
       *
       * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The containerTask to set.
       * @return This builder for chaining.
       */
      public Builder setContainerTask(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        containerTask_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mandatory on container environment.
       * </pre>
       *
       * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerTask() {
        
        containerTask_ = getDefaultInstance().getContainerTask();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mandatory on container environment.
       * </pre>
       *
       * <code>string container_task = 4 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The bytes for containerTask to set.
       * @return This builder for chaining.
       */
      public Builder setContainerTaskBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        containerTask_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object containerApp_ = "";
      /**
       * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The containerApp.
       */
      public java.lang.String getContainerApp() {
        java.lang.Object ref = containerApp_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          containerApp_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The bytes for containerApp.
       */
      public com.google.protobuf.ByteString
          getContainerAppBytes() {
        java.lang.Object ref = containerApp_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerApp_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The containerApp to set.
       * @return This builder for chaining.
       */
      public Builder setContainerApp(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        containerApp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerApp() {
        
        containerApp_ = getDefaultInstance().getContainerApp();
        onChanged();
        return this;
      }
      /**
       * <code>string container_app = 5 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The bytes for containerApp to set.
       * @return This builder for chaining.
       */
      public Builder setContainerAppBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        containerApp_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.Origin)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.Origin)
    private static final com.acme.glup.MetadataProto.Origin DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.Origin();
    }

    public static com.acme.glup.MetadataProto.Origin getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Origin>
        PARSER = new com.google.protobuf.AbstractParser<Origin>() {
      @java.lang.Override
      public Origin parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Origin(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Origin> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Origin> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.Origin getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ControlMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.ControlMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
     * @return Whether the watermark field is set.
     */
    boolean hasWatermark();
    /**
     * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
     * @return The watermark.
     */
    com.acme.glup.MetadataProto.ControlMessage.Watermark getWatermark();
    /**
     * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
     */
    com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getWatermarkOrBuilder();
  }
  /**
   * <pre>
   * For use by infrastructure teams. 
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.ControlMessage}
   */
  public  static final class ControlMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.ControlMessage)
      ControlMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ControlMessage.newBuilder() to construct.
    private ControlMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ControlMessage() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ControlMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ControlMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder subBuilder = null;
              if (watermark_ != null) {
                subBuilder = watermark_.toBuilder();
              }
              watermark_ = input.readMessage(com.acme.glup.MetadataProto.ControlMessage.Watermark.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(watermark_);
                watermark_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.ControlMessage.class, com.acme.glup.MetadataProto.ControlMessage.Builder.class);
    }

    /**
     * Protobuf enum {@code Acme.Glup.ControlMessage.Cluster}
     */
    public enum Cluster
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNSUPPORTED_CLUSTER = 0;</code>
       */
      UNSUPPORTED_CLUSTER(0),
      /**
       * <code>LOCAL = 2;</code>
       */
      LOCAL(2),
      /**
       * <code>CENTRAL = 3;</code>
       */
      CENTRAL(3),
      /**
       * <code>STREAM = 4;</code>
       */
      STREAM(4),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNSUPPORTED_CLUSTER = 0;</code>
       */
      public static final int UNSUPPORTED_CLUSTER_VALUE = 0;
      /**
       * <code>LOCAL = 2;</code>
       */
      public static final int LOCAL_VALUE = 2;
      /**
       * <code>CENTRAL = 3;</code>
       */
      public static final int CENTRAL_VALUE = 3;
      /**
       * <code>STREAM = 4;</code>
       */
      public static final int STREAM_VALUE = 4;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Cluster valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Cluster forNumber(int value) {
        switch (value) {
          case 0: return UNSUPPORTED_CLUSTER;
          case 2: return LOCAL;
          case 3: return CENTRAL;
          case 4: return STREAM;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Cluster>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Cluster> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Cluster>() {
              public Cluster findValueByNumber(int number) {
                return Cluster.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.ControlMessage.getDescriptor().getEnumTypes().get(0);
      }

      private static final Cluster[] VALUES = values();

      public static Cluster valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Cluster(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:Acme.Glup.ControlMessage.Cluster)
    }

    public interface WatermarkOriginOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Acme.Glup.ControlMessage.WatermarkOrigin)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>string kafka_topic = 1;</code>
       * @return The kafkaTopic.
       */
      java.lang.String getKafkaTopic();
      /**
       * <code>string kafka_topic = 1;</code>
       * @return The bytes for kafkaTopic.
       */
      com.google.protobuf.ByteString
          getKafkaTopicBytes();

      /**
       * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
       * @return The enum numeric value on the wire for datacenter.
       */
      int getDatacenterValue();
      /**
       * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
       * @return The datacenter.
       */
      com.acme.glup.MetadataProto.DataCenter getDatacenter();

      /**
       * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
       * @return The enum numeric value on the wire for cluster.
       */
      int getClusterValue();
      /**
       * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
       * @return The cluster.
       */
      com.acme.glup.MetadataProto.ControlMessage.Cluster getCluster();
    }
    /**
     * Protobuf type {@code Acme.Glup.ControlMessage.WatermarkOrigin}
     */
    public  static final class WatermarkOrigin extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Acme.Glup.ControlMessage.WatermarkOrigin)
        WatermarkOriginOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use WatermarkOrigin.newBuilder() to construct.
      private WatermarkOrigin(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private WatermarkOrigin() {
        kafkaTopic_ = "";
        datacenter_ = 0;
        cluster_ = 0;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new WatermarkOrigin();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private WatermarkOrigin(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();

                kafkaTopic_ = s;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();

                datacenter_ = rawValue;
                break;
              }
              case 24: {
                int rawValue = input.readEnum();

                cluster_ = rawValue;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.class, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.Builder.class);
      }

      public static final int KAFKA_TOPIC_FIELD_NUMBER = 1;
      private volatile java.lang.Object kafkaTopic_;
      /**
       * <code>string kafka_topic = 1;</code>
       * @return The kafkaTopic.
       */
      public java.lang.String getKafkaTopic() {
        java.lang.Object ref = kafkaTopic_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          kafkaTopic_ = s;
          return s;
        }
      }
      /**
       * <code>string kafka_topic = 1;</code>
       * @return The bytes for kafkaTopic.
       */
      public com.google.protobuf.ByteString
          getKafkaTopicBytes() {
        java.lang.Object ref = kafkaTopic_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kafkaTopic_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DATACENTER_FIELD_NUMBER = 2;
      private int datacenter_;
      /**
       * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
       * @return The enum numeric value on the wire for datacenter.
       */
      public int getDatacenterValue() {
        return datacenter_;
      }
      /**
       * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
       * @return The datacenter.
       */
      public com.acme.glup.MetadataProto.DataCenter getDatacenter() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(datacenter_);
        return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
      }

      public static final int CLUSTER_FIELD_NUMBER = 3;
      private int cluster_;
      /**
       * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
       * @return The enum numeric value on the wire for cluster.
       */
      public int getClusterValue() {
        return cluster_;
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
       * @return The cluster.
       */
      public com.acme.glup.MetadataProto.ControlMessage.Cluster getCluster() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.ControlMessage.Cluster result = com.acme.glup.MetadataProto.ControlMessage.Cluster.valueOf(cluster_);
        return result == null ? com.acme.glup.MetadataProto.ControlMessage.Cluster.UNRECOGNIZED : result;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getKafkaTopicBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, kafkaTopic_);
        }
        if (datacenter_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
          output.writeEnum(2, datacenter_);
        }
        if (cluster_ != com.acme.glup.MetadataProto.ControlMessage.Cluster.UNSUPPORTED_CLUSTER.getNumber()) {
          output.writeEnum(3, cluster_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getKafkaTopicBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, kafkaTopic_);
        }
        if (datacenter_ != com.acme.glup.MetadataProto.DataCenter.UNSUPPORTED_DATACENTER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, datacenter_);
        }
        if (cluster_ != com.acme.glup.MetadataProto.ControlMessage.Cluster.UNSUPPORTED_CLUSTER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, cluster_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin)) {
          return super.equals(obj);
        }
        com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin other = (com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin) obj;

        if (!getKafkaTopic()
            .equals(other.getKafkaTopic())) return false;
        if (datacenter_ != other.datacenter_) return false;
        if (cluster_ != other.cluster_) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + KAFKA_TOPIC_FIELD_NUMBER;
        hash = (53 * hash) + getKafkaTopic().hashCode();
        hash = (37 * hash) + DATACENTER_FIELD_NUMBER;
        hash = (53 * hash) + datacenter_;
        hash = (37 * hash) + CLUSTER_FIELD_NUMBER;
        hash = (53 * hash) + cluster_;
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Acme.Glup.ControlMessage.WatermarkOrigin}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Acme.Glup.ControlMessage.WatermarkOrigin)
          com.acme.glup.MetadataProto.ControlMessage.WatermarkOriginOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.class, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.Builder.class);
        }

        // Construct using com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          kafkaTopic_ = "";

          datacenter_ = 0;

          cluster_ = 0;

          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_descriptor;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin getDefaultInstanceForType() {
          return com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.getDefaultInstance();
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin build() {
          com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin buildPartial() {
          com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin result = new com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin(this);
          result.kafkaTopic_ = kafkaTopic_;
          result.datacenter_ = datacenter_;
          result.cluster_ = cluster_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin) {
            return mergeFrom((com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin other) {
          if (other == com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin.getDefaultInstance()) return this;
          if (!other.getKafkaTopic().isEmpty()) {
            kafkaTopic_ = other.kafkaTopic_;
            onChanged();
          }
          if (other.datacenter_ != 0) {
            setDatacenterValue(other.getDatacenterValue());
          }
          if (other.cluster_ != 0) {
            setClusterValue(other.getClusterValue());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private java.lang.Object kafkaTopic_ = "";
        /**
         * <code>string kafka_topic = 1;</code>
         * @return The kafkaTopic.
         */
        public java.lang.String getKafkaTopic() {
          java.lang.Object ref = kafkaTopic_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            kafkaTopic_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string kafka_topic = 1;</code>
         * @return The bytes for kafkaTopic.
         */
        public com.google.protobuf.ByteString
            getKafkaTopicBytes() {
          java.lang.Object ref = kafkaTopic_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            kafkaTopic_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string kafka_topic = 1;</code>
         * @param value The kafkaTopic to set.
         * @return This builder for chaining.
         */
        public Builder setKafkaTopic(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          kafkaTopic_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string kafka_topic = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearKafkaTopic() {
          
          kafkaTopic_ = getDefaultInstance().getKafkaTopic();
          onChanged();
          return this;
        }
        /**
         * <code>string kafka_topic = 1;</code>
         * @param value The bytes for kafkaTopic to set.
         * @return This builder for chaining.
         */
        public Builder setKafkaTopicBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          kafkaTopic_ = value;
          onChanged();
          return this;
        }

        private int datacenter_ = 0;
        /**
         * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
         * @return The enum numeric value on the wire for datacenter.
         */
        public int getDatacenterValue() {
          return datacenter_;
        }
        /**
         * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
         * @param value The enum numeric value on the wire for datacenter to set.
         * @return This builder for chaining.
         */
        public Builder setDatacenterValue(int value) {
          datacenter_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
         * @return The datacenter.
         */
        public com.acme.glup.MetadataProto.DataCenter getDatacenter() {
          @SuppressWarnings("deprecation")
          com.acme.glup.MetadataProto.DataCenter result = com.acme.glup.MetadataProto.DataCenter.valueOf(datacenter_);
          return result == null ? com.acme.glup.MetadataProto.DataCenter.UNRECOGNIZED : result;
        }
        /**
         * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
         * @param value The datacenter to set.
         * @return This builder for chaining.
         */
        public Builder setDatacenter(com.acme.glup.MetadataProto.DataCenter value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          datacenter_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.DataCenter datacenter = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearDatacenter() {
          
          datacenter_ = 0;
          onChanged();
          return this;
        }

        private int cluster_ = 0;
        /**
         * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
         * @return The enum numeric value on the wire for cluster.
         */
        public int getClusterValue() {
          return cluster_;
        }
        /**
         * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
         * @param value The enum numeric value on the wire for cluster to set.
         * @return This builder for chaining.
         */
        public Builder setClusterValue(int value) {
          cluster_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
         * @return The cluster.
         */
        public com.acme.glup.MetadataProto.ControlMessage.Cluster getCluster() {
          @SuppressWarnings("deprecation")
          com.acme.glup.MetadataProto.ControlMessage.Cluster result = com.acme.glup.MetadataProto.ControlMessage.Cluster.valueOf(cluster_);
          return result == null ? com.acme.glup.MetadataProto.ControlMessage.Cluster.UNRECOGNIZED : result;
        }
        /**
         * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
         * @param value The cluster to set.
         * @return This builder for chaining.
         */
        public Builder setCluster(com.acme.glup.MetadataProto.ControlMessage.Cluster value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          cluster_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.Acme.Glup.ControlMessage.Cluster cluster = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearCluster() {
          
          cluster_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:Acme.Glup.ControlMessage.WatermarkOrigin)
      }

      // @@protoc_insertion_point(class_scope:Acme.Glup.ControlMessage.WatermarkOrigin)
      private static final com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin();
      }

      public static com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<WatermarkOrigin>
          PARSER = new com.google.protobuf.AbstractParser<WatermarkOrigin>() {
        @java.lang.Override
        public WatermarkOrigin parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new WatermarkOrigin(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<WatermarkOrigin> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<WatermarkOrigin> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrigin getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface WatermarkOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Acme.Glup.ControlMessage.Watermark)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * backward compatibility watermark type
       * </pre>
       *
       * <code>string type = 1;</code>
       * @return The type.
       */
      java.lang.String getType();
      /**
       * <pre>
       * backward compatibility watermark type
       * </pre>
       *
       * <code>string type = 1;</code>
       * @return The bytes for type.
       */
      com.google.protobuf.ByteString
          getTypeBytes();

      /**
       * <pre>
       * hostname of sender
       * </pre>
       *
       * <code>string hostname = 2;</code>
       * @return The hostname.
       */
      java.lang.String getHostname();
      /**
       * <pre>
       * hostname of sender
       * </pre>
       *
       * <code>string hostname = 2;</code>
       * @return The bytes for hostname.
       */
      com.google.protobuf.ByteString
          getHostnameBytes();

      /**
       * <pre>
       * topic concerned
       * </pre>
       *
       * <code>string kafka_topic = 3;</code>
       * @return The kafkaTopic.
       */
      java.lang.String getKafkaTopic();
      /**
       * <pre>
       * topic concerned
       * </pre>
       *
       * <code>string kafka_topic = 3;</code>
       * @return The bytes for kafkaTopic.
       */
      com.google.protobuf.ByteString
          getKafkaTopicBytes();

      /**
       * <pre>
       * partition id
       * </pre>
       *
       * <code>int32 partition = 4;</code>
       * @return The partition.
       */
      int getPartition();

      /**
       * <pre>
       * partition count
       * </pre>
       *
       * <code>int32 partition_count = 5;</code>
       * @return The partitionCount.
       */
      int getPartitionCount();

      /**
       * <pre>
       * process uuid of sender
       * </pre>
       *
       * <code>bytes process_uuid = 6;</code>
       * @return The processUuid.
       */
      com.google.protobuf.ByteString getProcessUuid();

      /**
       * <pre>
       * region of sender
       * </pre>
       *
       * <code>string region = 7;</code>
       * @return The region.
       */
      java.lang.String getRegion();
      /**
       * <pre>
       * region of sender
       * </pre>
       *
       * <code>string region = 7;</code>
       * @return The bytes for region.
       */
      com.google.protobuf.ByteString
          getRegionBytes();

      /**
       * <pre>
       * timestamp in second
       * </pre>
       *
       * <code>int32 timestamp_seconds = 8 [(.Acme.Glup.json) = { ... }</code>
       * @return The timestampSeconds.
       */
      int getTimestampSeconds();

      /**
       * <pre>
       * cluster
       * </pre>
       *
       * <code>string cluster = 9;</code>
       * @return The cluster.
       */
      java.lang.String getCluster();
      /**
       * <pre>
       * cluster
       * </pre>
       *
       * <code>string cluster = 9;</code>
       * @return The bytes for cluster.
       */
      com.google.protobuf.ByteString
          getClusterBytes();

      /**
       * <pre>
       * prod or preprod
       * </pre>
       *
       * <code>string environment = 10;</code>
       * @return The environment.
       */
      java.lang.String getEnvironment();
      /**
       * <pre>
       * prod or preprod
       * </pre>
       *
       * <code>string environment = 10;</code>
       * @return The bytes for environment.
       */
      com.google.protobuf.ByteString
          getEnvironmentBytes();

      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */
      int getSetFieldsCount();
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */
      boolean containsSetFields(
          int key);
      /**
       * Use {@link #getSetFieldsMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.Integer, java.lang.Boolean>
      getSetFields();
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */
      java.util.Map<java.lang.Integer, java.lang.Boolean>
      getSetFieldsMap();
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      boolean getSetFieldsOrDefault(
          int key,
          boolean defaultValue);
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      boolean getSetFieldsOrThrow(
          int key);
    }
    /**
     * Protobuf type {@code Acme.Glup.ControlMessage.Watermark}
     */
    public  static final class Watermark extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Acme.Glup.ControlMessage.Watermark)
        WatermarkOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Watermark.newBuilder() to construct.
      private Watermark(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Watermark() {
        type_ = "";
        hostname_ = "";
        kafkaTopic_ = "";
        processUuid_ = com.google.protobuf.ByteString.EMPTY;
        region_ = "";
        cluster_ = "";
        environment_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Watermark();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Watermark(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();

                type_ = s;
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();

                hostname_ = s;
                break;
              }
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();

                kafkaTopic_ = s;
                break;
              }
              case 32: {

                partition_ = input.readInt32();
                break;
              }
              case 40: {

                partitionCount_ = input.readInt32();
                break;
              }
              case 50: {

                processUuid_ = input.readBytes();
                break;
              }
              case 58: {
                java.lang.String s = input.readStringRequireUtf8();

                region_ = s;
                break;
              }
              case 64: {

                timestampSeconds_ = input.readInt32();
                break;
              }
              case 74: {
                java.lang.String s = input.readStringRequireUtf8();

                cluster_ = s;
                break;
              }
              case 82: {
                java.lang.String s = input.readStringRequireUtf8();

                environment_ = s;
                break;
              }
              case 400082: {
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  setFields_ = com.google.protobuf.MapField.newMapField(
                      SetFieldsDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000001;
                }
                com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Boolean>
                setFields__ = input.readMessage(
                    SetFieldsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                setFields_.getMutableMap().put(
                    setFields__.getKey(), setFields__.getValue());
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_Watermark_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      @java.lang.Override
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 50010:
            return internalGetSetFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_Watermark_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.ControlMessage.Watermark.class, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder.class);
      }

      public static final int TYPE_FIELD_NUMBER = 1;
      private volatile java.lang.Object type_;
      /**
       * <pre>
       * backward compatibility watermark type
       * </pre>
       *
       * <code>string type = 1;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * backward compatibility watermark type
       * </pre>
       *
       * <code>string type = 1;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int HOSTNAME_FIELD_NUMBER = 2;
      private volatile java.lang.Object hostname_;
      /**
       * <pre>
       * hostname of sender
       * </pre>
       *
       * <code>string hostname = 2;</code>
       * @return The hostname.
       */
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hostname_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * hostname of sender
       * </pre>
       *
       * <code>string hostname = 2;</code>
       * @return The bytes for hostname.
       */
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int KAFKA_TOPIC_FIELD_NUMBER = 3;
      private volatile java.lang.Object kafkaTopic_;
      /**
       * <pre>
       * topic concerned
       * </pre>
       *
       * <code>string kafka_topic = 3;</code>
       * @return The kafkaTopic.
       */
      public java.lang.String getKafkaTopic() {
        java.lang.Object ref = kafkaTopic_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          kafkaTopic_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * topic concerned
       * </pre>
       *
       * <code>string kafka_topic = 3;</code>
       * @return The bytes for kafkaTopic.
       */
      public com.google.protobuf.ByteString
          getKafkaTopicBytes() {
        java.lang.Object ref = kafkaTopic_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kafkaTopic_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PARTITION_FIELD_NUMBER = 4;
      private int partition_;
      /**
       * <pre>
       * partition id
       * </pre>
       *
       * <code>int32 partition = 4;</code>
       * @return The partition.
       */
      public int getPartition() {
        return partition_;
      }

      public static final int PARTITION_COUNT_FIELD_NUMBER = 5;
      private int partitionCount_;
      /**
       * <pre>
       * partition count
       * </pre>
       *
       * <code>int32 partition_count = 5;</code>
       * @return The partitionCount.
       */
      public int getPartitionCount() {
        return partitionCount_;
      }

      public static final int PROCESS_UUID_FIELD_NUMBER = 6;
      private com.google.protobuf.ByteString processUuid_;
      /**
       * <pre>
       * process uuid of sender
       * </pre>
       *
       * <code>bytes process_uuid = 6;</code>
       * @return The processUuid.
       */
      public com.google.protobuf.ByteString getProcessUuid() {
        return processUuid_;
      }

      public static final int REGION_FIELD_NUMBER = 7;
      private volatile java.lang.Object region_;
      /**
       * <pre>
       * region of sender
       * </pre>
       *
       * <code>string region = 7;</code>
       * @return The region.
       */
      public java.lang.String getRegion() {
        java.lang.Object ref = region_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          region_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * region of sender
       * </pre>
       *
       * <code>string region = 7;</code>
       * @return The bytes for region.
       */
      public com.google.protobuf.ByteString
          getRegionBytes() {
        java.lang.Object ref = region_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          region_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TIMESTAMP_SECONDS_FIELD_NUMBER = 8;
      private int timestampSeconds_;
      /**
       * <pre>
       * timestamp in second
       * </pre>
       *
       * <code>int32 timestamp_seconds = 8 [(.Acme.Glup.json) = { ... }</code>
       * @return The timestampSeconds.
       */
      public int getTimestampSeconds() {
        return timestampSeconds_;
      }

      public static final int CLUSTER_FIELD_NUMBER = 9;
      private volatile java.lang.Object cluster_;
      /**
       * <pre>
       * cluster
       * </pre>
       *
       * <code>string cluster = 9;</code>
       * @return The cluster.
       */
      public java.lang.String getCluster() {
        java.lang.Object ref = cluster_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cluster_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * cluster
       * </pre>
       *
       * <code>string cluster = 9;</code>
       * @return The bytes for cluster.
       */
      public com.google.protobuf.ByteString
          getClusterBytes() {
        java.lang.Object ref = cluster_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cluster_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int ENVIRONMENT_FIELD_NUMBER = 10;
      private volatile java.lang.Object environment_;
      /**
       * <pre>
       * prod or preprod
       * </pre>
       *
       * <code>string environment = 10;</code>
       * @return The environment.
       */
      public java.lang.String getEnvironment() {
        java.lang.Object ref = environment_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          environment_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * prod or preprod
       * </pre>
       *
       * <code>string environment = 10;</code>
       * @return The bytes for environment.
       */
      public com.google.protobuf.ByteString
          getEnvironmentBytes() {
        java.lang.Object ref = environment_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          environment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SET_FIELDS_FIELD_NUMBER = 50010;
      private static final class SetFieldsDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            java.lang.Integer, java.lang.Boolean> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.Integer, java.lang.Boolean>newDefaultInstance(
                    com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_Watermark_SetFieldsEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.INT32,
                    0,
                    com.google.protobuf.WireFormat.FieldType.BOOL,
                    false);
      }
      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.Boolean> setFields_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
      internalGetSetFields() {
        if (setFields_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              SetFieldsDefaultEntryHolder.defaultEntry);
        }
        return setFields_;
      }

      public int getSetFieldsCount() {
        return internalGetSetFields().getMap().size();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean containsSetFields(
          int key) {
        
        return internalGetSetFields().getMap().containsKey(key);
      }
      /**
       * Use {@link #getSetFieldsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFields() {
        return getSetFieldsMap();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFieldsMap() {
        return internalGetSetFields().getMap();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean getSetFieldsOrDefault(
          int key,
          boolean defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.Boolean> map =
            internalGetSetFields().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean getSetFieldsOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.Boolean> map =
            internalGetSetFields().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getTypeBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
        }
        if (!getHostnameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, hostname_);
        }
        if (!getKafkaTopicBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, kafkaTopic_);
        }
        if (partition_ != 0) {
          output.writeInt32(4, partition_);
        }
        if (partitionCount_ != 0) {
          output.writeInt32(5, partitionCount_);
        }
        if (!processUuid_.isEmpty()) {
          output.writeBytes(6, processUuid_);
        }
        if (!getRegionBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 7, region_);
        }
        if (timestampSeconds_ != 0) {
          output.writeInt32(8, timestampSeconds_);
        }
        if (!getClusterBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 9, cluster_);
        }
        if (!getEnvironmentBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 10, environment_);
        }
        com.google.protobuf.GeneratedMessageV3
          .serializeIntegerMapTo(
            output,
            internalGetSetFields(),
            SetFieldsDefaultEntryHolder.defaultEntry,
            50010);
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getTypeBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, type_);
        }
        if (!getHostnameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, hostname_);
        }
        if (!getKafkaTopicBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, kafkaTopic_);
        }
        if (partition_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, partition_);
        }
        if (partitionCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(5, partitionCount_);
        }
        if (!processUuid_.isEmpty()) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(6, processUuid_);
        }
        if (!getRegionBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, region_);
        }
        if (timestampSeconds_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(8, timestampSeconds_);
        }
        if (!getClusterBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, cluster_);
        }
        if (!getEnvironmentBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, environment_);
        }
        for (java.util.Map.Entry<java.lang.Integer, java.lang.Boolean> entry
             : internalGetSetFields().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Boolean>
          setFields__ = SetFieldsDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(50010, setFields__);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.acme.glup.MetadataProto.ControlMessage.Watermark)) {
          return super.equals(obj);
        }
        com.acme.glup.MetadataProto.ControlMessage.Watermark other = (com.acme.glup.MetadataProto.ControlMessage.Watermark) obj;

        if (!getType()
            .equals(other.getType())) return false;
        if (!getHostname()
            .equals(other.getHostname())) return false;
        if (!getKafkaTopic()
            .equals(other.getKafkaTopic())) return false;
        if (getPartition()
            != other.getPartition()) return false;
        if (getPartitionCount()
            != other.getPartitionCount()) return false;
        if (!getProcessUuid()
            .equals(other.getProcessUuid())) return false;
        if (!getRegion()
            .equals(other.getRegion())) return false;
        if (getTimestampSeconds()
            != other.getTimestampSeconds()) return false;
        if (!getCluster()
            .equals(other.getCluster())) return false;
        if (!getEnvironment()
            .equals(other.getEnvironment())) return false;
        if (!internalGetSetFields().equals(
            other.internalGetSetFields())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
        hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
        hash = (53 * hash) + getHostname().hashCode();
        hash = (37 * hash) + KAFKA_TOPIC_FIELD_NUMBER;
        hash = (53 * hash) + getKafkaTopic().hashCode();
        hash = (37 * hash) + PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getPartition();
        hash = (37 * hash) + PARTITION_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getPartitionCount();
        hash = (37 * hash) + PROCESS_UUID_FIELD_NUMBER;
        hash = (53 * hash) + getProcessUuid().hashCode();
        hash = (37 * hash) + REGION_FIELD_NUMBER;
        hash = (53 * hash) + getRegion().hashCode();
        hash = (37 * hash) + TIMESTAMP_SECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getTimestampSeconds();
        hash = (37 * hash) + CLUSTER_FIELD_NUMBER;
        hash = (53 * hash) + getCluster().hashCode();
        hash = (37 * hash) + ENVIRONMENT_FIELD_NUMBER;
        hash = (53 * hash) + getEnvironment().hashCode();
        if (!internalGetSetFields().getMap().isEmpty()) {
          hash = (37 * hash) + SET_FIELDS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetSetFields().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.acme.glup.MetadataProto.ControlMessage.Watermark parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.acme.glup.MetadataProto.ControlMessage.Watermark prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Acme.Glup.ControlMessage.Watermark}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Acme.Glup.ControlMessage.Watermark)
          com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_Watermark_descriptor;
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 50010:
              return internalGetSetFields();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 50010:
              return internalGetMutableSetFields();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_Watermark_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.acme.glup.MetadataProto.ControlMessage.Watermark.class, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder.class);
        }

        // Construct using com.acme.glup.MetadataProto.ControlMessage.Watermark.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          type_ = "";

          hostname_ = "";

          kafkaTopic_ = "";

          partition_ = 0;

          partitionCount_ = 0;

          processUuid_ = com.google.protobuf.ByteString.EMPTY;

          region_ = "";

          timestampSeconds_ = 0;

          cluster_ = "";

          environment_ = "";

          internalGetMutableSetFields().clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_Watermark_descriptor;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.ControlMessage.Watermark getDefaultInstanceForType() {
          return com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance();
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.ControlMessage.Watermark build() {
          com.acme.glup.MetadataProto.ControlMessage.Watermark result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.acme.glup.MetadataProto.ControlMessage.Watermark buildPartial() {
          com.acme.glup.MetadataProto.ControlMessage.Watermark result = new com.acme.glup.MetadataProto.ControlMessage.Watermark(this);
          int from_bitField0_ = bitField0_;
          result.type_ = type_;
          result.hostname_ = hostname_;
          result.kafkaTopic_ = kafkaTopic_;
          result.partition_ = partition_;
          result.partitionCount_ = partitionCount_;
          result.processUuid_ = processUuid_;
          result.region_ = region_;
          result.timestampSeconds_ = timestampSeconds_;
          result.cluster_ = cluster_;
          result.environment_ = environment_;
          result.setFields_ = internalGetSetFields();
          result.setFields_.makeImmutable();
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.acme.glup.MetadataProto.ControlMessage.Watermark) {
            return mergeFrom((com.acme.glup.MetadataProto.ControlMessage.Watermark)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.acme.glup.MetadataProto.ControlMessage.Watermark other) {
          if (other == com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance()) return this;
          if (!other.getType().isEmpty()) {
            type_ = other.type_;
            onChanged();
          }
          if (!other.getHostname().isEmpty()) {
            hostname_ = other.hostname_;
            onChanged();
          }
          if (!other.getKafkaTopic().isEmpty()) {
            kafkaTopic_ = other.kafkaTopic_;
            onChanged();
          }
          if (other.getPartition() != 0) {
            setPartition(other.getPartition());
          }
          if (other.getPartitionCount() != 0) {
            setPartitionCount(other.getPartitionCount());
          }
          if (other.getProcessUuid() != com.google.protobuf.ByteString.EMPTY) {
            setProcessUuid(other.getProcessUuid());
          }
          if (!other.getRegion().isEmpty()) {
            region_ = other.region_;
            onChanged();
          }
          if (other.getTimestampSeconds() != 0) {
            setTimestampSeconds(other.getTimestampSeconds());
          }
          if (!other.getCluster().isEmpty()) {
            cluster_ = other.cluster_;
            onChanged();
          }
          if (!other.getEnvironment().isEmpty()) {
            environment_ = other.environment_;
            onChanged();
          }
          internalGetMutableSetFields().mergeFrom(
              other.internalGetSetFields());
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.acme.glup.MetadataProto.ControlMessage.Watermark parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.acme.glup.MetadataProto.ControlMessage.Watermark) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object type_ = "";
        /**
         * <pre>
         * backward compatibility watermark type
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return The type.
         */
        public java.lang.String getType() {
          java.lang.Object ref = type_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            type_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * backward compatibility watermark type
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return The bytes for type.
         */
        public com.google.protobuf.ByteString
            getTypeBytes() {
          java.lang.Object ref = type_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            type_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * backward compatibility watermark type
         * </pre>
         *
         * <code>string type = 1;</code>
         * @param value The type to set.
         * @return This builder for chaining.
         */
        public Builder setType(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          type_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * backward compatibility watermark type
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearType() {
          
          type_ = getDefaultInstance().getType();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * backward compatibility watermark type
         * </pre>
         *
         * <code>string type = 1;</code>
         * @param value The bytes for type to set.
         * @return This builder for chaining.
         */
        public Builder setTypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          type_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object hostname_ = "";
        /**
         * <pre>
         * hostname of sender
         * </pre>
         *
         * <code>string hostname = 2;</code>
         * @return The hostname.
         */
        public java.lang.String getHostname() {
          java.lang.Object ref = hostname_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            hostname_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * hostname of sender
         * </pre>
         *
         * <code>string hostname = 2;</code>
         * @return The bytes for hostname.
         */
        public com.google.protobuf.ByteString
            getHostnameBytes() {
          java.lang.Object ref = hostname_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            hostname_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * hostname of sender
         * </pre>
         *
         * <code>string hostname = 2;</code>
         * @param value The hostname to set.
         * @return This builder for chaining.
         */
        public Builder setHostname(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          hostname_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * hostname of sender
         * </pre>
         *
         * <code>string hostname = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearHostname() {
          
          hostname_ = getDefaultInstance().getHostname();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * hostname of sender
         * </pre>
         *
         * <code>string hostname = 2;</code>
         * @param value The bytes for hostname to set.
         * @return This builder for chaining.
         */
        public Builder setHostnameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          hostname_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object kafkaTopic_ = "";
        /**
         * <pre>
         * topic concerned
         * </pre>
         *
         * <code>string kafka_topic = 3;</code>
         * @return The kafkaTopic.
         */
        public java.lang.String getKafkaTopic() {
          java.lang.Object ref = kafkaTopic_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            kafkaTopic_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * topic concerned
         * </pre>
         *
         * <code>string kafka_topic = 3;</code>
         * @return The bytes for kafkaTopic.
         */
        public com.google.protobuf.ByteString
            getKafkaTopicBytes() {
          java.lang.Object ref = kafkaTopic_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            kafkaTopic_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * topic concerned
         * </pre>
         *
         * <code>string kafka_topic = 3;</code>
         * @param value The kafkaTopic to set.
         * @return This builder for chaining.
         */
        public Builder setKafkaTopic(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          kafkaTopic_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * topic concerned
         * </pre>
         *
         * <code>string kafka_topic = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearKafkaTopic() {
          
          kafkaTopic_ = getDefaultInstance().getKafkaTopic();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * topic concerned
         * </pre>
         *
         * <code>string kafka_topic = 3;</code>
         * @param value The bytes for kafkaTopic to set.
         * @return This builder for chaining.
         */
        public Builder setKafkaTopicBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          kafkaTopic_ = value;
          onChanged();
          return this;
        }

        private int partition_ ;
        /**
         * <pre>
         * partition id
         * </pre>
         *
         * <code>int32 partition = 4;</code>
         * @return The partition.
         */
        public int getPartition() {
          return partition_;
        }
        /**
         * <pre>
         * partition id
         * </pre>
         *
         * <code>int32 partition = 4;</code>
         * @param value The partition to set.
         * @return This builder for chaining.
         */
        public Builder setPartition(int value) {
          
          partition_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * partition id
         * </pre>
         *
         * <code>int32 partition = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearPartition() {
          
          partition_ = 0;
          onChanged();
          return this;
        }

        private int partitionCount_ ;
        /**
         * <pre>
         * partition count
         * </pre>
         *
         * <code>int32 partition_count = 5;</code>
         * @return The partitionCount.
         */
        public int getPartitionCount() {
          return partitionCount_;
        }
        /**
         * <pre>
         * partition count
         * </pre>
         *
         * <code>int32 partition_count = 5;</code>
         * @param value The partitionCount to set.
         * @return This builder for chaining.
         */
        public Builder setPartitionCount(int value) {
          
          partitionCount_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * partition count
         * </pre>
         *
         * <code>int32 partition_count = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearPartitionCount() {
          
          partitionCount_ = 0;
          onChanged();
          return this;
        }

        private com.google.protobuf.ByteString processUuid_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         * process uuid of sender
         * </pre>
         *
         * <code>bytes process_uuid = 6;</code>
         * @return The processUuid.
         */
        public com.google.protobuf.ByteString getProcessUuid() {
          return processUuid_;
        }
        /**
         * <pre>
         * process uuid of sender
         * </pre>
         *
         * <code>bytes process_uuid = 6;</code>
         * @param value The processUuid to set.
         * @return This builder for chaining.
         */
        public Builder setProcessUuid(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          processUuid_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * process uuid of sender
         * </pre>
         *
         * <code>bytes process_uuid = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearProcessUuid() {
          
          processUuid_ = getDefaultInstance().getProcessUuid();
          onChanged();
          return this;
        }

        private java.lang.Object region_ = "";
        /**
         * <pre>
         * region of sender
         * </pre>
         *
         * <code>string region = 7;</code>
         * @return The region.
         */
        public java.lang.String getRegion() {
          java.lang.Object ref = region_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            region_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * region of sender
         * </pre>
         *
         * <code>string region = 7;</code>
         * @return The bytes for region.
         */
        public com.google.protobuf.ByteString
            getRegionBytes() {
          java.lang.Object ref = region_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            region_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * region of sender
         * </pre>
         *
         * <code>string region = 7;</code>
         * @param value The region to set.
         * @return This builder for chaining.
         */
        public Builder setRegion(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          region_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * region of sender
         * </pre>
         *
         * <code>string region = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearRegion() {
          
          region_ = getDefaultInstance().getRegion();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * region of sender
         * </pre>
         *
         * <code>string region = 7;</code>
         * @param value The bytes for region to set.
         * @return This builder for chaining.
         */
        public Builder setRegionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          region_ = value;
          onChanged();
          return this;
        }

        private int timestampSeconds_ ;
        /**
         * <pre>
         * timestamp in second
         * </pre>
         *
         * <code>int32 timestamp_seconds = 8 [(.Acme.Glup.json) = { ... }</code>
         * @return The timestampSeconds.
         */
        public int getTimestampSeconds() {
          return timestampSeconds_;
        }
        /**
         * <pre>
         * timestamp in second
         * </pre>
         *
         * <code>int32 timestamp_seconds = 8 [(.Acme.Glup.json) = { ... }</code>
         * @param value The timestampSeconds to set.
         * @return This builder for chaining.
         */
        public Builder setTimestampSeconds(int value) {
          
          timestampSeconds_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * timestamp in second
         * </pre>
         *
         * <code>int32 timestamp_seconds = 8 [(.Acme.Glup.json) = { ... }</code>
         * @return This builder for chaining.
         */
        public Builder clearTimestampSeconds() {
          
          timestampSeconds_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object cluster_ = "";
        /**
         * <pre>
         * cluster
         * </pre>
         *
         * <code>string cluster = 9;</code>
         * @return The cluster.
         */
        public java.lang.String getCluster() {
          java.lang.Object ref = cluster_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            cluster_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * cluster
         * </pre>
         *
         * <code>string cluster = 9;</code>
         * @return The bytes for cluster.
         */
        public com.google.protobuf.ByteString
            getClusterBytes() {
          java.lang.Object ref = cluster_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            cluster_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * cluster
         * </pre>
         *
         * <code>string cluster = 9;</code>
         * @param value The cluster to set.
         * @return This builder for chaining.
         */
        public Builder setCluster(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          cluster_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * cluster
         * </pre>
         *
         * <code>string cluster = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearCluster() {
          
          cluster_ = getDefaultInstance().getCluster();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * cluster
         * </pre>
         *
         * <code>string cluster = 9;</code>
         * @param value The bytes for cluster to set.
         * @return This builder for chaining.
         */
        public Builder setClusterBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          cluster_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object environment_ = "";
        /**
         * <pre>
         * prod or preprod
         * </pre>
         *
         * <code>string environment = 10;</code>
         * @return The environment.
         */
        public java.lang.String getEnvironment() {
          java.lang.Object ref = environment_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            environment_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * prod or preprod
         * </pre>
         *
         * <code>string environment = 10;</code>
         * @return The bytes for environment.
         */
        public com.google.protobuf.ByteString
            getEnvironmentBytes() {
          java.lang.Object ref = environment_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            environment_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * prod or preprod
         * </pre>
         *
         * <code>string environment = 10;</code>
         * @param value The environment to set.
         * @return This builder for chaining.
         */
        public Builder setEnvironment(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          environment_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * prod or preprod
         * </pre>
         *
         * <code>string environment = 10;</code>
         * @return This builder for chaining.
         */
        public Builder clearEnvironment() {
          
          environment_ = getDefaultInstance().getEnvironment();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * prod or preprod
         * </pre>
         *
         * <code>string environment = 10;</code>
         * @param value The bytes for environment to set.
         * @return This builder for chaining.
         */
        public Builder setEnvironmentBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          environment_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.MapField<
            java.lang.Integer, java.lang.Boolean> setFields_;
        private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
        internalGetSetFields() {
          if (setFields_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                SetFieldsDefaultEntryHolder.defaultEntry);
          }
          return setFields_;
        }
        private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
        internalGetMutableSetFields() {
          onChanged();;
          if (setFields_ == null) {
            setFields_ = com.google.protobuf.MapField.newMapField(
                SetFieldsDefaultEntryHolder.defaultEntry);
          }
          if (!setFields_.isMutable()) {
            setFields_ = setFields_.copy();
          }
          return setFields_;
        }

        public int getSetFieldsCount() {
          return internalGetSetFields().getMap().size();
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */

        public boolean containsSetFields(
            int key) {
          
          return internalGetSetFields().getMap().containsKey(key);
        }
        /**
         * Use {@link #getSetFieldsMap()} instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFields() {
          return getSetFieldsMap();
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */

        public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFieldsMap() {
          return internalGetSetFields().getMap();
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */

        public boolean getSetFieldsOrDefault(
            int key,
            boolean defaultValue) {
          
          java.util.Map<java.lang.Integer, java.lang.Boolean> map =
              internalGetSetFields().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */

        public boolean getSetFieldsOrThrow(
            int key) {
          
          java.util.Map<java.lang.Integer, java.lang.Boolean> map =
              internalGetSetFields().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }

        public Builder clearSetFields() {
          internalGetMutableSetFields().getMutableMap()
              .clear();
          return this;
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */

        public Builder removeSetFields(
            int key) {
          
          internalGetMutableSetFields().getMutableMap()
              .remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.Integer, java.lang.Boolean>
        getMutableSetFields() {
          return internalGetMutableSetFields().getMutableMap();
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */
        public Builder putSetFields(
            int key,
            boolean value) {
          
          
          internalGetMutableSetFields().getMutableMap()
              .put(key, value);
          return this;
        }
        /**
         * <pre>
         * nullable map to track set fields
         * </pre>
         *
         * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
         */

        public Builder putAllSetFields(
            java.util.Map<java.lang.Integer, java.lang.Boolean> values) {
          internalGetMutableSetFields().getMutableMap()
              .putAll(values);
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:Acme.Glup.ControlMessage.Watermark)
      }

      // @@protoc_insertion_point(class_scope:Acme.Glup.ControlMessage.Watermark)
      private static final com.acme.glup.MetadataProto.ControlMessage.Watermark DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.ControlMessage.Watermark();
      }

      public static com.acme.glup.MetadataProto.ControlMessage.Watermark getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Watermark>
          PARSER = new com.google.protobuf.AbstractParser<Watermark>() {
        @java.lang.Override
        public Watermark parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Watermark(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Watermark> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Watermark> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ControlMessage.Watermark getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int WATERMARK_FIELD_NUMBER = 1;
    private com.acme.glup.MetadataProto.ControlMessage.Watermark watermark_;
    /**
     * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
     * @return Whether the watermark field is set.
     */
    public boolean hasWatermark() {
      return watermark_ != null;
    }
    /**
     * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
     * @return The watermark.
     */
    public com.acme.glup.MetadataProto.ControlMessage.Watermark getWatermark() {
      return watermark_ == null ? com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance() : watermark_;
    }
    /**
     * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
     */
    public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getWatermarkOrBuilder() {
      return getWatermark();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (watermark_ != null) {
        output.writeMessage(1, getWatermark());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (watermark_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getWatermark());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.ControlMessage)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.ControlMessage other = (com.acme.glup.MetadataProto.ControlMessage) obj;

      if (hasWatermark() != other.hasWatermark()) return false;
      if (hasWatermark()) {
        if (!getWatermark()
            .equals(other.getWatermark())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasWatermark()) {
        hash = (37 * hash) + WATERMARK_FIELD_NUMBER;
        hash = (53 * hash) + getWatermark().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.ControlMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.ControlMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * For use by infrastructure teams. 
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.ControlMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.ControlMessage)
        com.acme.glup.MetadataProto.ControlMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.ControlMessage.class, com.acme.glup.MetadataProto.ControlMessage.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.ControlMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (watermarkBuilder_ == null) {
          watermark_ = null;
        } else {
          watermark_ = null;
          watermarkBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_ControlMessage_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ControlMessage getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.ControlMessage.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ControlMessage build() {
        com.acme.glup.MetadataProto.ControlMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.ControlMessage buildPartial() {
        com.acme.glup.MetadataProto.ControlMessage result = new com.acme.glup.MetadataProto.ControlMessage(this);
        if (watermarkBuilder_ == null) {
          result.watermark_ = watermark_;
        } else {
          result.watermark_ = watermarkBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.ControlMessage) {
          return mergeFrom((com.acme.glup.MetadataProto.ControlMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.ControlMessage other) {
        if (other == com.acme.glup.MetadataProto.ControlMessage.getDefaultInstance()) return this;
        if (other.hasWatermark()) {
          mergeWatermark(other.getWatermark());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.ControlMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.ControlMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.acme.glup.MetadataProto.ControlMessage.Watermark watermark_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> watermarkBuilder_;
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       * @return Whether the watermark field is set.
       */
      public boolean hasWatermark() {
        return watermarkBuilder_ != null || watermark_ != null;
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       * @return The watermark.
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark getWatermark() {
        if (watermarkBuilder_ == null) {
          return watermark_ == null ? com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance() : watermark_;
        } else {
          return watermarkBuilder_.getMessage();
        }
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      public Builder setWatermark(com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (watermarkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          watermark_ = value;
          onChanged();
        } else {
          watermarkBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      public Builder setWatermark(
          com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder builderForValue) {
        if (watermarkBuilder_ == null) {
          watermark_ = builderForValue.build();
          onChanged();
        } else {
          watermarkBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      public Builder mergeWatermark(com.acme.glup.MetadataProto.ControlMessage.Watermark value) {
        if (watermarkBuilder_ == null) {
          if (watermark_ != null) {
            watermark_ =
              com.acme.glup.MetadataProto.ControlMessage.Watermark.newBuilder(watermark_).mergeFrom(value).buildPartial();
          } else {
            watermark_ = value;
          }
          onChanged();
        } else {
          watermarkBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      public Builder clearWatermark() {
        if (watermarkBuilder_ == null) {
          watermark_ = null;
          onChanged();
        } else {
          watermark_ = null;
          watermarkBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder getWatermarkBuilder() {
        
        onChanged();
        return getWatermarkFieldBuilder().getBuilder();
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      public com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder getWatermarkOrBuilder() {
        if (watermarkBuilder_ != null) {
          return watermarkBuilder_.getMessageOrBuilder();
        } else {
          return watermark_ == null ?
              com.acme.glup.MetadataProto.ControlMessage.Watermark.getDefaultInstance() : watermark_;
        }
      }
      /**
       * <code>.Acme.Glup.ControlMessage.Watermark watermark = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder> 
          getWatermarkFieldBuilder() {
        if (watermarkBuilder_ == null) {
          watermarkBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.acme.glup.MetadataProto.ControlMessage.Watermark, com.acme.glup.MetadataProto.ControlMessage.Watermark.Builder, com.acme.glup.MetadataProto.ControlMessage.WatermarkOrBuilder>(
                  getWatermark(),
                  getParentForChildren(),
                  isClean());
          watermark_ = null;
        }
        return watermarkBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.ControlMessage)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.ControlMessage)
    private static final com.acme.glup.MetadataProto.ControlMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.ControlMessage();
    }

    public static com.acme.glup.MetadataProto.ControlMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ControlMessage>
        PARSER = new com.google.protobuf.AbstractParser<ControlMessage>() {
      @java.lang.Override
      public ControlMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ControlMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ControlMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ControlMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.ControlMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PartitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.Partition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Unix timestamp in seconds
     * </pre>
     *
     * <code>uint64 timestamp_seconds = 1 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The timestampSeconds.
     */
    long getTimestampSeconds();

    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The enum numeric value on the wire for hostPlatform.
     */
    int getHostPlatformValue();
    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The hostPlatform.
     */
    com.acme.glup.MetadataProto.Platform getHostPlatform();

    /**
     * <pre>
     * Other partition keys... 
     * </pre>
     *
     * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The enum numeric value on the wire for eventType.
     */
    int getEventTypeValue();
    /**
     * <pre>
     * Other partition keys... 
     * </pre>
     *
     * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The eventType.
     */
    com.acme.glup.MetadataProto.EventType getEventType();
  }
  /**
   * <pre>
   * Describes where messages should go on HDFS.
   * This information is carried by all glup message.
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.Partition}
   */
  public  static final class Partition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.Partition)
      PartitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Partition.newBuilder() to construct.
    private Partition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Partition() {
      hostPlatform_ = 0;
      eventType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Partition();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Partition(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              timestampSeconds_ = input.readUInt64();
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              hostPlatform_ = rawValue;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();

              eventType_ = rawValue;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Partition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Partition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.Partition.class, com.acme.glup.MetadataProto.Partition.Builder.class);
    }

    public static final int TIMESTAMP_SECONDS_FIELD_NUMBER = 1;
    private long timestampSeconds_;
    /**
     * <pre>
     * Unix timestamp in seconds
     * </pre>
     *
     * <code>uint64 timestamp_seconds = 1 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The timestampSeconds.
     */
    public long getTimestampSeconds() {
      return timestampSeconds_;
    }

    public static final int HOST_PLATFORM_FIELD_NUMBER = 2;
    private int hostPlatform_;
    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The enum numeric value on the wire for hostPlatform.
     */
    public int getHostPlatformValue() {
      return hostPlatform_;
    }
    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The hostPlatform.
     */
    public com.acme.glup.MetadataProto.Platform getHostPlatform() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(hostPlatform_);
      return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
    }

    public static final int EVENT_TYPE_FIELD_NUMBER = 3;
    private int eventType_;
    /**
     * <pre>
     * Other partition keys... 
     * </pre>
     *
     * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The enum numeric value on the wire for eventType.
     */
    public int getEventTypeValue() {
      return eventType_;
    }
    /**
     * <pre>
     * Other partition keys... 
     * </pre>
     *
     * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
     * @return The eventType.
     */
    public com.acme.glup.MetadataProto.EventType getEventType() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.EventType result = com.acme.glup.MetadataProto.EventType.valueOf(eventType_);
      return result == null ? com.acme.glup.MetadataProto.EventType.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestampSeconds_ != 0L) {
        output.writeUInt64(1, timestampSeconds_);
      }
      if (hostPlatform_ != com.acme.glup.MetadataProto.Platform.UNSUPPORTED_PLATFORM.getNumber()) {
        output.writeEnum(2, hostPlatform_);
      }
      if (eventType_ != com.acme.glup.MetadataProto.EventType.UNSUPPORTED_EVENT_TYPE.getNumber()) {
        output.writeEnum(3, eventType_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestampSeconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampSeconds_);
      }
      if (hostPlatform_ != com.acme.glup.MetadataProto.Platform.UNSUPPORTED_PLATFORM.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, hostPlatform_);
      }
      if (eventType_ != com.acme.glup.MetadataProto.EventType.UNSUPPORTED_EVENT_TYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, eventType_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.Partition)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.Partition other = (com.acme.glup.MetadataProto.Partition) obj;

      if (getTimestampSeconds()
          != other.getTimestampSeconds()) return false;
      if (hostPlatform_ != other.hostPlatform_) return false;
      if (eventType_ != other.eventType_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMESTAMP_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestampSeconds());
      hash = (37 * hash) + HOST_PLATFORM_FIELD_NUMBER;
      hash = (53 * hash) + hostPlatform_;
      hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + eventType_;
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.Partition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Partition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Partition parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Partition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.Partition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Describes where messages should go on HDFS.
     * This information is carried by all glup message.
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.Partition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.Partition)
        com.acme.glup.MetadataProto.PartitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Partition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Partition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.Partition.class, com.acme.glup.MetadataProto.Partition.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.Partition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        timestampSeconds_ = 0L;

        hostPlatform_ = 0;

        eventType_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Partition_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Partition getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.Partition.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Partition build() {
        com.acme.glup.MetadataProto.Partition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Partition buildPartial() {
        com.acme.glup.MetadataProto.Partition result = new com.acme.glup.MetadataProto.Partition(this);
        result.timestampSeconds_ = timestampSeconds_;
        result.hostPlatform_ = hostPlatform_;
        result.eventType_ = eventType_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.Partition) {
          return mergeFrom((com.acme.glup.MetadataProto.Partition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.Partition other) {
        if (other == com.acme.glup.MetadataProto.Partition.getDefaultInstance()) return this;
        if (other.getTimestampSeconds() != 0L) {
          setTimestampSeconds(other.getTimestampSeconds());
        }
        if (other.hostPlatform_ != 0) {
          setHostPlatformValue(other.getHostPlatformValue());
        }
        if (other.eventType_ != 0) {
          setEventTypeValue(other.getEventTypeValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.Partition parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.Partition) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long timestampSeconds_ ;
      /**
       * <pre>
       * Unix timestamp in seconds
       * </pre>
       *
       * <code>uint64 timestamp_seconds = 1 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The timestampSeconds.
       */
      public long getTimestampSeconds() {
        return timestampSeconds_;
      }
      /**
       * <pre>
       * Unix timestamp in seconds
       * </pre>
       *
       * <code>uint64 timestamp_seconds = 1 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The timestampSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampSeconds(long value) {
        
        timestampSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unix timestamp in seconds
       * </pre>
       *
       * <code>uint64 timestamp_seconds = 1 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampSeconds() {
        
        timestampSeconds_ = 0L;
        onChanged();
        return this;
      }

      private int hostPlatform_ = 0;
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @return The enum numeric value on the wire for hostPlatform.
       */
      public int getHostPlatformValue() {
        return hostPlatform_;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @param value The enum numeric value on the wire for hostPlatform to set.
       * @return This builder for chaining.
       */
      public Builder setHostPlatformValue(int value) {
        hostPlatform_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @return The hostPlatform.
       */
      public com.acme.glup.MetadataProto.Platform getHostPlatform() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(hostPlatform_);
        return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @param value The hostPlatform to set.
       * @return This builder for chaining.
       */
      public Builder setHostPlatform(com.acme.glup.MetadataProto.Platform value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        hostPlatform_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostPlatform() {
        
        hostPlatform_ = 0;
        onChanged();
        return this;
      }

      private int eventType_ = 0;
      /**
       * <pre>
       * Other partition keys... 
       * </pre>
       *
       * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The enum numeric value on the wire for eventType.
       */
      public int getEventTypeValue() {
        return eventType_;
      }
      /**
       * <pre>
       * Other partition keys... 
       * </pre>
       *
       * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The enum numeric value on the wire for eventType to set.
       * @return This builder for chaining.
       */
      public Builder setEventTypeValue(int value) {
        eventType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Other partition keys... 
       * </pre>
       *
       * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return The eventType.
       */
      public com.acme.glup.MetadataProto.EventType getEventType() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.EventType result = com.acme.glup.MetadataProto.EventType.valueOf(eventType_);
        return result == null ? com.acme.glup.MetadataProto.EventType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Other partition keys... 
       * </pre>
       *
       * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @param value The eventType to set.
       * @return This builder for chaining.
       */
      public Builder setEventType(com.acme.glup.MetadataProto.EventType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        eventType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Other partition keys... 
       * </pre>
       *
       * <code>.Acme.Glup.EventType event_type = 3 [(.Acme.Glup.json_mapping) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearEventType() {
        
        eventType_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.Partition)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.Partition)
    private static final com.acme.glup.MetadataProto.Partition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.Partition();
    }

    public static com.acme.glup.MetadataProto.Partition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Partition>
        PARSER = new com.google.protobuf.AbstractParser<Partition>() {
      @java.lang.Override
      public Partition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Partition(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Partition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Partition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.Partition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HDFSPartitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.HDFSPartition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Unix timestamp in seconds
     * </pre>
     *
     * <code>uint64 timestamp_seconds = 1;</code>
     * @return The timestampSeconds.
     */
    long getTimestampSeconds();

    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The enum numeric value on the wire for hostPlatform.
     */
    int getHostPlatformValue();
    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The hostPlatform.
     */
    com.acme.glup.MetadataProto.Platform getHostPlatform();

    /**
     * <code>.Acme.Glup.EventType event_type = 3;</code>
     * @return The enum numeric value on the wire for eventType.
     */
    int getEventTypeValue();
    /**
     * <code>.Acme.Glup.EventType event_type = 3;</code>
     * @return The eventType.
     */
    com.acme.glup.MetadataProto.EventType getEventType();

    /**
     * <pre>
     * Define the depth of a partition. This is used in order to distinguished partition
     * membership within a parent partition:
     * 2017-02-01/12/EU with depth 3 is a parent partition of 2017-02-01/12 with depth 2
     * </pre>
     *
     * <code>int32 depth = 4;</code>
     * @return The depth.
     */
    int getDepth();
  }
  /**
   * <pre>
   * Internaly used by datadiscovery framework to handlde
   * datadiscovery path and datadisco filesystem
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.HDFSPartition}
   */
  public  static final class HDFSPartition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.HDFSPartition)
      HDFSPartitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HDFSPartition.newBuilder() to construct.
    private HDFSPartition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HDFSPartition() {
      hostPlatform_ = 0;
      eventType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HDFSPartition();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HDFSPartition(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              timestampSeconds_ = input.readUInt64();
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              hostPlatform_ = rawValue;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();

              eventType_ = rawValue;
              break;
            }
            case 32: {

              depth_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSPartition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSPartition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.HDFSPartition.class, com.acme.glup.MetadataProto.HDFSPartition.Builder.class);
    }

    public static final int TIMESTAMP_SECONDS_FIELD_NUMBER = 1;
    private long timestampSeconds_;
    /**
     * <pre>
     * Unix timestamp in seconds
     * </pre>
     *
     * <code>uint64 timestamp_seconds = 1;</code>
     * @return The timestampSeconds.
     */
    public long getTimestampSeconds() {
      return timestampSeconds_;
    }

    public static final int HOST_PLATFORM_FIELD_NUMBER = 2;
    private int hostPlatform_;
    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The enum numeric value on the wire for hostPlatform.
     */
    public int getHostPlatformValue() {
      return hostPlatform_;
    }
    /**
     * <code>.Acme.Glup.Platform host_platform = 2;</code>
     * @return The hostPlatform.
     */
    public com.acme.glup.MetadataProto.Platform getHostPlatform() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(hostPlatform_);
      return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
    }

    public static final int EVENT_TYPE_FIELD_NUMBER = 3;
    private int eventType_;
    /**
     * <code>.Acme.Glup.EventType event_type = 3;</code>
     * @return The enum numeric value on the wire for eventType.
     */
    public int getEventTypeValue() {
      return eventType_;
    }
    /**
     * <code>.Acme.Glup.EventType event_type = 3;</code>
     * @return The eventType.
     */
    public com.acme.glup.MetadataProto.EventType getEventType() {
      @SuppressWarnings("deprecation")
      com.acme.glup.MetadataProto.EventType result = com.acme.glup.MetadataProto.EventType.valueOf(eventType_);
      return result == null ? com.acme.glup.MetadataProto.EventType.UNRECOGNIZED : result;
    }

    public static final int DEPTH_FIELD_NUMBER = 4;
    private int depth_;
    /**
     * <pre>
     * Define the depth of a partition. This is used in order to distinguished partition
     * membership within a parent partition:
     * 2017-02-01/12/EU with depth 3 is a parent partition of 2017-02-01/12 with depth 2
     * </pre>
     *
     * <code>int32 depth = 4;</code>
     * @return The depth.
     */
    public int getDepth() {
      return depth_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestampSeconds_ != 0L) {
        output.writeUInt64(1, timestampSeconds_);
      }
      if (hostPlatform_ != com.acme.glup.MetadataProto.Platform.UNSUPPORTED_PLATFORM.getNumber()) {
        output.writeEnum(2, hostPlatform_);
      }
      if (eventType_ != com.acme.glup.MetadataProto.EventType.UNSUPPORTED_EVENT_TYPE.getNumber()) {
        output.writeEnum(3, eventType_);
      }
      if (depth_ != 0) {
        output.writeInt32(4, depth_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestampSeconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampSeconds_);
      }
      if (hostPlatform_ != com.acme.glup.MetadataProto.Platform.UNSUPPORTED_PLATFORM.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, hostPlatform_);
      }
      if (eventType_ != com.acme.glup.MetadataProto.EventType.UNSUPPORTED_EVENT_TYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, eventType_);
      }
      if (depth_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, depth_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.HDFSPartition)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.HDFSPartition other = (com.acme.glup.MetadataProto.HDFSPartition) obj;

      if (getTimestampSeconds()
          != other.getTimestampSeconds()) return false;
      if (hostPlatform_ != other.hostPlatform_) return false;
      if (eventType_ != other.eventType_) return false;
      if (getDepth()
          != other.getDepth()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMESTAMP_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestampSeconds());
      hash = (37 * hash) + HOST_PLATFORM_FIELD_NUMBER;
      hash = (53 * hash) + hostPlatform_;
      hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + eventType_;
      hash = (37 * hash) + DEPTH_FIELD_NUMBER;
      hash = (53 * hash) + getDepth();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.HDFSPartition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.HDFSPartition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Internaly used by datadiscovery framework to handlde
     * datadiscovery path and datadisco filesystem
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.HDFSPartition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.HDFSPartition)
        com.acme.glup.MetadataProto.HDFSPartitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSPartition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSPartition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.HDFSPartition.class, com.acme.glup.MetadataProto.HDFSPartition.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.HDFSPartition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        timestampSeconds_ = 0L;

        hostPlatform_ = 0;

        eventType_ = 0;

        depth_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_HDFSPartition_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSPartition getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSPartition build() {
        com.acme.glup.MetadataProto.HDFSPartition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.HDFSPartition buildPartial() {
        com.acme.glup.MetadataProto.HDFSPartition result = new com.acme.glup.MetadataProto.HDFSPartition(this);
        result.timestampSeconds_ = timestampSeconds_;
        result.hostPlatform_ = hostPlatform_;
        result.eventType_ = eventType_;
        result.depth_ = depth_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.HDFSPartition) {
          return mergeFrom((com.acme.glup.MetadataProto.HDFSPartition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.HDFSPartition other) {
        if (other == com.acme.glup.MetadataProto.HDFSPartition.getDefaultInstance()) return this;
        if (other.getTimestampSeconds() != 0L) {
          setTimestampSeconds(other.getTimestampSeconds());
        }
        if (other.hostPlatform_ != 0) {
          setHostPlatformValue(other.getHostPlatformValue());
        }
        if (other.eventType_ != 0) {
          setEventTypeValue(other.getEventTypeValue());
        }
        if (other.getDepth() != 0) {
          setDepth(other.getDepth());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.HDFSPartition parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.HDFSPartition) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long timestampSeconds_ ;
      /**
       * <pre>
       * Unix timestamp in seconds
       * </pre>
       *
       * <code>uint64 timestamp_seconds = 1;</code>
       * @return The timestampSeconds.
       */
      public long getTimestampSeconds() {
        return timestampSeconds_;
      }
      /**
       * <pre>
       * Unix timestamp in seconds
       * </pre>
       *
       * <code>uint64 timestamp_seconds = 1;</code>
       * @param value The timestampSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampSeconds(long value) {
        
        timestampSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unix timestamp in seconds
       * </pre>
       *
       * <code>uint64 timestamp_seconds = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampSeconds() {
        
        timestampSeconds_ = 0L;
        onChanged();
        return this;
      }

      private int hostPlatform_ = 0;
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @return The enum numeric value on the wire for hostPlatform.
       */
      public int getHostPlatformValue() {
        return hostPlatform_;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @param value The enum numeric value on the wire for hostPlatform to set.
       * @return This builder for chaining.
       */
      public Builder setHostPlatformValue(int value) {
        hostPlatform_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @return The hostPlatform.
       */
      public com.acme.glup.MetadataProto.Platform getHostPlatform() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.Platform result = com.acme.glup.MetadataProto.Platform.valueOf(hostPlatform_);
        return result == null ? com.acme.glup.MetadataProto.Platform.UNRECOGNIZED : result;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @param value The hostPlatform to set.
       * @return This builder for chaining.
       */
      public Builder setHostPlatform(com.acme.glup.MetadataProto.Platform value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        hostPlatform_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.Platform host_platform = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostPlatform() {
        
        hostPlatform_ = 0;
        onChanged();
        return this;
      }

      private int eventType_ = 0;
      /**
       * <code>.Acme.Glup.EventType event_type = 3;</code>
       * @return The enum numeric value on the wire for eventType.
       */
      public int getEventTypeValue() {
        return eventType_;
      }
      /**
       * <code>.Acme.Glup.EventType event_type = 3;</code>
       * @param value The enum numeric value on the wire for eventType to set.
       * @return This builder for chaining.
       */
      public Builder setEventTypeValue(int value) {
        eventType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.EventType event_type = 3;</code>
       * @return The eventType.
       */
      public com.acme.glup.MetadataProto.EventType getEventType() {
        @SuppressWarnings("deprecation")
        com.acme.glup.MetadataProto.EventType result = com.acme.glup.MetadataProto.EventType.valueOf(eventType_);
        return result == null ? com.acme.glup.MetadataProto.EventType.UNRECOGNIZED : result;
      }
      /**
       * <code>.Acme.Glup.EventType event_type = 3;</code>
       * @param value The eventType to set.
       * @return This builder for chaining.
       */
      public Builder setEventType(com.acme.glup.MetadataProto.EventType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        eventType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Acme.Glup.EventType event_type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventType() {
        
        eventType_ = 0;
        onChanged();
        return this;
      }

      private int depth_ ;
      /**
       * <pre>
       * Define the depth of a partition. This is used in order to distinguished partition
       * membership within a parent partition:
       * 2017-02-01/12/EU with depth 3 is a parent partition of 2017-02-01/12 with depth 2
       * </pre>
       *
       * <code>int32 depth = 4;</code>
       * @return The depth.
       */
      public int getDepth() {
        return depth_;
      }
      /**
       * <pre>
       * Define the depth of a partition. This is used in order to distinguished partition
       * membership within a parent partition:
       * 2017-02-01/12/EU with depth 3 is a parent partition of 2017-02-01/12 with depth 2
       * </pre>
       *
       * <code>int32 depth = 4;</code>
       * @param value The depth to set.
       * @return This builder for chaining.
       */
      public Builder setDepth(int value) {
        
        depth_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Define the depth of a partition. This is used in order to distinguished partition
       * membership within a parent partition:
       * 2017-02-01/12/EU with depth 3 is a parent partition of 2017-02-01/12 with depth 2
       * </pre>
       *
       * <code>int32 depth = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDepth() {
        
        depth_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.HDFSPartition)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.HDFSPartition)
    private static final com.acme.glup.MetadataProto.HDFSPartition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.HDFSPartition();
    }

    public static com.acme.glup.MetadataProto.HDFSPartition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HDFSPartition>
        PARSER = new com.google.protobuf.AbstractParser<HDFSPartition>() {
      @java.lang.Override
      public HDFSPartition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HDFSPartition(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<HDFSPartition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HDFSPartition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.HDFSPartition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Hash128OrBuilder extends
      // @@protoc_insertion_point(interface_extends:Acme.Glup.Hash128)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * most significant bits
     * </pre>
     *
     * <code>fixed64 most_sig_bits = 1;</code>
     * @return The mostSigBits.
     */
    long getMostSigBits();

    /**
     * <pre>
     * least significant bits
     * </pre>
     *
     * <code>fixed64 least_sig_bits = 2;</code>
     * @return The leastSigBits.
     */
    long getLeastSigBits();

    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */
    int getSetFieldsCount();
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */
    boolean containsSetFields(
        int key);
    /**
     * Use {@link #getSetFieldsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Boolean>
    getSetFields();
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.Boolean>
    getSetFieldsMap();
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    boolean getSetFieldsOrDefault(
        int key,
        boolean defaultValue);
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    boolean getSetFieldsOrThrow(
        int key);
  }
  /**
   * <pre>
   * 128bit hash to pass publisher information through the request URL  
   * </pre>
   *
   * Protobuf type {@code Acme.Glup.Hash128}
   */
  public  static final class Hash128 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Acme.Glup.Hash128)
      Hash128OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Hash128.newBuilder() to construct.
    private Hash128(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Hash128() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Hash128();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Hash128(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 9: {

              mostSigBits_ = input.readFixed64();
              break;
            }
            case 17: {

              leastSigBits_ = input.readFixed64();
              break;
            }
            case 400082: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                setFields_ = com.google.protobuf.MapField.newMapField(
                    SetFieldsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Boolean>
              setFields__ = input.readMessage(
                  SetFieldsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              setFields_.getMutableMap().put(
                  setFields__.getKey(), setFields__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Hash128_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 50010:
          return internalGetSetFields();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Hash128_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.acme.glup.MetadataProto.Hash128.class, com.acme.glup.MetadataProto.Hash128.Builder.class);
    }

    public static final int MOST_SIG_BITS_FIELD_NUMBER = 1;
    private long mostSigBits_;
    /**
     * <pre>
     * most significant bits
     * </pre>
     *
     * <code>fixed64 most_sig_bits = 1;</code>
     * @return The mostSigBits.
     */
    public long getMostSigBits() {
      return mostSigBits_;
    }

    public static final int LEAST_SIG_BITS_FIELD_NUMBER = 2;
    private long leastSigBits_;
    /**
     * <pre>
     * least significant bits
     * </pre>
     *
     * <code>fixed64 least_sig_bits = 2;</code>
     * @return The leastSigBits.
     */
    public long getLeastSigBits() {
      return leastSigBits_;
    }

    public static final int SET_FIELDS_FIELD_NUMBER = 50010;
    private static final class SetFieldsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Integer, java.lang.Boolean> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Integer, java.lang.Boolean>newDefaultInstance(
                  com.acme.glup.MetadataProto.internal_static_Acme_Glup_Hash128_SetFieldsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.INT32,
                  0,
                  com.google.protobuf.WireFormat.FieldType.BOOL,
                  false);
    }
    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.Boolean> setFields_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
    internalGetSetFields() {
      if (setFields_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SetFieldsDefaultEntryHolder.defaultEntry);
      }
      return setFields_;
    }

    public int getSetFieldsCount() {
      return internalGetSetFields().getMap().size();
    }
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public boolean containsSetFields(
        int key) {
      
      return internalGetSetFields().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSetFieldsMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFields() {
      return getSetFieldsMap();
    }
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFieldsMap() {
      return internalGetSetFields().getMap();
    }
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public boolean getSetFieldsOrDefault(
        int key,
        boolean defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.Boolean> map =
          internalGetSetFields().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * nullable map to track set fields
     * </pre>
     *
     * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
     */

    public boolean getSetFieldsOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.Boolean> map =
          internalGetSetFields().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (mostSigBits_ != 0L) {
        output.writeFixed64(1, mostSigBits_);
      }
      if (leastSigBits_ != 0L) {
        output.writeFixed64(2, leastSigBits_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeIntegerMapTo(
          output,
          internalGetSetFields(),
          SetFieldsDefaultEntryHolder.defaultEntry,
          50010);
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (mostSigBits_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(1, mostSigBits_);
      }
      if (leastSigBits_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(2, leastSigBits_);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Boolean> entry
           : internalGetSetFields().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Boolean>
        setFields__ = SetFieldsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(50010, setFields__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.acme.glup.MetadataProto.Hash128)) {
        return super.equals(obj);
      }
      com.acme.glup.MetadataProto.Hash128 other = (com.acme.glup.MetadataProto.Hash128) obj;

      if (getMostSigBits()
          != other.getMostSigBits()) return false;
      if (getLeastSigBits()
          != other.getLeastSigBits()) return false;
      if (!internalGetSetFields().equals(
          other.internalGetSetFields())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MOST_SIG_BITS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMostSigBits());
      hash = (37 * hash) + LEAST_SIG_BITS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLeastSigBits());
      if (!internalGetSetFields().getMap().isEmpty()) {
        hash = (37 * hash) + SET_FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSetFields().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.acme.glup.MetadataProto.Hash128 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.acme.glup.MetadataProto.Hash128 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 128bit hash to pass publisher information through the request URL  
     * </pre>
     *
     * Protobuf type {@code Acme.Glup.Hash128}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Acme.Glup.Hash128)
        com.acme.glup.MetadataProto.Hash128OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Hash128_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 50010:
            return internalGetSetFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 50010:
            return internalGetMutableSetFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Hash128_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.acme.glup.MetadataProto.Hash128.class, com.acme.glup.MetadataProto.Hash128.Builder.class);
      }

      // Construct using com.acme.glup.MetadataProto.Hash128.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        mostSigBits_ = 0L;

        leastSigBits_ = 0L;

        internalGetMutableSetFields().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.acme.glup.MetadataProto.internal_static_Acme_Glup_Hash128_descriptor;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Hash128 getDefaultInstanceForType() {
        return com.acme.glup.MetadataProto.Hash128.getDefaultInstance();
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Hash128 build() {
        com.acme.glup.MetadataProto.Hash128 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.acme.glup.MetadataProto.Hash128 buildPartial() {
        com.acme.glup.MetadataProto.Hash128 result = new com.acme.glup.MetadataProto.Hash128(this);
        int from_bitField0_ = bitField0_;
        result.mostSigBits_ = mostSigBits_;
        result.leastSigBits_ = leastSigBits_;
        result.setFields_ = internalGetSetFields();
        result.setFields_.makeImmutable();
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.acme.glup.MetadataProto.Hash128) {
          return mergeFrom((com.acme.glup.MetadataProto.Hash128)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.acme.glup.MetadataProto.Hash128 other) {
        if (other == com.acme.glup.MetadataProto.Hash128.getDefaultInstance()) return this;
        if (other.getMostSigBits() != 0L) {
          setMostSigBits(other.getMostSigBits());
        }
        if (other.getLeastSigBits() != 0L) {
          setLeastSigBits(other.getLeastSigBits());
        }
        internalGetMutableSetFields().mergeFrom(
            other.internalGetSetFields());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.acme.glup.MetadataProto.Hash128 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.acme.glup.MetadataProto.Hash128) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long mostSigBits_ ;
      /**
       * <pre>
       * most significant bits
       * </pre>
       *
       * <code>fixed64 most_sig_bits = 1;</code>
       * @return The mostSigBits.
       */
      public long getMostSigBits() {
        return mostSigBits_;
      }
      /**
       * <pre>
       * most significant bits
       * </pre>
       *
       * <code>fixed64 most_sig_bits = 1;</code>
       * @param value The mostSigBits to set.
       * @return This builder for chaining.
       */
      public Builder setMostSigBits(long value) {
        
        mostSigBits_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * most significant bits
       * </pre>
       *
       * <code>fixed64 most_sig_bits = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMostSigBits() {
        
        mostSigBits_ = 0L;
        onChanged();
        return this;
      }

      private long leastSigBits_ ;
      /**
       * <pre>
       * least significant bits
       * </pre>
       *
       * <code>fixed64 least_sig_bits = 2;</code>
       * @return The leastSigBits.
       */
      public long getLeastSigBits() {
        return leastSigBits_;
      }
      /**
       * <pre>
       * least significant bits
       * </pre>
       *
       * <code>fixed64 least_sig_bits = 2;</code>
       * @param value The leastSigBits to set.
       * @return This builder for chaining.
       */
      public Builder setLeastSigBits(long value) {
        
        leastSigBits_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * least significant bits
       * </pre>
       *
       * <code>fixed64 least_sig_bits = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLeastSigBits() {
        
        leastSigBits_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.Boolean> setFields_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
      internalGetSetFields() {
        if (setFields_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              SetFieldsDefaultEntryHolder.defaultEntry);
        }
        return setFields_;
      }
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Boolean>
      internalGetMutableSetFields() {
        onChanged();;
        if (setFields_ == null) {
          setFields_ = com.google.protobuf.MapField.newMapField(
              SetFieldsDefaultEntryHolder.defaultEntry);
        }
        if (!setFields_.isMutable()) {
          setFields_ = setFields_.copy();
        }
        return setFields_;
      }

      public int getSetFieldsCount() {
        return internalGetSetFields().getMap().size();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean containsSetFields(
          int key) {
        
        return internalGetSetFields().getMap().containsKey(key);
      }
      /**
       * Use {@link #getSetFieldsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFields() {
        return getSetFieldsMap();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public java.util.Map<java.lang.Integer, java.lang.Boolean> getSetFieldsMap() {
        return internalGetSetFields().getMap();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean getSetFieldsOrDefault(
          int key,
          boolean defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.Boolean> map =
            internalGetSetFields().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public boolean getSetFieldsOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.Boolean> map =
            internalGetSetFields().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearSetFields() {
        internalGetMutableSetFields().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public Builder removeSetFields(
          int key) {
        
        internalGetMutableSetFields().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Boolean>
      getMutableSetFields() {
        return internalGetMutableSetFields().getMutableMap();
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */
      public Builder putSetFields(
          int key,
          boolean value) {
        
        
        internalGetMutableSetFields().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * nullable map to track set fields
       * </pre>
       *
       * <code>map&lt;int32, bool&gt; set_fields = 50010;</code>
       */

      public Builder putAllSetFields(
          java.util.Map<java.lang.Integer, java.lang.Boolean> values) {
        internalGetMutableSetFields().getMutableMap()
            .putAll(values);
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Acme.Glup.Hash128)
    }

    // @@protoc_insertion_point(class_scope:Acme.Glup.Hash128)
    private static final com.acme.glup.MetadataProto.Hash128 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.acme.glup.MetadataProto.Hash128();
    }

    public static com.acme.glup.MetadataProto.Hash128 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Hash128>
        PARSER = new com.google.protobuf.AbstractParser<Hash128>() {
      @java.lang.Override
      public Hash128 parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Hash128(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Hash128> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Hash128> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.acme.glup.MetadataProto.Hash128 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public static final int GLUP_FIELD_NUMBER = 50000;
  /**
   * <code>extend .google.protobuf.MessageOptions { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.google.protobuf.DescriptorProtos.MessageOptions,
      com.acme.glup.MetadataProto.GlupOptions> glup = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.acme.glup.MetadataProto.GlupOptions.class,
        com.acme.glup.MetadataProto.GlupOptions.getDefaultInstance());
  public static final int CONTAINS_NULLABLE_FIELDS_FIELD_NUMBER = 50001;
  /**
   * <pre>
   * Does message contains nullable field. This will be subject to special generation that will allow
   * to know if a specific field in the corresponding message or sub-message has been set or not.
   * </pre>
   *
   * <code>extend .google.protobuf.MessageOptions { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.google.protobuf.DescriptorProtos.MessageOptions,
      java.lang.Boolean> containsNullableFields = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        java.lang.Boolean.class,
        null);
  public static final int GLUPFIELD_FIELD_NUMBER = 50000;
  /**
   * <code>extend .google.protobuf.FieldOptions { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.google.protobuf.DescriptorProtos.FieldOptions,
      com.acme.glup.MetadataProto.GlupFieldOptions> glupfield = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.acme.glup.MetadataProto.GlupFieldOptions.class,
        com.acme.glup.MetadataProto.GlupFieldOptions.getDefaultInstance());
  public static final int JSON_MAPPING_FIELD_NUMBER = 50001;
  /**
   * <pre>
   * add JsonProxy extension
   * </pre>
   *
   * <code>extend .google.protobuf.FieldOptions { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.google.protobuf.DescriptorProtos.FieldOptions,
      com.acme.glup.MetadataProto.JsonMapping> jsonMapping = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.acme.glup.MetadataProto.JsonMapping.class,
        com.acme.glup.MetadataProto.JsonMapping.getDefaultInstance());
  public static final int JSON_FIELD_NUMBER = 50002;
  /**
   * <pre>
   * add JsonAlias extension
   * </pre>
   *
   * <code>extend .google.protobuf.FieldOptions { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.google.protobuf.DescriptorProtos.FieldOptions,
      com.acme.glup.MetadataProto.JsonAlias> json = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.acme.glup.MetadataProto.JsonAlias.class,
        com.acme.glup.MetadataProto.JsonAlias.getDefaultInstance());
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_KafkaMessageOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_KafkaMessageOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_DataSet_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_DataSet_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_DataSetChunk_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_DataSetChunk_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_DataSetFormat_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_DataSetFormat_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_ProducerTransportOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_ProducerTransportOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_PropertyOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_PropertyOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_GlupOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_GlupOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_GlupFieldOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_GlupFieldOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_JsonMapping_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_JsonMapping_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_JsonAlias_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_JsonAlias_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_BaseGlupMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_BaseGlupMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_BaseGlupMessage_SetFieldsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_BaseGlupMessage_SetFieldsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_ForwardedWatermarkMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_ForwardedWatermarkMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_Location_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_Location_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_Origin_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_Origin_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_ControlMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_ControlMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_ControlMessage_Watermark_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_ControlMessage_Watermark_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_ControlMessage_Watermark_SetFieldsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_ControlMessage_Watermark_SetFieldsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_Partition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_Partition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_HDFSPartition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_HDFSPartition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_Hash128_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_Hash128_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Acme_Glup_Hash128_SetFieldsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Acme_Glup_Hash128_SetFieldsEntry_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\024metadata_proto.proto\022\tAcme.Glup\032 googl" +
      "e/protobuf/descriptor.proto\"$\n\023KafkaMess" +
      "ageOptions\022\r\n\005topic\030\001 \003(\t\"\372\001\n\007DataSet\022\n\n" +
      "\002id\030\001 \001(\t\022(\n\006format\030\002 \003(\0132\030.Acme.Glup.Da" +
      "taSetFormat\0224\n\020partition_scheme\030\003 \001(\0162\032." +
      "Acme.Glup.PartitionScheme\022\022\n\njava_class\030" +
      "\004 \001(\t\022\021\n\tfor_tests\030\005 \001(\010\022\r\n\005owner\030\006 \001(\t\022" +
      "\017\n\007private\030\007 \001(\010\022$\n\004kind\030\010 \001(\0162\026.Acme.Gl" +
      "up.DataSetKind\022\026\n\016retention_days\030\t \001(\005\"t" +
      "\n\014DataSetChunk\022\'\n\tpartition\030\001 \003(\0132\024.Acme" +
      ".Glup.Partition\022(\n\006format\030\002 \001(\0132\030.Acme.G" +
      "lup.DataSetFormat\022\021\n\tdatasetId\030\003 \001(\t\"\334\002\n" +
      "\rDataSetFormat\022\014\n\004path\030\001 \001(\t\022.\n\013file_for" +
      "mat\030\002 \001(\0162\031.Acme.Glup.HDFSDataFormat\0224\n\020" +
      "partition_scheme\030\003 \001(\0162\032.Acme.Glup.Parti" +
      "tionScheme\0221\n\017start_partition\030\004 \001(\0132\030.Ac" +
      "me.Glup.HDFSPartition\022/\n\rend_partition\030\005" +
      " \001(\0132\030.Acme.Glup.HDFSPartition\022\026\n\016retent" +
      "ion_days\030\007 \001(\005\022\020\n\010priority\030\010 \001(\005\022\r\n\005labe" +
      "l\030\t \001(\t\0224\n\020monitoring_level\030\n \001(\0162\032.Acme" +
      ".Glup.MonitoringLevelJ\004\010\006\020\007\"\224\031\n\013HDFSOpti" +
      "ons\0224\n\006import\030\003 \003(\0132$.Acme.Glup.HDFSOpti" +
      "ons.ImportOptions\032\316\030\n\rImportOptions\022\r\n\005o" +
      "wner\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\0220\n\014partitioning" +
      "\030\004 \001(\0162\032.Acme.Glup.PartitionScheme\022)\n\006fo" +
      "rmat\030\005 \001(\0162\031.Acme.Glup.HDFSDataFormat\022\017\n" +
      "\007private\030\006 \001(\010\022A\n\tgenerator\030\013 \003(\0132..Acme" +
      ".Glup.HDFSOptions.ImportOptions.Generato" +
      "r\0227\n\004view\030\014 \003(\0132).Acme.Glup.HDFSOptions." +
      "ImportOptions.View\032\214\001\n\004View\022C\n\004hive\030\n \001(" +
      "\01325.Acme.Glup.HDFSOptions.ImportOptions." +
      "View.HiveOptions\032?\n\013HiveOptions\0220\n\014parti" +
      "tioning\030\003 \001(\0162\032.Acme.Glup.PartitionSchem" +
      "e\032\246\025\n\tGenerator\022T\n\ndataloader\030\001 \001(\0132@.Ac" +
      "me.Glup.HDFSOptions.ImportOptions.Genera" +
      "tor.DataloaderOptions\022T\n\nkafka2hdfs\030\002 \001(" +
      "\0132@.Acme.Glup.HDFSOptions.ImportOptions." +
      "Generator.Kafka2HdfsOptions\022H\n\004sync\030\003 \001(" +
      "\0132:.Acme.Glup.HDFSOptions.ImportOptions." +
      "Generator.SyncOptions\022P\n\010external\030\004 \001(\0132" +
      ">.Acme.Glup.HDFSOptions.ImportOptions.Ge" +
      "nerator.ExternalOptions\022L\n\006backup\030\005 \001(\0132" +
      "<.Acme.Glup.HDFSOptions.ImportOptions.Ge" +
      "nerator.BackupOptions\022V\n\013transcoding\030\006 \001" +
      "(\0132A.Acme.Glup.HDFSOptions.ImportOptions" +
      ".Generator.TranscodingOptions\022L\n\006kacoha\030" +
      "\007 \001(\0132<.Acme.Glup.HDFSOptions.ImportOpti" +
      "ons.Generator.KaCoHaOptions\022P\n\013deduplica" +
      "te\030\010 \001(\0132;.Acme.Glup.HDFSOptions.ImportO" +
      "ptions.Generator.DedupOptions\022N\n\007sampler" +
      "\030\t \001(\0132=.Acme.Glup.HDFSOptions.ImportOpt" +
      "ions.Generator.SamplerOptions\022T\n\ncompara" +
      "tor\030\n \001(\0132@.Acme.Glup.HDFSOptions.Import" +
      "Options.Generator.ComparatorOptions\022 \n\002t" +
      "o\030\372\001 \003(\0132\023.Acme.Glup.Location\022\022\n\tnamespa" +
      "ce\030\373\001 \001(\t\022\023\n\nstart_date\030\375\001 \001(\t\022\022\n\tstop_d" +
      "ate\030\376\001 \001(\t\022\022\n\tignore_cn\030\377\001 \001(\010\032\232\001\n\014Dedup" +
      "Options\022\030\n\020input_dataset_id\030\001 \001(\t\022\032\n\022inp" +
      "ut_format_label\030\002 \001(\t\022\031\n\021output_dataset_" +
      "id\030\003 \001(\t\022\033\n\023output_format_label\030\004 \001(\t\022\034\n" +
      "\024use_hippo_cuttle_job\030\005 \001(\010\032u\n\021Kafka2Hdf" +
      "sOptions\022\r\n\005topic\030\001 \001(\t\022\023\n\013deduplicate\030\003" +
      " \001(\010\022\031\n\021output_dataset_id\030\004 \001(\t\022\033\n\023outpu" +
      "t_format_label\030\005 \001(\tJ\004\010\002\020\003\032K\n\014KacohaConf" +
      "ig\022\033\n\023partitions_per_task\030\001 \001(\005\022\036\n\026poll_" +
      "buffer_size_bytes\030\002 \001(\005\032\203\001\n\021KacohaConfig" +
      "PerDc\022!\n\002dc\030\001 \001(\0162\025.Acme.Glup.DataCenter" +
      "\022K\n\006config\030\002 \001(\0132;.Acme.Glup.HDFSOptions" +
      ".ImportOptions.Generator.KacohaConfig\032\221\002" +
      "\n\rKaCoHaOptions\022\r\n\005topic\030\001 \001(\t\022\031\n\021output" +
      "_dataset_id\030\002 \001(\t\022\023\n\013deduplicate\030\003 \001(\010\022K" +
      "\n\006config\030\004 \001(\0132;.Acme.Glup.HDFSOptions.I" +
      "mportOptions.Generator.KacohaConfig\022\033\n\023o" +
      "utput_format_label\030\005 \001(\t\022W\n\rconfig_per_d" +
      "c\030\006 \003(\0132@.Acme.Glup.HDFSOptions.ImportOp" +
      "tions.Generator.KacohaConfigPerDc\032:\n\021Dat" +
      "aloaderOptions\022%\n\010platform\030\001 \003(\0162\023.Acme." +
      "Glup.Platform\032\355\001\n\013SyncOptions\022!\n\004from\030\001 " +
      "\001(\0132\023.Acme.Glup.Location\022\030\n\020source_names" +
      "pace\030\003 \001(\t\022&\n\tplatforms\030\006 \003(\0162\023.Acme.Glu" +
      "p.Platform\022\026\n\016is_backfilling\030\010 \001(\010\022\020\n\010to" +
      "_label\030\t \001(\t\022\025\n\rto_dataset_id\030\n \001(\t\022\030\n\020w" +
      "ith_backfilling\030\013 \001(\010\022\036\n\026is_scheduled_on" +
      "_source\030\014 \001(\010\032t\n\rBackupOptions\022!\n\004from\030\001" +
      " \001(\0132\023.Acme.Glup.Location\022\030\n\020source_name" +
      "space\030\002 \001(\t\022&\n\tplatforms\030\003 \003(\0162\023.Acme.Gl" +
      "up.Platform\032\377\001\n\022TranscodingOptions\022\030\n\020in" +
      "put_dataset_id\030\001 \001(\t\022\031\n\021output_dataset_i" +
      "d\030\002 \001(\t\022/\n\014input_format\030\003 \001(\0162\031.Acme.Glu" +
      "p.HDFSDataFormat\0220\n\routput_format\030\004 \001(\0162" +
      "\031.Acme.Glup.HDFSDataFormat\022\033\n\023input_data" +
      "set_label\030\005 \001(\t\022\034\n\024output_dataset_label\030" +
      "\006 \001(\t\022\026\n\016is_by_platform\030\007 \001(\010\032\225\001\n\016Sample" +
      "rOptions\022\030\n\020input_dataset_id\030\001 \001(\t\022\032\n\022in" +
      "put_format_label\030\002 \001(\t\022\031\n\021output_dataset" +
      "_id\030\003 \001(\t\022\033\n\023output_format_label\030\004 \001(\t\022\025" +
      "\n\rsampling_rate\030\005 \001(\002\032\247\001\n\021ComparatorOpti" +
      "ons\022\027\n\017left_dataset_id\030\001 \001(\t\022\031\n\021left_for" +
      "mat_label\030\002 \001(\t\022\030\n\020right_dataset_id\030\003 \001(" +
      "\t\022\032\n\022right_format_label\030\004 \001(\t\022\020\n\010hostnam" +
      "e\030\005 \001(\t\022\026\n\016ignored_fields\030\006 \001(\t\032\021\n\017Exter" +
      "nalOptions\"9\n\030ProducerTransportOptions\022\016" +
      "\n\006syslog\030\001 \001(\010\022\r\n\005kafka\030\002 \001(\010\"8\n\017Propert" +
      "yOptions\022\020\n\010valuable\030\001 \001(\010\022\023\n\013high_volum" +
      "e\030\002 \001(\010\"\301\002\n\013GlupOptions\022-\n\005kafka\030\001 \001(\0132\036" +
      ".Acme.Glup.KafkaMessageOptions\022$\n\004hdfs\030\002" +
      " \001(\0132\026.Acme.Glup.HDFSOptions\022\024\n\014sampling" +
      "_pct\030\003 \001(\r\022\034\n\024preprod_sampling_pct\030\004 \001(\r" +
      "\022#\n\007dataset\030\005 \003(\0132\022.Acme.Glup.DataSet\022\034\n" +
      "\024message_sampling_pct\030\006 \001(\r\0226\n\tproducers" +
      "\030\007 \001(\0132#.Acme.Glup.ProducerTransportOpti" +
      "ons\022.\n\nproperties\030\010 \001(\0132\032.Acme.Glup.Prop" +
      "ertyOptions\"\257\001\n\020GlupFieldOptions\022\017\n\007samp" +
      "led\030\001 \001(\010\022\024\n\014sampling_key\030\002 \001(\010\022.\n\021disab" +
      "led_platform\030\003 \003(\0162\023.Acme.Glup.Platform\022" +
      "\030\n\020should_clean_pii\030\004 \001(\010\022\030\n\020pending_del" +
      "etion\030\005 \001(\010\022\020\n\010added_at\030\006 \001(\t\")\n\013JsonMap" +
      "ping\022\014\n\004name\030\001 \001(\t\022\014\n\004skip\030\002 \001(\010\"4\n\tJson" +
      "Alias\022\014\n\004name\030\001 \001(\t\022\031\n\021use_enum_field_id" +
      "\030\003 \001(\010\"\255\002\n\017BaseGlupMessage\022&\n\013glup_origi" +
      "n\030\001 \001(\0132\021.Acme.Glup.Origin\022\'\n\tpartition\030" +
      "\002 \001(\0132\024.Acme.Glup.Partition\022?\n\nset_field" +
      "s\030\332\206\003 \003(\0132).Acme.Glup.BaseGlupMessage.Se" +
      "tFieldsEntry\022P\n\017control_message\030\377\377\177 \003(\0132" +
      "#.Acme.Glup.ControlMessage.WatermarkB\020\222\265" +
      "\030\014\n\n__metadata\0320\n\016SetFieldsEntry\022\013\n\003key\030" +
      "\001 \001(\005\022\r\n\005value\030\002 \001(\010:\0028\001:\004\210\265\030\001\"\360\001\n\031Forwa" +
      "rdedWatermarkMessage\022\035\n\025original_kafka_o" +
      "ffset\030\005 \001(\003\022\021\n\ttimestamp\030\006 \001(\003\022\035\n\025consol" +
      "idation_enabled\030\007 \001(\010\022\022\n\ndataset_id\030\n \001(" +
      "\t\022\034\n\024dataset_format_label\030\013 \001(\t\022P\n\017contr" +
      "ol_message\030\377\377\177 \003(\0132#.Acme.Glup.ControlMe" +
      "ssage.WatermarkB\020\222\265\030\014\n\n__metadata\"u\n\010Loc" +
      "ation\022#\n\003env\030\001 \001(\0162\026.Acme.Glup.Environme" +
      "nt\022!\n\002dc\030\002 \001(\0162\025.Acme.Glup.DataCenter\022\r\n" +
      "\005label\030\003 \001(\t\022\022\n\ndataset_id\030\004 \001(\t\"\240\001\n\006Ori" +
      "gin\022)\n\ndatacenter\030\001 \001(\0162\025.Acme.Glup.Data" +
      "Center\022\032\n\003ip4\030\002 \001(\007B\r\212\265\030\t\n\007host_ip\022\020\n\010ho" +
      "stname\030\003 \001(\t\022\036\n\016container_task\030\004 \001(\tB\006\212\265" +
      "\030\002\020\001\022\035\n\rcontainer_app\030\005 \001(\tB\006\212\265\030\002\020\001\"\201\005\n\016" +
      "ControlMessage\0226\n\twatermark\030\001 \001(\0132#.Acme" +
      ".Glup.ControlMessage.Watermark\032\205\001\n\017Water" +
      "markOrigin\022\023\n\013kafka_topic\030\001 \001(\t\022)\n\ndatac" +
      "enter\030\002 \001(\0162\025.Acme.Glup.DataCenter\0222\n\007cl" +
      "uster\030\003 \001(\0162!.Acme.Glup.ControlMessage.C" +
      "luster\032\346\002\n\tWatermark\022\014\n\004type\030\001 \001(\t\022\020\n\010ho" +
      "stname\030\002 \001(\t\022\023\n\013kafka_topic\030\003 \001(\t\022\021\n\tpar" +
      "tition\030\004 \001(\005\022\027\n\017partition_count\030\005 \001(\005\022\024\n" +
      "\014process_uuid\030\006 \001(\014\022\016\n\006region\030\007 \001(\t\022*\n\021t" +
      "imestamp_seconds\030\010 \001(\005B\017\222\265\030\013\n\ttimestamp\022" +
      "\017\n\007cluster\030\t \001(\t\022\023\n\013environment\030\n \001(\t\022H\n" +
      "\nset_fields\030\332\206\003 \003(\01322.Acme.Glup.ControlM" +
      "essage.Watermark.SetFieldsEntry\0320\n\016SetFi" +
      "eldsEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\010:\0028" +
      "\001:\004\210\265\030\001\"F\n\007Cluster\022\027\n\023UNSUPPORTED_CLUSTE" +
      "R\020\000\022\t\n\005LOCAL\020\002\022\013\n\007CENTRAL\020\003\022\n\n\006STREAM\020\004\"" +
      "\225\001\n\tPartition\022*\n\021timestamp_seconds\030\001 \001(\004" +
      "B\017\212\265\030\013\n\ttimestamp\022*\n\rhost_platform\030\002 \001(\016" +
      "2\023.Acme.Glup.Platform\0220\n\nevent_type\030\003 \001(" +
      "\0162\024.Acme.Glup.EventTypeB\006\212\265\030\002\020\001\"\217\001\n\rHDFS" +
      "Partition\022\031\n\021timestamp_seconds\030\001 \001(\004\022*\n\r" +
      "host_platform\030\002 \001(\0162\023.Acme.Glup.Platform" +
      "\022(\n\nevent_type\030\003 \001(\0162\024.Acme.Glup.EventTy" +
      "pe\022\r\n\005depth\030\004 \001(\005\"\243\001\n\007Hash128\022\025\n\rmost_si" +
      "g_bits\030\001 \001(\006\022\026\n\016least_sig_bits\030\002 \001(\006\0227\n\n" +
      "set_fields\030\332\206\003 \003(\0132!.Acme.Glup.Hash128.S" +
      "etFieldsEntry\0320\n\016SetFieldsEntry\022\013\n\003key\030\001" +
      " \001(\005\022\r\n\005value\030\002 \001(\010:\0028\001*~\n\017PartitionSche" +
      "me\022 \n\034UNSUPPORTED_PARTITION_SCHEME\020\000\022\t\n\005" +
      "DAILY\020\002\022\n\n\006HOURLY\020\003\022\023\n\017PLATFORM_HOURLY\020\004" +
      "\022\035\n\031EVENTTYPE_PLATFORM_HOURLY\020\005*?\n\rMessa" +
      "geFormat\022\026\n\022UNSUPPORTED_FORMAT\020\000\022\010\n\004JSON" +
      "\020\001\022\014\n\010PROTOBUF\020\002*d\n\016HDFSDataFormat\022\033\n\027UN" +
      "SUPPORTED_DATA_FORMAT\020\000\022\r\n\tJSON_PAIL\020\002\022\020" +
      "\n\014PROTOBUF_SEQ\020\003\022\024\n\020PROTOBUF_PARQUET\020\004*3" +
      "\n\013DataSetKind\022\024\n\020UNSUPPORTED_KIND\020\000\022\016\n\nT" +
      "IMESERIES\020\001*\232\001\n\017MonitoringLevel\022\013\n\007DEFAU" +
      "LT\020\000\022\025\n\021REMOVE_MONITORING\020\001\022\032\n\026INFORMATI" +
      "VE_MONITORING\020\002\022\025\n\021CONSENSUS_IGNORED\020\003\0220" +
      "\n,CONSENSUS_IGNORED_AND_INFORMATIVE_MONI" +
      "TORING\020\004*\213\001\n\nDataCenter\022\032\n\026UNSUPPORTED_D" +
      "ATACENTER\020\000\022\007\n\003AM5\020\002\022\007\n\003HK5\020\003\022\007\n\003NY8\020\004\022\007" +
      "\n\003PAR\020\005\022\007\n\003PA4\020\006\022\007\n\003SH5\020\007\022\007\n\003SV6\020\010\022\007\n\003TY" +
      "5\020\t\022\007\n\003VA1\020\n\022\007\n\003AM6\020\013\022\007\n\003DA1\020\014*A\n\013Enviro" +
      "nment\022\033\n\027UNSUPPORTED_ENVIRONMENT\020\000\022\013\n\007PR" +
      "EPROD\020\001\022\010\n\004PROD\020\002*D\n\010Platform\022\030\n\024UNSUPPO" +
      "RTED_PLATFORM\020\000\022\006\n\002EU\020\002\022\006\n\002US\020\003\022\006\n\002AS\020\004\022" +
      "\006\n\002CN\020\005*[\n\tEventType\022\032\n\026UNSUPPORTED_EVEN" +
      "T_TYPE\020\000\022\020\n\014ItemPageView\020\002\022\t\n\005Sales\020\003\022\n\n" +
      "\006Basket\020\004\022\t\n\005Other\020\005*%\n\005YesNo\022\013\n\007UNKNOWN" +
      "\020\000\022\006\n\002NO\020\001\022\007\n\003YES\020\002:G\n\004glup\022\037.google.pro" +
      "tobuf.MessageOptions\030\320\206\003 \001(\0132\026.Acme.Glup" +
      ".GlupOptions:C\n\030contains_nullable_fields" +
      "\022\037.google.protobuf.MessageOptions\030\321\206\003 \001(" +
      "\010:O\n\tglupfield\022\035.google.protobuf.FieldOp" +
      "tions\030\320\206\003 \001(\0132\033.Acme.Glup.GlupFieldOptio" +
      "ns:M\n\014json_mapping\022\035.google.protobuf.Fie" +
      "ldOptions\030\321\206\003 \001(\0132\026.Acme.Glup.JsonMappin" +
      "g:C\n\004json\022\035.google.protobuf.FieldOptions" +
      "\030\322\206\003 \001(\0132\024.Acme.Glup.JsonAliasB\017\n\rcom.ac" +
      "me.glupb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.DescriptorProtos.getDescriptor(),
        });
    internal_static_Acme_Glup_KafkaMessageOptions_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_Acme_Glup_KafkaMessageOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_KafkaMessageOptions_descriptor,
        new java.lang.String[] { "Topic", });
    internal_static_Acme_Glup_DataSet_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_Acme_Glup_DataSet_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_DataSet_descriptor,
        new java.lang.String[] { "Id", "Format", "PartitionScheme", "JavaClass", "ForTests", "Owner", "Private", "Kind", "RetentionDays", });
    internal_static_Acme_Glup_DataSetChunk_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_Acme_Glup_DataSetChunk_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_DataSetChunk_descriptor,
        new java.lang.String[] { "Partition", "Format", "DatasetId", });
    internal_static_Acme_Glup_DataSetFormat_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_Acme_Glup_DataSetFormat_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_DataSetFormat_descriptor,
        new java.lang.String[] { "Path", "FileFormat", "PartitionScheme", "StartPartition", "EndPartition", "RetentionDays", "Priority", "Label", "MonitoringLevel", });
    internal_static_Acme_Glup_HDFSOptions_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_Acme_Glup_HDFSOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_descriptor,
        new java.lang.String[] { "Import", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor,
        new java.lang.String[] { "Owner", "Name", "Partitioning", "Format", "Private", "Generator", "View", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor,
        new java.lang.String[] { "Hive", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_View_HiveOptions_descriptor,
        new java.lang.String[] { "Partitioning", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_descriptor.getNestedTypes().get(1);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor,
        new java.lang.String[] { "Dataloader", "Kafka2Hdfs", "Sync", "External", "Backup", "Transcoding", "Kacoha", "Deduplicate", "Sampler", "Comparator", "To", "Namespace", "StartDate", "StopDate", "IgnoreCn", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DedupOptions_descriptor,
        new java.lang.String[] { "InputDatasetId", "InputFormatLabel", "OutputDatasetId", "OutputFormatLabel", "UseHippoCuttleJob", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(1);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_Kafka2HdfsOptions_descriptor,
        new java.lang.String[] { "Topic", "Deduplicate", "OutputDatasetId", "OutputFormatLabel", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(2);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfig_descriptor,
        new java.lang.String[] { "PartitionsPerTask", "PollBufferSizeBytes", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(3);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KacohaConfigPerDc_descriptor,
        new java.lang.String[] { "Dc", "Config", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(4);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_KaCoHaOptions_descriptor,
        new java.lang.String[] { "Topic", "OutputDatasetId", "Deduplicate", "Config", "OutputFormatLabel", "ConfigPerDc", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(5);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_DataloaderOptions_descriptor,
        new java.lang.String[] { "Platform", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(6);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SyncOptions_descriptor,
        new java.lang.String[] { "From", "SourceNamespace", "Platforms", "IsBackfilling", "ToLabel", "ToDatasetId", "WithBackfilling", "IsScheduledOnSource", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(7);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_BackupOptions_descriptor,
        new java.lang.String[] { "From", "SourceNamespace", "Platforms", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(8);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_TranscodingOptions_descriptor,
        new java.lang.String[] { "InputDatasetId", "OutputDatasetId", "InputFormat", "OutputFormat", "InputDatasetLabel", "OutputDatasetLabel", "IsByPlatform", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(9);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_SamplerOptions_descriptor,
        new java.lang.String[] { "InputDatasetId", "InputFormatLabel", "OutputDatasetId", "OutputFormatLabel", "SamplingRate", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(10);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ComparatorOptions_descriptor,
        new java.lang.String[] { "LeftDatasetId", "LeftFormatLabel", "RightDatasetId", "RightFormatLabel", "Hostname", "IgnoredFields", });
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_descriptor =
      internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_descriptor.getNestedTypes().get(11);
    internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSOptions_ImportOptions_Generator_ExternalOptions_descriptor,
        new java.lang.String[] { });
    internal_static_Acme_Glup_ProducerTransportOptions_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_Acme_Glup_ProducerTransportOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_ProducerTransportOptions_descriptor,
        new java.lang.String[] { "Syslog", "Kafka", });
    internal_static_Acme_Glup_PropertyOptions_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_Acme_Glup_PropertyOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_PropertyOptions_descriptor,
        new java.lang.String[] { "Valuable", "HighVolume", });
    internal_static_Acme_Glup_GlupOptions_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_Acme_Glup_GlupOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_GlupOptions_descriptor,
        new java.lang.String[] { "Kafka", "Hdfs", "SamplingPct", "PreprodSamplingPct", "Dataset", "MessageSamplingPct", "Producers", "Properties", });
    internal_static_Acme_Glup_GlupFieldOptions_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_Acme_Glup_GlupFieldOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_GlupFieldOptions_descriptor,
        new java.lang.String[] { "Sampled", "SamplingKey", "DisabledPlatform", "ShouldCleanPii", "PendingDeletion", "AddedAt", });
    internal_static_Acme_Glup_JsonMapping_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_Acme_Glup_JsonMapping_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_JsonMapping_descriptor,
        new java.lang.String[] { "Name", "Skip", });
    internal_static_Acme_Glup_JsonAlias_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_Acme_Glup_JsonAlias_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_JsonAlias_descriptor,
        new java.lang.String[] { "Name", "UseEnumFieldId", });
    internal_static_Acme_Glup_BaseGlupMessage_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_Acme_Glup_BaseGlupMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_BaseGlupMessage_descriptor,
        new java.lang.String[] { "GlupOrigin", "Partition", "SetFields", "ControlMessage", });
    internal_static_Acme_Glup_BaseGlupMessage_SetFieldsEntry_descriptor =
      internal_static_Acme_Glup_BaseGlupMessage_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_BaseGlupMessage_SetFieldsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_BaseGlupMessage_SetFieldsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_Acme_Glup_ForwardedWatermarkMessage_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_Acme_Glup_ForwardedWatermarkMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_ForwardedWatermarkMessage_descriptor,
        new java.lang.String[] { "OriginalKafkaOffset", "Timestamp", "ConsolidationEnabled", "DatasetId", "DatasetFormatLabel", "ControlMessage", });
    internal_static_Acme_Glup_Location_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_Acme_Glup_Location_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_Location_descriptor,
        new java.lang.String[] { "Env", "Dc", "Label", "DatasetId", });
    internal_static_Acme_Glup_Origin_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_Acme_Glup_Origin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_Origin_descriptor,
        new java.lang.String[] { "Datacenter", "Ip4", "Hostname", "ContainerTask", "ContainerApp", });
    internal_static_Acme_Glup_ControlMessage_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_Acme_Glup_ControlMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_ControlMessage_descriptor,
        new java.lang.String[] { "Watermark", });
    internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_descriptor =
      internal_static_Acme_Glup_ControlMessage_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_ControlMessage_WatermarkOrigin_descriptor,
        new java.lang.String[] { "KafkaTopic", "Datacenter", "Cluster", });
    internal_static_Acme_Glup_ControlMessage_Watermark_descriptor =
      internal_static_Acme_Glup_ControlMessage_descriptor.getNestedTypes().get(1);
    internal_static_Acme_Glup_ControlMessage_Watermark_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_ControlMessage_Watermark_descriptor,
        new java.lang.String[] { "Type", "Hostname", "KafkaTopic", "Partition", "PartitionCount", "ProcessUuid", "Region", "TimestampSeconds", "Cluster", "Environment", "SetFields", });
    internal_static_Acme_Glup_ControlMessage_Watermark_SetFieldsEntry_descriptor =
      internal_static_Acme_Glup_ControlMessage_Watermark_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_ControlMessage_Watermark_SetFieldsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_ControlMessage_Watermark_SetFieldsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_Acme_Glup_Partition_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_Acme_Glup_Partition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_Partition_descriptor,
        new java.lang.String[] { "TimestampSeconds", "HostPlatform", "EventType", });
    internal_static_Acme_Glup_HDFSPartition_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_Acme_Glup_HDFSPartition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_HDFSPartition_descriptor,
        new java.lang.String[] { "TimestampSeconds", "HostPlatform", "EventType", "Depth", });
    internal_static_Acme_Glup_Hash128_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_Acme_Glup_Hash128_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_Hash128_descriptor,
        new java.lang.String[] { "MostSigBits", "LeastSigBits", "SetFields", });
    internal_static_Acme_Glup_Hash128_SetFieldsEntry_descriptor =
      internal_static_Acme_Glup_Hash128_descriptor.getNestedTypes().get(0);
    internal_static_Acme_Glup_Hash128_SetFieldsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Acme_Glup_Hash128_SetFieldsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    glup.internalInit(descriptor.getExtensions().get(0));
    containsNullableFields.internalInit(descriptor.getExtensions().get(1));
    glupfield.internalInit(descriptor.getExtensions().get(2));
    jsonMapping.internalInit(descriptor.getExtensions().get(3));
    json.internalInit(descriptor.getExtensions().get(4));
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.acme.glup.MetadataProto.containsNullableFields);
    registry.add(com.acme.glup.MetadataProto.json);
    registry.add(com.acme.glup.MetadataProto.jsonMapping);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.protobuf.DescriptorProtos.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
