// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: src/main/protobuf/bundlemerge.proto

package com.google.devtools.build.xcode.bundlemerge.proto;

public final class BundleMergeProtos {
  private BundleMergeProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface ControlOrBuilder extends
      // @@protoc_insertion_point(interface_extends:devtools.xcode.Control)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The single info.plist file to be bundled into the archive. This plist will
     * not be modified by bundlemerge.
     * </pre>
     *
     * <code>optional string bundle_info_plist_file = 16;</code>
     */
    boolean hasBundleInfoPlistFile();
    /**
     * <pre>
     * The single info.plist file to be bundled into the archive. This plist will
     * not be modified by bundlemerge.
     * </pre>
     *
     * <code>optional string bundle_info_plist_file = 16;</code>
     */
    java.lang.String getBundleInfoPlistFile();
    /**
     * <pre>
     * The single info.plist file to be bundled into the archive. This plist will
     * not be modified by bundlemerge.
     * </pre>
     *
     * <code>optional string bundle_info_plist_file = 16;</code>
     */
    com.google.protobuf.ByteString
        getBundleInfoPlistFileBytes();

    /**
     * <pre>
     * Path to the .ipa file to write. This is the final application bundle. Note
     * this is ignored for nested bundles.
     * </pre>
     *
     * <code>optional string out_file = 2;</code>
     */
    boolean hasOutFile();
    /**
     * <pre>
     * Path to the .ipa file to write. This is the final application bundle. Note
     * this is ignored for nested bundles.
     * </pre>
     *
     * <code>optional string out_file = 2;</code>
     */
    java.lang.String getOutFile();
    /**
     * <pre>
     * Path to the .ipa file to write. This is the final application bundle. Note
     * this is ignored for nested bundles.
     * </pre>
     *
     * <code>optional string out_file = 2;</code>
     */
    com.google.protobuf.ByteString
        getOutFileBytes();

    /**
     * <pre>
     * One of the symbols in the com.google.devtools.build.xcode.common.Platform
     * (e.g. "DEVICE", "SIMULATOR").
     * </pre>
     *
     * <code>optional string platform = 4;</code>
     */
    boolean hasPlatform();
    /**
     * <pre>
     * One of the symbols in the com.google.devtools.build.xcode.common.Platform
     * (e.g. "DEVICE", "SIMULATOR").
     * </pre>
     *
     * <code>optional string platform = 4;</code>
     */
    java.lang.String getPlatform();
    /**
     * <pre>
     * One of the symbols in the com.google.devtools.build.xcode.common.Platform
     * (e.g. "DEVICE", "SIMULATOR").
     * </pre>
     *
     * <code>optional string platform = 4;</code>
     */
    com.google.protobuf.ByteString
        getPlatformBytes();

    /**
     * <pre>
     * The version of the SDK used to build the app.
     * </pre>
     *
     * <code>optional string sdk_version = 5;</code>
     */
    boolean hasSdkVersion();
    /**
     * <pre>
     * The version of the SDK used to build the app.
     * </pre>
     *
     * <code>optional string sdk_version = 5;</code>
     */
    java.lang.String getSdkVersion();
    /**
     * <pre>
     * The version of the SDK used to build the app.
     * </pre>
     *
     * <code>optional string sdk_version = 5;</code>
     */
    com.google.protobuf.ByteString
        getSdkVersionBytes();

    /**
     * <pre>
     * Earliest iOS version on which the app will run.
     * </pre>
     *
     * <code>optional string minimum_os_version = 6;</code>
     */
    boolean hasMinimumOsVersion();
    /**
     * <pre>
     * Earliest iOS version on which the app will run.
     * </pre>
     *
     * <code>optional string minimum_os_version = 6;</code>
     */
    java.lang.String getMinimumOsVersion();
    /**
     * <pre>
     * Earliest iOS version on which the app will run.
     * </pre>
     *
     * <code>optional string minimum_os_version = 6;</code>
     */
    com.google.protobuf.ByteString
        getMinimumOsVersionBytes();

    /**
     * <pre>
     * The directory inside which all files are placed in the final bundle.
     * For the top-most bundle, this is generally "Payload/{app_name}.app". If
     * this bundle is nested, then this bundle_root is relative to to the parent's
     * bundle_root.
     * </pre>
     *
     * <code>optional string bundle_root = 7;</code>
     */
    boolean hasBundleRoot();
    /**
     * <pre>
     * The directory inside which all files are placed in the final bundle.
     * For the top-most bundle, this is generally "Payload/{app_name}.app". If
     * this bundle is nested, then this bundle_root is relative to to the parent's
     * bundle_root.
     * </pre>
     *
     * <code>optional string bundle_root = 7;</code>
     */
    java.lang.String getBundleRoot();
    /**
     * <pre>
     * The directory inside which all files are placed in the final bundle.
     * For the top-most bundle, this is generally "Payload/{app_name}.app". If
     * this bundle is nested, then this bundle_root is relative to to the parent's
     * bundle_root.
     * </pre>
     *
     * <code>optional string bundle_root = 7;</code>
     */
    com.google.protobuf.ByteString
        getBundleRootBytes();

    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile> 
        getBundleFileList();
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile getBundleFile(int index);
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    int getBundleFileCount();
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder> 
        getBundleFileOrBuilderList();
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder getBundleFileOrBuilder(
        int index);

    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip> 
        getMergeZipList();
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip getMergeZip(int index);
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    int getMergeZipCount();
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder> 
        getMergeZipOrBuilderList();
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder getMergeZipOrBuilder(
        int index);

    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control> 
        getNestedBundleList();
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control getNestedBundle(int index);
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    int getNestedBundleCount();
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder> 
        getNestedBundleOrBuilderList();
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder getNestedBundleOrBuilder(
        int index);

    /**
     * <pre>
     * A reverse-DNS string identifier for this bundle.
     * </pre>
     *
     * <code>optional string primary_bundle_identifier = 14;</code>
     */
    boolean hasPrimaryBundleIdentifier();
    /**
     * <pre>
     * A reverse-DNS string identifier for this bundle.
     * </pre>
     *
     * <code>optional string primary_bundle_identifier = 14;</code>
     */
    java.lang.String getPrimaryBundleIdentifier();
    /**
     * <pre>
     * A reverse-DNS string identifier for this bundle.
     * </pre>
     *
     * <code>optional string primary_bundle_identifier = 14;</code>
     */
    com.google.protobuf.ByteString
        getPrimaryBundleIdentifierBytes();

    /**
     * <pre>
     * A fallback bundle identifier used when primary is not filled.
     * </pre>
     *
     * <code>optional string fallback_bundle_identifier = 15;</code>
     */
    boolean hasFallbackBundleIdentifier();
    /**
     * <pre>
     * A fallback bundle identifier used when primary is not filled.
     * </pre>
     *
     * <code>optional string fallback_bundle_identifier = 15;</code>
     */
    java.lang.String getFallbackBundleIdentifier();
    /**
     * <pre>
     * A fallback bundle identifier used when primary is not filled.
     * </pre>
     *
     * <code>optional string fallback_bundle_identifier = 15;</code>
     */
    com.google.protobuf.ByteString
        getFallbackBundleIdentifierBytes();
  }
  /**
   * <pre>
   * Contains all the arguments necessary to drive the BundleMerge tool,
   * including the path to the output file and extra files to include in the
   * bundle.
   * Next Id: 17
   * </pre>
   *
   * Protobuf type {@code devtools.xcode.Control}
   */
  public  static final class Control extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:devtools.xcode.Control)
      ControlOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Control.newBuilder() to construct.
    private Control(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Control() {
      bundleInfoPlistFile_ = "";
      outFile_ = "";
      platform_ = "";
      sdkVersion_ = "";
      minimumOsVersion_ = "";
      bundleRoot_ = "";
      bundleFile_ = java.util.Collections.emptyList();
      mergeZip_ = java.util.Collections.emptyList();
      nestedBundle_ = java.util.Collections.emptyList();
      primaryBundleIdentifier_ = "";
      fallbackBundleIdentifier_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Control(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      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;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              outFile_ = bs;
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              platform_ = bs;
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              sdkVersion_ = bs;
              break;
            }
            case 50: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000010;
              minimumOsVersion_ = bs;
              break;
            }
            case 58: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000020;
              bundleRoot_ = bs;
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                bundleFile_ = new java.util.ArrayList<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile>();
                mutable_bitField0_ |= 0x00000040;
              }
              bundleFile_.add(
                  input.readMessage(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                mergeZip_ = new java.util.ArrayList<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip>();
                mutable_bitField0_ |= 0x00000080;
              }
              mergeZip_.add(
                  input.readMessage(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.PARSER, extensionRegistry));
              break;
            }
            case 98: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                nestedBundle_ = new java.util.ArrayList<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control>();
                mutable_bitField0_ |= 0x00000100;
              }
              nestedBundle_.add(
                  input.readMessage(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.PARSER, extensionRegistry));
              break;
            }
            case 114: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000040;
              primaryBundleIdentifier_ = bs;
              break;
            }
            case 122: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000080;
              fallbackBundleIdentifier_ = bs;
              break;
            }
            case 130: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              bundleInfoPlistFile_ = bs;
              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_ & 0x00000040) == 0x00000040)) {
          bundleFile_ = java.util.Collections.unmodifiableList(bundleFile_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          mergeZip_ = java.util.Collections.unmodifiableList(mergeZip_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          nestedBundle_ = java.util.Collections.unmodifiableList(nestedBundle_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_Control_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_Control_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.class, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder.class);
    }

    private int bitField0_;
    public static final int BUNDLE_INFO_PLIST_FILE_FIELD_NUMBER = 16;
    private volatile java.lang.Object bundleInfoPlistFile_;
    /**
     * <pre>
     * The single info.plist file to be bundled into the archive. This plist will
     * not be modified by bundlemerge.
     * </pre>
     *
     * <code>optional string bundle_info_plist_file = 16;</code>
     */
    public boolean hasBundleInfoPlistFile() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The single info.plist file to be bundled into the archive. This plist will
     * not be modified by bundlemerge.
     * </pre>
     *
     * <code>optional string bundle_info_plist_file = 16;</code>
     */
    public java.lang.String getBundleInfoPlistFile() {
      java.lang.Object ref = bundleInfoPlistFile_;
      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();
        if (bs.isValidUtf8()) {
          bundleInfoPlistFile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The single info.plist file to be bundled into the archive. This plist will
     * not be modified by bundlemerge.
     * </pre>
     *
     * <code>optional string bundle_info_plist_file = 16;</code>
     */
    public com.google.protobuf.ByteString
        getBundleInfoPlistFileBytes() {
      java.lang.Object ref = bundleInfoPlistFile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bundleInfoPlistFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OUT_FILE_FIELD_NUMBER = 2;
    private volatile java.lang.Object outFile_;
    /**
     * <pre>
     * Path to the .ipa file to write. This is the final application bundle. Note
     * this is ignored for nested bundles.
     * </pre>
     *
     * <code>optional string out_file = 2;</code>
     */
    public boolean hasOutFile() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * Path to the .ipa file to write. This is the final application bundle. Note
     * this is ignored for nested bundles.
     * </pre>
     *
     * <code>optional string out_file = 2;</code>
     */
    public java.lang.String getOutFile() {
      java.lang.Object ref = outFile_;
      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();
        if (bs.isValidUtf8()) {
          outFile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Path to the .ipa file to write. This is the final application bundle. Note
     * this is ignored for nested bundles.
     * </pre>
     *
     * <code>optional string out_file = 2;</code>
     */
    public com.google.protobuf.ByteString
        getOutFileBytes() {
      java.lang.Object ref = outFile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        outFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PLATFORM_FIELD_NUMBER = 4;
    private volatile java.lang.Object platform_;
    /**
     * <pre>
     * One of the symbols in the com.google.devtools.build.xcode.common.Platform
     * (e.g. "DEVICE", "SIMULATOR").
     * </pre>
     *
     * <code>optional string platform = 4;</code>
     */
    public boolean hasPlatform() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * One of the symbols in the com.google.devtools.build.xcode.common.Platform
     * (e.g. "DEVICE", "SIMULATOR").
     * </pre>
     *
     * <code>optional string platform = 4;</code>
     */
    public java.lang.String getPlatform() {
      java.lang.Object ref = platform_;
      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();
        if (bs.isValidUtf8()) {
          platform_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * One of the symbols in the com.google.devtools.build.xcode.common.Platform
     * (e.g. "DEVICE", "SIMULATOR").
     * </pre>
     *
     * <code>optional string platform = 4;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformBytes() {
      java.lang.Object ref = platform_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platform_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SDK_VERSION_FIELD_NUMBER = 5;
    private volatile java.lang.Object sdkVersion_;
    /**
     * <pre>
     * The version of the SDK used to build the app.
     * </pre>
     *
     * <code>optional string sdk_version = 5;</code>
     */
    public boolean hasSdkVersion() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * The version of the SDK used to build the app.
     * </pre>
     *
     * <code>optional string sdk_version = 5;</code>
     */
    public java.lang.String getSdkVersion() {
      java.lang.Object ref = sdkVersion_;
      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();
        if (bs.isValidUtf8()) {
          sdkVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The version of the SDK used to build the app.
     * </pre>
     *
     * <code>optional string sdk_version = 5;</code>
     */
    public com.google.protobuf.ByteString
        getSdkVersionBytes() {
      java.lang.Object ref = sdkVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sdkVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MINIMUM_OS_VERSION_FIELD_NUMBER = 6;
    private volatile java.lang.Object minimumOsVersion_;
    /**
     * <pre>
     * Earliest iOS version on which the app will run.
     * </pre>
     *
     * <code>optional string minimum_os_version = 6;</code>
     */
    public boolean hasMinimumOsVersion() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * Earliest iOS version on which the app will run.
     * </pre>
     *
     * <code>optional string minimum_os_version = 6;</code>
     */
    public java.lang.String getMinimumOsVersion() {
      java.lang.Object ref = minimumOsVersion_;
      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();
        if (bs.isValidUtf8()) {
          minimumOsVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Earliest iOS version on which the app will run.
     * </pre>
     *
     * <code>optional string minimum_os_version = 6;</code>
     */
    public com.google.protobuf.ByteString
        getMinimumOsVersionBytes() {
      java.lang.Object ref = minimumOsVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        minimumOsVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BUNDLE_ROOT_FIELD_NUMBER = 7;
    private volatile java.lang.Object bundleRoot_;
    /**
     * <pre>
     * The directory inside which all files are placed in the final bundle.
     * For the top-most bundle, this is generally "Payload/{app_name}.app". If
     * this bundle is nested, then this bundle_root is relative to to the parent's
     * bundle_root.
     * </pre>
     *
     * <code>optional string bundle_root = 7;</code>
     */
    public boolean hasBundleRoot() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <pre>
     * The directory inside which all files are placed in the final bundle.
     * For the top-most bundle, this is generally "Payload/{app_name}.app". If
     * this bundle is nested, then this bundle_root is relative to to the parent's
     * bundle_root.
     * </pre>
     *
     * <code>optional string bundle_root = 7;</code>
     */
    public java.lang.String getBundleRoot() {
      java.lang.Object ref = bundleRoot_;
      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();
        if (bs.isValidUtf8()) {
          bundleRoot_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The directory inside which all files are placed in the final bundle.
     * For the top-most bundle, this is generally "Payload/{app_name}.app". If
     * this bundle is nested, then this bundle_root is relative to to the parent's
     * bundle_root.
     * </pre>
     *
     * <code>optional string bundle_root = 7;</code>
     */
    public com.google.protobuf.ByteString
        getBundleRootBytes() {
      java.lang.Object ref = bundleRoot_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bundleRoot_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BUNDLE_FILE_FIELD_NUMBER = 8;
    private java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile> bundleFile_;
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile> getBundleFileList() {
      return bundleFile_;
    }
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    public java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder> 
        getBundleFileOrBuilderList() {
      return bundleFile_;
    }
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    public int getBundleFileCount() {
      return bundleFile_.size();
    }
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile getBundleFile(int index) {
      return bundleFile_.get(index);
    }
    /**
     * <pre>
     * All files to put in the bundle besides automatically-generated files such
     * as Info.plist and PkgInfo. This should include the application binary.
     * </pre>
     *
     * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
     */
    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder getBundleFileOrBuilder(
        int index) {
      return bundleFile_.get(index);
    }

    public static final int MERGE_ZIP_FIELD_NUMBER = 10;
    private java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip> mergeZip_;
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip> getMergeZipList() {
      return mergeZip_;
    }
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    public java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder> 
        getMergeZipOrBuilderList() {
      return mergeZip_;
    }
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    public int getMergeZipCount() {
      return mergeZip_.size();
    }
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip getMergeZip(int index) {
      return mergeZip_.get(index);
    }
    /**
     * <pre>
     * Zip files to merge with the final zip. Note that bundle_root is ignored
     * when merging zips, so to place items in the bundle root, you should do one
     * of the following:
     * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
     *    rather than just "foo"
     * 2. set the root property on the MergeZip protobuf to {bundle_root}
     * Note that the paths of these zips are always relative to the zip file root
     * - they are not relative to the containing bundle.
     * </pre>
     *
     * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
     */
    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder getMergeZipOrBuilder(
        int index) {
      return mergeZip_.get(index);
    }

    public static final int NESTED_BUNDLE_FIELD_NUMBER = 12;
    private java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control> nestedBundle_;
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control> getNestedBundleList() {
      return nestedBundle_;
    }
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    public java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder> 
        getNestedBundleOrBuilderList() {
      return nestedBundle_;
    }
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    public int getNestedBundleCount() {
      return nestedBundle_.size();
    }
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control getNestedBundle(int index) {
      return nestedBundle_.get(index);
    }
    /**
     * <pre>
     * Bundles that are nested within this one. bundle_root in these bundles is
     * relative to the containing bundle's bundle_root.
     * </pre>
     *
     * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
     */
    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder getNestedBundleOrBuilder(
        int index) {
      return nestedBundle_.get(index);
    }

    public static final int PRIMARY_BUNDLE_IDENTIFIER_FIELD_NUMBER = 14;
    private volatile java.lang.Object primaryBundleIdentifier_;
    /**
     * <pre>
     * A reverse-DNS string identifier for this bundle.
     * </pre>
     *
     * <code>optional string primary_bundle_identifier = 14;</code>
     */
    public boolean hasPrimaryBundleIdentifier() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <pre>
     * A reverse-DNS string identifier for this bundle.
     * </pre>
     *
     * <code>optional string primary_bundle_identifier = 14;</code>
     */
    public java.lang.String getPrimaryBundleIdentifier() {
      java.lang.Object ref = primaryBundleIdentifier_;
      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();
        if (bs.isValidUtf8()) {
          primaryBundleIdentifier_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * A reverse-DNS string identifier for this bundle.
     * </pre>
     *
     * <code>optional string primary_bundle_identifier = 14;</code>
     */
    public com.google.protobuf.ByteString
        getPrimaryBundleIdentifierBytes() {
      java.lang.Object ref = primaryBundleIdentifier_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        primaryBundleIdentifier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FALLBACK_BUNDLE_IDENTIFIER_FIELD_NUMBER = 15;
    private volatile java.lang.Object fallbackBundleIdentifier_;
    /**
     * <pre>
     * A fallback bundle identifier used when primary is not filled.
     * </pre>
     *
     * <code>optional string fallback_bundle_identifier = 15;</code>
     */
    public boolean hasFallbackBundleIdentifier() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <pre>
     * A fallback bundle identifier used when primary is not filled.
     * </pre>
     *
     * <code>optional string fallback_bundle_identifier = 15;</code>
     */
    public java.lang.String getFallbackBundleIdentifier() {
      java.lang.Object ref = fallbackBundleIdentifier_;
      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();
        if (bs.isValidUtf8()) {
          fallbackBundleIdentifier_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * A fallback bundle identifier used when primary is not filled.
     * </pre>
     *
     * <code>optional string fallback_bundle_identifier = 15;</code>
     */
    public com.google.protobuf.ByteString
        getFallbackBundleIdentifierBytes() {
      java.lang.Object ref = fallbackBundleIdentifier_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fallbackBundleIdentifier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, outFile_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, platform_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, sdkVersion_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, minimumOsVersion_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, bundleRoot_);
      }
      for (int i = 0; i < bundleFile_.size(); i++) {
        output.writeMessage(8, bundleFile_.get(i));
      }
      for (int i = 0; i < mergeZip_.size(); i++) {
        output.writeMessage(10, mergeZip_.get(i));
      }
      for (int i = 0; i < nestedBundle_.size(); i++) {
        output.writeMessage(12, nestedBundle_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, primaryBundleIdentifier_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, fallbackBundleIdentifier_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, bundleInfoPlistFile_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, outFile_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, platform_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, sdkVersion_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, minimumOsVersion_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, bundleRoot_);
      }
      for (int i = 0; i < bundleFile_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, bundleFile_.get(i));
      }
      for (int i = 0; i < mergeZip_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, mergeZip_.get(i));
      }
      for (int i = 0; i < nestedBundle_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, nestedBundle_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, primaryBundleIdentifier_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, fallbackBundleIdentifier_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, bundleInfoPlistFile_);
      }
      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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control)) {
        return super.equals(obj);
      }
      com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control other = (com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control) obj;

      boolean result = true;
      result = result && (hasBundleInfoPlistFile() == other.hasBundleInfoPlistFile());
      if (hasBundleInfoPlistFile()) {
        result = result && getBundleInfoPlistFile()
            .equals(other.getBundleInfoPlistFile());
      }
      result = result && (hasOutFile() == other.hasOutFile());
      if (hasOutFile()) {
        result = result && getOutFile()
            .equals(other.getOutFile());
      }
      result = result && (hasPlatform() == other.hasPlatform());
      if (hasPlatform()) {
        result = result && getPlatform()
            .equals(other.getPlatform());
      }
      result = result && (hasSdkVersion() == other.hasSdkVersion());
      if (hasSdkVersion()) {
        result = result && getSdkVersion()
            .equals(other.getSdkVersion());
      }
      result = result && (hasMinimumOsVersion() == other.hasMinimumOsVersion());
      if (hasMinimumOsVersion()) {
        result = result && getMinimumOsVersion()
            .equals(other.getMinimumOsVersion());
      }
      result = result && (hasBundleRoot() == other.hasBundleRoot());
      if (hasBundleRoot()) {
        result = result && getBundleRoot()
            .equals(other.getBundleRoot());
      }
      result = result && getBundleFileList()
          .equals(other.getBundleFileList());
      result = result && getMergeZipList()
          .equals(other.getMergeZipList());
      result = result && getNestedBundleList()
          .equals(other.getNestedBundleList());
      result = result && (hasPrimaryBundleIdentifier() == other.hasPrimaryBundleIdentifier());
      if (hasPrimaryBundleIdentifier()) {
        result = result && getPrimaryBundleIdentifier()
            .equals(other.getPrimaryBundleIdentifier());
      }
      result = result && (hasFallbackBundleIdentifier() == other.hasFallbackBundleIdentifier());
      if (hasFallbackBundleIdentifier()) {
        result = result && getFallbackBundleIdentifier()
            .equals(other.getFallbackBundleIdentifier());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasBundleInfoPlistFile()) {
        hash = (37 * hash) + BUNDLE_INFO_PLIST_FILE_FIELD_NUMBER;
        hash = (53 * hash) + getBundleInfoPlistFile().hashCode();
      }
      if (hasOutFile()) {
        hash = (37 * hash) + OUT_FILE_FIELD_NUMBER;
        hash = (53 * hash) + getOutFile().hashCode();
      }
      if (hasPlatform()) {
        hash = (37 * hash) + PLATFORM_FIELD_NUMBER;
        hash = (53 * hash) + getPlatform().hashCode();
      }
      if (hasSdkVersion()) {
        hash = (37 * hash) + SDK_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getSdkVersion().hashCode();
      }
      if (hasMinimumOsVersion()) {
        hash = (37 * hash) + MINIMUM_OS_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getMinimumOsVersion().hashCode();
      }
      if (hasBundleRoot()) {
        hash = (37 * hash) + BUNDLE_ROOT_FIELD_NUMBER;
        hash = (53 * hash) + getBundleRoot().hashCode();
      }
      if (getBundleFileCount() > 0) {
        hash = (37 * hash) + BUNDLE_FILE_FIELD_NUMBER;
        hash = (53 * hash) + getBundleFileList().hashCode();
      }
      if (getMergeZipCount() > 0) {
        hash = (37 * hash) + MERGE_ZIP_FIELD_NUMBER;
        hash = (53 * hash) + getMergeZipList().hashCode();
      }
      if (getNestedBundleCount() > 0) {
        hash = (37 * hash) + NESTED_BUNDLE_FIELD_NUMBER;
        hash = (53 * hash) + getNestedBundleList().hashCode();
      }
      if (hasPrimaryBundleIdentifier()) {
        hash = (37 * hash) + PRIMARY_BUNDLE_IDENTIFIER_FIELD_NUMBER;
        hash = (53 * hash) + getPrimaryBundleIdentifier().hashCode();
      }
      if (hasFallbackBundleIdentifier()) {
        hash = (37 * hash) + FALLBACK_BUNDLE_IDENTIFIER_FIELD_NUMBER;
        hash = (53 * hash) + getFallbackBundleIdentifier().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control 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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control 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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * Contains all the arguments necessary to drive the BundleMerge tool,
     * including the path to the output file and extra files to include in the
     * bundle.
     * Next Id: 17
     * </pre>
     *
     * Protobuf type {@code devtools.xcode.Control}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:devtools.xcode.Control)
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_Control_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_Control_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.class, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder.class);
      }

      // Construct using com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBundleFileFieldBuilder();
          getMergeZipFieldBuilder();
          getNestedBundleFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        bundleInfoPlistFile_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        outFile_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        platform_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        sdkVersion_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        minimumOsVersion_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        bundleRoot_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        if (bundleFileBuilder_ == null) {
          bundleFile_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          bundleFileBuilder_.clear();
        }
        if (mergeZipBuilder_ == null) {
          mergeZip_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
        } else {
          mergeZipBuilder_.clear();
        }
        if (nestedBundleBuilder_ == null) {
          nestedBundle_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
        } else {
          nestedBundleBuilder_.clear();
        }
        primaryBundleIdentifier_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        fallbackBundleIdentifier_ = "";
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_Control_descriptor;
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control getDefaultInstanceForType() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.getDefaultInstance();
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control build() {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control buildPartial() {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control result = new com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.bundleInfoPlistFile_ = bundleInfoPlistFile_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.outFile_ = outFile_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.platform_ = platform_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.sdkVersion_ = sdkVersion_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.minimumOsVersion_ = minimumOsVersion_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.bundleRoot_ = bundleRoot_;
        if (bundleFileBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            bundleFile_ = java.util.Collections.unmodifiableList(bundleFile_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.bundleFile_ = bundleFile_;
        } else {
          result.bundleFile_ = bundleFileBuilder_.build();
        }
        if (mergeZipBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            mergeZip_ = java.util.Collections.unmodifiableList(mergeZip_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.mergeZip_ = mergeZip_;
        } else {
          result.mergeZip_ = mergeZipBuilder_.build();
        }
        if (nestedBundleBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            nestedBundle_ = java.util.Collections.unmodifiableList(nestedBundle_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.nestedBundle_ = nestedBundle_;
        } else {
          result.nestedBundle_ = nestedBundleBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000040;
        }
        result.primaryBundleIdentifier_ = primaryBundleIdentifier_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000080;
        }
        result.fallbackBundleIdentifier_ = fallbackBundleIdentifier_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control) {
          return mergeFrom((com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control other) {
        if (other == com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.getDefaultInstance()) return this;
        if (other.hasBundleInfoPlistFile()) {
          bitField0_ |= 0x00000001;
          bundleInfoPlistFile_ = other.bundleInfoPlistFile_;
          onChanged();
        }
        if (other.hasOutFile()) {
          bitField0_ |= 0x00000002;
          outFile_ = other.outFile_;
          onChanged();
        }
        if (other.hasPlatform()) {
          bitField0_ |= 0x00000004;
          platform_ = other.platform_;
          onChanged();
        }
        if (other.hasSdkVersion()) {
          bitField0_ |= 0x00000008;
          sdkVersion_ = other.sdkVersion_;
          onChanged();
        }
        if (other.hasMinimumOsVersion()) {
          bitField0_ |= 0x00000010;
          minimumOsVersion_ = other.minimumOsVersion_;
          onChanged();
        }
        if (other.hasBundleRoot()) {
          bitField0_ |= 0x00000020;
          bundleRoot_ = other.bundleRoot_;
          onChanged();
        }
        if (bundleFileBuilder_ == null) {
          if (!other.bundleFile_.isEmpty()) {
            if (bundleFile_.isEmpty()) {
              bundleFile_ = other.bundleFile_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureBundleFileIsMutable();
              bundleFile_.addAll(other.bundleFile_);
            }
            onChanged();
          }
        } else {
          if (!other.bundleFile_.isEmpty()) {
            if (bundleFileBuilder_.isEmpty()) {
              bundleFileBuilder_.dispose();
              bundleFileBuilder_ = null;
              bundleFile_ = other.bundleFile_;
              bitField0_ = (bitField0_ & ~0x00000040);
              bundleFileBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBundleFileFieldBuilder() : null;
            } else {
              bundleFileBuilder_.addAllMessages(other.bundleFile_);
            }
          }
        }
        if (mergeZipBuilder_ == null) {
          if (!other.mergeZip_.isEmpty()) {
            if (mergeZip_.isEmpty()) {
              mergeZip_ = other.mergeZip_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureMergeZipIsMutable();
              mergeZip_.addAll(other.mergeZip_);
            }
            onChanged();
          }
        } else {
          if (!other.mergeZip_.isEmpty()) {
            if (mergeZipBuilder_.isEmpty()) {
              mergeZipBuilder_.dispose();
              mergeZipBuilder_ = null;
              mergeZip_ = other.mergeZip_;
              bitField0_ = (bitField0_ & ~0x00000080);
              mergeZipBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMergeZipFieldBuilder() : null;
            } else {
              mergeZipBuilder_.addAllMessages(other.mergeZip_);
            }
          }
        }
        if (nestedBundleBuilder_ == null) {
          if (!other.nestedBundle_.isEmpty()) {
            if (nestedBundle_.isEmpty()) {
              nestedBundle_ = other.nestedBundle_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureNestedBundleIsMutable();
              nestedBundle_.addAll(other.nestedBundle_);
            }
            onChanged();
          }
        } else {
          if (!other.nestedBundle_.isEmpty()) {
            if (nestedBundleBuilder_.isEmpty()) {
              nestedBundleBuilder_.dispose();
              nestedBundleBuilder_ = null;
              nestedBundle_ = other.nestedBundle_;
              bitField0_ = (bitField0_ & ~0x00000100);
              nestedBundleBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNestedBundleFieldBuilder() : null;
            } else {
              nestedBundleBuilder_.addAllMessages(other.nestedBundle_);
            }
          }
        }
        if (other.hasPrimaryBundleIdentifier()) {
          bitField0_ |= 0x00000200;
          primaryBundleIdentifier_ = other.primaryBundleIdentifier_;
          onChanged();
        }
        if (other.hasFallbackBundleIdentifier()) {
          bitField0_ |= 0x00000400;
          fallbackBundleIdentifier_ = other.fallbackBundleIdentifier_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object bundleInfoPlistFile_ = "";
      /**
       * <pre>
       * The single info.plist file to be bundled into the archive. This plist will
       * not be modified by bundlemerge.
       * </pre>
       *
       * <code>optional string bundle_info_plist_file = 16;</code>
       */
      public boolean hasBundleInfoPlistFile() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The single info.plist file to be bundled into the archive. This plist will
       * not be modified by bundlemerge.
       * </pre>
       *
       * <code>optional string bundle_info_plist_file = 16;</code>
       */
      public java.lang.String getBundleInfoPlistFile() {
        java.lang.Object ref = bundleInfoPlistFile_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            bundleInfoPlistFile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The single info.plist file to be bundled into the archive. This plist will
       * not be modified by bundlemerge.
       * </pre>
       *
       * <code>optional string bundle_info_plist_file = 16;</code>
       */
      public com.google.protobuf.ByteString
          getBundleInfoPlistFileBytes() {
        java.lang.Object ref = bundleInfoPlistFile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bundleInfoPlistFile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The single info.plist file to be bundled into the archive. This plist will
       * not be modified by bundlemerge.
       * </pre>
       *
       * <code>optional string bundle_info_plist_file = 16;</code>
       */
      public Builder setBundleInfoPlistFile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        bundleInfoPlistFile_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The single info.plist file to be bundled into the archive. This plist will
       * not be modified by bundlemerge.
       * </pre>
       *
       * <code>optional string bundle_info_plist_file = 16;</code>
       */
      public Builder clearBundleInfoPlistFile() {
        bitField0_ = (bitField0_ & ~0x00000001);
        bundleInfoPlistFile_ = getDefaultInstance().getBundleInfoPlistFile();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The single info.plist file to be bundled into the archive. This plist will
       * not be modified by bundlemerge.
       * </pre>
       *
       * <code>optional string bundle_info_plist_file = 16;</code>
       */
      public Builder setBundleInfoPlistFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        bundleInfoPlistFile_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object outFile_ = "";
      /**
       * <pre>
       * Path to the .ipa file to write. This is the final application bundle. Note
       * this is ignored for nested bundles.
       * </pre>
       *
       * <code>optional string out_file = 2;</code>
       */
      public boolean hasOutFile() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Path to the .ipa file to write. This is the final application bundle. Note
       * this is ignored for nested bundles.
       * </pre>
       *
       * <code>optional string out_file = 2;</code>
       */
      public java.lang.String getOutFile() {
        java.lang.Object ref = outFile_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            outFile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path to the .ipa file to write. This is the final application bundle. Note
       * this is ignored for nested bundles.
       * </pre>
       *
       * <code>optional string out_file = 2;</code>
       */
      public com.google.protobuf.ByteString
          getOutFileBytes() {
        java.lang.Object ref = outFile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          outFile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path to the .ipa file to write. This is the final application bundle. Note
       * this is ignored for nested bundles.
       * </pre>
       *
       * <code>optional string out_file = 2;</code>
       */
      public Builder setOutFile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        outFile_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to the .ipa file to write. This is the final application bundle. Note
       * this is ignored for nested bundles.
       * </pre>
       *
       * <code>optional string out_file = 2;</code>
       */
      public Builder clearOutFile() {
        bitField0_ = (bitField0_ & ~0x00000002);
        outFile_ = getDefaultInstance().getOutFile();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to the .ipa file to write. This is the final application bundle. Note
       * this is ignored for nested bundles.
       * </pre>
       *
       * <code>optional string out_file = 2;</code>
       */
      public Builder setOutFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        outFile_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object platform_ = "";
      /**
       * <pre>
       * One of the symbols in the com.google.devtools.build.xcode.common.Platform
       * (e.g. "DEVICE", "SIMULATOR").
       * </pre>
       *
       * <code>optional string platform = 4;</code>
       */
      public boolean hasPlatform() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * One of the symbols in the com.google.devtools.build.xcode.common.Platform
       * (e.g. "DEVICE", "SIMULATOR").
       * </pre>
       *
       * <code>optional string platform = 4;</code>
       */
      public java.lang.String getPlatform() {
        java.lang.Object ref = platform_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            platform_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * One of the symbols in the com.google.devtools.build.xcode.common.Platform
       * (e.g. "DEVICE", "SIMULATOR").
       * </pre>
       *
       * <code>optional string platform = 4;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformBytes() {
        java.lang.Object ref = platform_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platform_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * One of the symbols in the com.google.devtools.build.xcode.common.Platform
       * (e.g. "DEVICE", "SIMULATOR").
       * </pre>
       *
       * <code>optional string platform = 4;</code>
       */
      public Builder setPlatform(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        platform_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * One of the symbols in the com.google.devtools.build.xcode.common.Platform
       * (e.g. "DEVICE", "SIMULATOR").
       * </pre>
       *
       * <code>optional string platform = 4;</code>
       */
      public Builder clearPlatform() {
        bitField0_ = (bitField0_ & ~0x00000004);
        platform_ = getDefaultInstance().getPlatform();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * One of the symbols in the com.google.devtools.build.xcode.common.Platform
       * (e.g. "DEVICE", "SIMULATOR").
       * </pre>
       *
       * <code>optional string platform = 4;</code>
       */
      public Builder setPlatformBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        platform_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sdkVersion_ = "";
      /**
       * <pre>
       * The version of the SDK used to build the app.
       * </pre>
       *
       * <code>optional string sdk_version = 5;</code>
       */
      public boolean hasSdkVersion() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * The version of the SDK used to build the app.
       * </pre>
       *
       * <code>optional string sdk_version = 5;</code>
       */
      public java.lang.String getSdkVersion() {
        java.lang.Object ref = sdkVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sdkVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The version of the SDK used to build the app.
       * </pre>
       *
       * <code>optional string sdk_version = 5;</code>
       */
      public com.google.protobuf.ByteString
          getSdkVersionBytes() {
        java.lang.Object ref = sdkVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sdkVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The version of the SDK used to build the app.
       * </pre>
       *
       * <code>optional string sdk_version = 5;</code>
       */
      public Builder setSdkVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        sdkVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The version of the SDK used to build the app.
       * </pre>
       *
       * <code>optional string sdk_version = 5;</code>
       */
      public Builder clearSdkVersion() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sdkVersion_ = getDefaultInstance().getSdkVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The version of the SDK used to build the app.
       * </pre>
       *
       * <code>optional string sdk_version = 5;</code>
       */
      public Builder setSdkVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        sdkVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object minimumOsVersion_ = "";
      /**
       * <pre>
       * Earliest iOS version on which the app will run.
       * </pre>
       *
       * <code>optional string minimum_os_version = 6;</code>
       */
      public boolean hasMinimumOsVersion() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       * Earliest iOS version on which the app will run.
       * </pre>
       *
       * <code>optional string minimum_os_version = 6;</code>
       */
      public java.lang.String getMinimumOsVersion() {
        java.lang.Object ref = minimumOsVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            minimumOsVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Earliest iOS version on which the app will run.
       * </pre>
       *
       * <code>optional string minimum_os_version = 6;</code>
       */
      public com.google.protobuf.ByteString
          getMinimumOsVersionBytes() {
        java.lang.Object ref = minimumOsVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          minimumOsVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Earliest iOS version on which the app will run.
       * </pre>
       *
       * <code>optional string minimum_os_version = 6;</code>
       */
      public Builder setMinimumOsVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        minimumOsVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Earliest iOS version on which the app will run.
       * </pre>
       *
       * <code>optional string minimum_os_version = 6;</code>
       */
      public Builder clearMinimumOsVersion() {
        bitField0_ = (bitField0_ & ~0x00000010);
        minimumOsVersion_ = getDefaultInstance().getMinimumOsVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Earliest iOS version on which the app will run.
       * </pre>
       *
       * <code>optional string minimum_os_version = 6;</code>
       */
      public Builder setMinimumOsVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        minimumOsVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object bundleRoot_ = "";
      /**
       * <pre>
       * The directory inside which all files are placed in the final bundle.
       * For the top-most bundle, this is generally "Payload/{app_name}.app". If
       * this bundle is nested, then this bundle_root is relative to to the parent's
       * bundle_root.
       * </pre>
       *
       * <code>optional string bundle_root = 7;</code>
       */
      public boolean hasBundleRoot() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       * The directory inside which all files are placed in the final bundle.
       * For the top-most bundle, this is generally "Payload/{app_name}.app". If
       * this bundle is nested, then this bundle_root is relative to to the parent's
       * bundle_root.
       * </pre>
       *
       * <code>optional string bundle_root = 7;</code>
       */
      public java.lang.String getBundleRoot() {
        java.lang.Object ref = bundleRoot_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            bundleRoot_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The directory inside which all files are placed in the final bundle.
       * For the top-most bundle, this is generally "Payload/{app_name}.app". If
       * this bundle is nested, then this bundle_root is relative to to the parent's
       * bundle_root.
       * </pre>
       *
       * <code>optional string bundle_root = 7;</code>
       */
      public com.google.protobuf.ByteString
          getBundleRootBytes() {
        java.lang.Object ref = bundleRoot_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bundleRoot_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The directory inside which all files are placed in the final bundle.
       * For the top-most bundle, this is generally "Payload/{app_name}.app". If
       * this bundle is nested, then this bundle_root is relative to to the parent's
       * bundle_root.
       * </pre>
       *
       * <code>optional string bundle_root = 7;</code>
       */
      public Builder setBundleRoot(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        bundleRoot_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The directory inside which all files are placed in the final bundle.
       * For the top-most bundle, this is generally "Payload/{app_name}.app". If
       * this bundle is nested, then this bundle_root is relative to to the parent's
       * bundle_root.
       * </pre>
       *
       * <code>optional string bundle_root = 7;</code>
       */
      public Builder clearBundleRoot() {
        bitField0_ = (bitField0_ & ~0x00000020);
        bundleRoot_ = getDefaultInstance().getBundleRoot();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The directory inside which all files are placed in the final bundle.
       * For the top-most bundle, this is generally "Payload/{app_name}.app". If
       * this bundle is nested, then this bundle_root is relative to to the parent's
       * bundle_root.
       * </pre>
       *
       * <code>optional string bundle_root = 7;</code>
       */
      public Builder setBundleRootBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        bundleRoot_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile> bundleFile_ =
        java.util.Collections.emptyList();
      private void ensureBundleFileIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          bundleFile_ = new java.util.ArrayList<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile>(bundleFile_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder> bundleFileBuilder_;

      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile> getBundleFileList() {
        if (bundleFileBuilder_ == null) {
          return java.util.Collections.unmodifiableList(bundleFile_);
        } else {
          return bundleFileBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public int getBundleFileCount() {
        if (bundleFileBuilder_ == null) {
          return bundleFile_.size();
        } else {
          return bundleFileBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile getBundleFile(int index) {
        if (bundleFileBuilder_ == null) {
          return bundleFile_.get(index);
        } else {
          return bundleFileBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder setBundleFile(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile value) {
        if (bundleFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBundleFileIsMutable();
          bundleFile_.set(index, value);
          onChanged();
        } else {
          bundleFileBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder setBundleFile(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder builderForValue) {
        if (bundleFileBuilder_ == null) {
          ensureBundleFileIsMutable();
          bundleFile_.set(index, builderForValue.build());
          onChanged();
        } else {
          bundleFileBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder addBundleFile(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile value) {
        if (bundleFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBundleFileIsMutable();
          bundleFile_.add(value);
          onChanged();
        } else {
          bundleFileBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder addBundleFile(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile value) {
        if (bundleFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBundleFileIsMutable();
          bundleFile_.add(index, value);
          onChanged();
        } else {
          bundleFileBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder addBundleFile(
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder builderForValue) {
        if (bundleFileBuilder_ == null) {
          ensureBundleFileIsMutable();
          bundleFile_.add(builderForValue.build());
          onChanged();
        } else {
          bundleFileBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder addBundleFile(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder builderForValue) {
        if (bundleFileBuilder_ == null) {
          ensureBundleFileIsMutable();
          bundleFile_.add(index, builderForValue.build());
          onChanged();
        } else {
          bundleFileBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder addAllBundleFile(
          java.lang.Iterable<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile> values) {
        if (bundleFileBuilder_ == null) {
          ensureBundleFileIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, bundleFile_);
          onChanged();
        } else {
          bundleFileBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder clearBundleFile() {
        if (bundleFileBuilder_ == null) {
          bundleFile_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          bundleFileBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public Builder removeBundleFile(int index) {
        if (bundleFileBuilder_ == null) {
          ensureBundleFileIsMutable();
          bundleFile_.remove(index);
          onChanged();
        } else {
          bundleFileBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder getBundleFileBuilder(
          int index) {
        return getBundleFileFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder getBundleFileOrBuilder(
          int index) {
        if (bundleFileBuilder_ == null) {
          return bundleFile_.get(index);  } else {
          return bundleFileBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder> 
           getBundleFileOrBuilderList() {
        if (bundleFileBuilder_ != null) {
          return bundleFileBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(bundleFile_);
        }
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder addBundleFileBuilder() {
        return getBundleFileFieldBuilder().addBuilder(
            com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.getDefaultInstance());
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder addBundleFileBuilder(
          int index) {
        return getBundleFileFieldBuilder().addBuilder(
            index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.getDefaultInstance());
      }
      /**
       * <pre>
       * All files to put in the bundle besides automatically-generated files such
       * as Info.plist and PkgInfo. This should include the application binary.
       * </pre>
       *
       * <code>repeated .devtools.xcode.BundleFile bundle_file = 8;</code>
       */
      public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder> 
           getBundleFileBuilderList() {
        return getBundleFileFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder> 
          getBundleFileFieldBuilder() {
        if (bundleFileBuilder_ == null) {
          bundleFileBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder>(
                  bundleFile_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          bundleFile_ = null;
        }
        return bundleFileBuilder_;
      }

      private java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip> mergeZip_ =
        java.util.Collections.emptyList();
      private void ensureMergeZipIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          mergeZip_ = new java.util.ArrayList<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip>(mergeZip_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder> mergeZipBuilder_;

      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip> getMergeZipList() {
        if (mergeZipBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mergeZip_);
        } else {
          return mergeZipBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public int getMergeZipCount() {
        if (mergeZipBuilder_ == null) {
          return mergeZip_.size();
        } else {
          return mergeZipBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip getMergeZip(int index) {
        if (mergeZipBuilder_ == null) {
          return mergeZip_.get(index);
        } else {
          return mergeZipBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder setMergeZip(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip value) {
        if (mergeZipBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMergeZipIsMutable();
          mergeZip_.set(index, value);
          onChanged();
        } else {
          mergeZipBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder setMergeZip(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder builderForValue) {
        if (mergeZipBuilder_ == null) {
          ensureMergeZipIsMutable();
          mergeZip_.set(index, builderForValue.build());
          onChanged();
        } else {
          mergeZipBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder addMergeZip(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip value) {
        if (mergeZipBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMergeZipIsMutable();
          mergeZip_.add(value);
          onChanged();
        } else {
          mergeZipBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder addMergeZip(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip value) {
        if (mergeZipBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMergeZipIsMutable();
          mergeZip_.add(index, value);
          onChanged();
        } else {
          mergeZipBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder addMergeZip(
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder builderForValue) {
        if (mergeZipBuilder_ == null) {
          ensureMergeZipIsMutable();
          mergeZip_.add(builderForValue.build());
          onChanged();
        } else {
          mergeZipBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder addMergeZip(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder builderForValue) {
        if (mergeZipBuilder_ == null) {
          ensureMergeZipIsMutable();
          mergeZip_.add(index, builderForValue.build());
          onChanged();
        } else {
          mergeZipBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder addAllMergeZip(
          java.lang.Iterable<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip> values) {
        if (mergeZipBuilder_ == null) {
          ensureMergeZipIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mergeZip_);
          onChanged();
        } else {
          mergeZipBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder clearMergeZip() {
        if (mergeZipBuilder_ == null) {
          mergeZip_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          mergeZipBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public Builder removeMergeZip(int index) {
        if (mergeZipBuilder_ == null) {
          ensureMergeZipIsMutable();
          mergeZip_.remove(index);
          onChanged();
        } else {
          mergeZipBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder getMergeZipBuilder(
          int index) {
        return getMergeZipFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder getMergeZipOrBuilder(
          int index) {
        if (mergeZipBuilder_ == null) {
          return mergeZip_.get(index);  } else {
          return mergeZipBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder> 
           getMergeZipOrBuilderList() {
        if (mergeZipBuilder_ != null) {
          return mergeZipBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mergeZip_);
        }
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder addMergeZipBuilder() {
        return getMergeZipFieldBuilder().addBuilder(
            com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.getDefaultInstance());
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder addMergeZipBuilder(
          int index) {
        return getMergeZipFieldBuilder().addBuilder(
            index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.getDefaultInstance());
      }
      /**
       * <pre>
       * Zip files to merge with the final zip. Note that bundle_root is ignored
       * when merging zips, so to place items in the bundle root, you should do one
       * of the following:
       * 1. make the merge_zips have entries that are named "{bundle_root}/foo"
       *    rather than just "foo"
       * 2. set the root property on the MergeZip protobuf to {bundle_root}
       * Note that the paths of these zips are always relative to the zip file root
       * - they are not relative to the containing bundle.
       * </pre>
       *
       * <code>repeated .devtools.xcode.MergeZip merge_zip = 10;</code>
       */
      public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder> 
           getMergeZipBuilderList() {
        return getMergeZipFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder> 
          getMergeZipFieldBuilder() {
        if (mergeZipBuilder_ == null) {
          mergeZipBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder>(
                  mergeZip_,
                  ((bitField0_ & 0x00000080) == 0x00000080),
                  getParentForChildren(),
                  isClean());
          mergeZip_ = null;
        }
        return mergeZipBuilder_;
      }

      private java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control> nestedBundle_ =
        java.util.Collections.emptyList();
      private void ensureNestedBundleIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          nestedBundle_ = new java.util.ArrayList<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control>(nestedBundle_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder> nestedBundleBuilder_;

      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control> getNestedBundleList() {
        if (nestedBundleBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nestedBundle_);
        } else {
          return nestedBundleBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public int getNestedBundleCount() {
        if (nestedBundleBuilder_ == null) {
          return nestedBundle_.size();
        } else {
          return nestedBundleBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control getNestedBundle(int index) {
        if (nestedBundleBuilder_ == null) {
          return nestedBundle_.get(index);
        } else {
          return nestedBundleBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder setNestedBundle(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control value) {
        if (nestedBundleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedBundleIsMutable();
          nestedBundle_.set(index, value);
          onChanged();
        } else {
          nestedBundleBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder setNestedBundle(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder builderForValue) {
        if (nestedBundleBuilder_ == null) {
          ensureNestedBundleIsMutable();
          nestedBundle_.set(index, builderForValue.build());
          onChanged();
        } else {
          nestedBundleBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder addNestedBundle(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control value) {
        if (nestedBundleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedBundleIsMutable();
          nestedBundle_.add(value);
          onChanged();
        } else {
          nestedBundleBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder addNestedBundle(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control value) {
        if (nestedBundleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedBundleIsMutable();
          nestedBundle_.add(index, value);
          onChanged();
        } else {
          nestedBundleBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder addNestedBundle(
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder builderForValue) {
        if (nestedBundleBuilder_ == null) {
          ensureNestedBundleIsMutable();
          nestedBundle_.add(builderForValue.build());
          onChanged();
        } else {
          nestedBundleBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder addNestedBundle(
          int index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder builderForValue) {
        if (nestedBundleBuilder_ == null) {
          ensureNestedBundleIsMutable();
          nestedBundle_.add(index, builderForValue.build());
          onChanged();
        } else {
          nestedBundleBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder addAllNestedBundle(
          java.lang.Iterable<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control> values) {
        if (nestedBundleBuilder_ == null) {
          ensureNestedBundleIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nestedBundle_);
          onChanged();
        } else {
          nestedBundleBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder clearNestedBundle() {
        if (nestedBundleBuilder_ == null) {
          nestedBundle_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          nestedBundleBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public Builder removeNestedBundle(int index) {
        if (nestedBundleBuilder_ == null) {
          ensureNestedBundleIsMutable();
          nestedBundle_.remove(index);
          onChanged();
        } else {
          nestedBundleBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder getNestedBundleBuilder(
          int index) {
        return getNestedBundleFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder getNestedBundleOrBuilder(
          int index) {
        if (nestedBundleBuilder_ == null) {
          return nestedBundle_.get(index);  } else {
          return nestedBundleBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public java.util.List<? extends com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder> 
           getNestedBundleOrBuilderList() {
        if (nestedBundleBuilder_ != null) {
          return nestedBundleBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nestedBundle_);
        }
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder addNestedBundleBuilder() {
        return getNestedBundleFieldBuilder().addBuilder(
            com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.getDefaultInstance());
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder addNestedBundleBuilder(
          int index) {
        return getNestedBundleFieldBuilder().addBuilder(
            index, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.getDefaultInstance());
      }
      /**
       * <pre>
       * Bundles that are nested within this one. bundle_root in these bundles is
       * relative to the containing bundle's bundle_root.
       * </pre>
       *
       * <code>repeated .devtools.xcode.Control nested_bundle = 12;</code>
       */
      public java.util.List<com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder> 
           getNestedBundleBuilderList() {
        return getNestedBundleFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder> 
          getNestedBundleFieldBuilder() {
        if (nestedBundleBuilder_ == null) {
          nestedBundleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control.Builder, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.ControlOrBuilder>(
                  nestedBundle_,
                  ((bitField0_ & 0x00000100) == 0x00000100),
                  getParentForChildren(),
                  isClean());
          nestedBundle_ = null;
        }
        return nestedBundleBuilder_;
      }

      private java.lang.Object primaryBundleIdentifier_ = "";
      /**
       * <pre>
       * A reverse-DNS string identifier for this bundle.
       * </pre>
       *
       * <code>optional string primary_bundle_identifier = 14;</code>
       */
      public boolean hasPrimaryBundleIdentifier() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <pre>
       * A reverse-DNS string identifier for this bundle.
       * </pre>
       *
       * <code>optional string primary_bundle_identifier = 14;</code>
       */
      public java.lang.String getPrimaryBundleIdentifier() {
        java.lang.Object ref = primaryBundleIdentifier_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            primaryBundleIdentifier_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A reverse-DNS string identifier for this bundle.
       * </pre>
       *
       * <code>optional string primary_bundle_identifier = 14;</code>
       */
      public com.google.protobuf.ByteString
          getPrimaryBundleIdentifierBytes() {
        java.lang.Object ref = primaryBundleIdentifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          primaryBundleIdentifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A reverse-DNS string identifier for this bundle.
       * </pre>
       *
       * <code>optional string primary_bundle_identifier = 14;</code>
       */
      public Builder setPrimaryBundleIdentifier(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        primaryBundleIdentifier_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A reverse-DNS string identifier for this bundle.
       * </pre>
       *
       * <code>optional string primary_bundle_identifier = 14;</code>
       */
      public Builder clearPrimaryBundleIdentifier() {
        bitField0_ = (bitField0_ & ~0x00000200);
        primaryBundleIdentifier_ = getDefaultInstance().getPrimaryBundleIdentifier();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A reverse-DNS string identifier for this bundle.
       * </pre>
       *
       * <code>optional string primary_bundle_identifier = 14;</code>
       */
      public Builder setPrimaryBundleIdentifierBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        primaryBundleIdentifier_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fallbackBundleIdentifier_ = "";
      /**
       * <pre>
       * A fallback bundle identifier used when primary is not filled.
       * </pre>
       *
       * <code>optional string fallback_bundle_identifier = 15;</code>
       */
      public boolean hasFallbackBundleIdentifier() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <pre>
       * A fallback bundle identifier used when primary is not filled.
       * </pre>
       *
       * <code>optional string fallback_bundle_identifier = 15;</code>
       */
      public java.lang.String getFallbackBundleIdentifier() {
        java.lang.Object ref = fallbackBundleIdentifier_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            fallbackBundleIdentifier_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A fallback bundle identifier used when primary is not filled.
       * </pre>
       *
       * <code>optional string fallback_bundle_identifier = 15;</code>
       */
      public com.google.protobuf.ByteString
          getFallbackBundleIdentifierBytes() {
        java.lang.Object ref = fallbackBundleIdentifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fallbackBundleIdentifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A fallback bundle identifier used when primary is not filled.
       * </pre>
       *
       * <code>optional string fallback_bundle_identifier = 15;</code>
       */
      public Builder setFallbackBundleIdentifier(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        fallbackBundleIdentifier_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A fallback bundle identifier used when primary is not filled.
       * </pre>
       *
       * <code>optional string fallback_bundle_identifier = 15;</code>
       */
      public Builder clearFallbackBundleIdentifier() {
        bitField0_ = (bitField0_ & ~0x00000400);
        fallbackBundleIdentifier_ = getDefaultInstance().getFallbackBundleIdentifier();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A fallback bundle identifier used when primary is not filled.
       * </pre>
       *
       * <code>optional string fallback_bundle_identifier = 15;</code>
       */
      public Builder setFallbackBundleIdentifierBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        fallbackBundleIdentifier_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:devtools.xcode.Control)
    }

    // @@protoc_insertion_point(class_scope:devtools.xcode.Control)
    private static final com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control();
    }

    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Control getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MergeZipOrBuilder extends
      // @@protoc_insertion_point(interface_extends:devtools.xcode.MergeZip)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The prefix to prepend to every entry name before putting it in the final
     * zip. For instance, "Payload/Foo.app/" (notice the final slash).
     * </pre>
     *
     * <code>optional string entry_name_prefix = 1;</code>
     */
    boolean hasEntryNamePrefix();
    /**
     * <pre>
     * The prefix to prepend to every entry name before putting it in the final
     * zip. For instance, "Payload/Foo.app/" (notice the final slash).
     * </pre>
     *
     * <code>optional string entry_name_prefix = 1;</code>
     */
    java.lang.String getEntryNamePrefix();
    /**
     * <pre>
     * The prefix to prepend to every entry name before putting it in the final
     * zip. For instance, "Payload/Foo.app/" (notice the final slash).
     * </pre>
     *
     * <code>optional string entry_name_prefix = 1;</code>
     */
    com.google.protobuf.ByteString
        getEntryNamePrefixBytes();

    /**
     * <pre>
     * The path to the source file to merge.
     * </pre>
     *
     * <code>optional string source_path = 2;</code>
     */
    boolean hasSourcePath();
    /**
     * <pre>
     * The path to the source file to merge.
     * </pre>
     *
     * <code>optional string source_path = 2;</code>
     */
    java.lang.String getSourcePath();
    /**
     * <pre>
     * The path to the source file to merge.
     * </pre>
     *
     * <code>optional string source_path = 2;</code>
     */
    com.google.protobuf.ByteString
        getSourcePathBytes();
  }
  /**
   * <pre>
   * Represents a zip file to merge with the final zip.
   * </pre>
   *
   * Protobuf type {@code devtools.xcode.MergeZip}
   */
  public  static final class MergeZip extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:devtools.xcode.MergeZip)
      MergeZipOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MergeZip.newBuilder() to construct.
    private MergeZip(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MergeZip() {
      entryNamePrefix_ = "";
      sourcePath_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MergeZip(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      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;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              entryNamePrefix_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              sourcePath_ = bs;
              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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_MergeZip_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_MergeZip_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.class, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder.class);
    }

    private int bitField0_;
    public static final int ENTRY_NAME_PREFIX_FIELD_NUMBER = 1;
    private volatile java.lang.Object entryNamePrefix_;
    /**
     * <pre>
     * The prefix to prepend to every entry name before putting it in the final
     * zip. For instance, "Payload/Foo.app/" (notice the final slash).
     * </pre>
     *
     * <code>optional string entry_name_prefix = 1;</code>
     */
    public boolean hasEntryNamePrefix() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The prefix to prepend to every entry name before putting it in the final
     * zip. For instance, "Payload/Foo.app/" (notice the final slash).
     * </pre>
     *
     * <code>optional string entry_name_prefix = 1;</code>
     */
    public java.lang.String getEntryNamePrefix() {
      java.lang.Object ref = entryNamePrefix_;
      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();
        if (bs.isValidUtf8()) {
          entryNamePrefix_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The prefix to prepend to every entry name before putting it in the final
     * zip. For instance, "Payload/Foo.app/" (notice the final slash).
     * </pre>
     *
     * <code>optional string entry_name_prefix = 1;</code>
     */
    public com.google.protobuf.ByteString
        getEntryNamePrefixBytes() {
      java.lang.Object ref = entryNamePrefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        entryNamePrefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCE_PATH_FIELD_NUMBER = 2;
    private volatile java.lang.Object sourcePath_;
    /**
     * <pre>
     * The path to the source file to merge.
     * </pre>
     *
     * <code>optional string source_path = 2;</code>
     */
    public boolean hasSourcePath() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The path to the source file to merge.
     * </pre>
     *
     * <code>optional string source_path = 2;</code>
     */
    public java.lang.String getSourcePath() {
      java.lang.Object ref = sourcePath_;
      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();
        if (bs.isValidUtf8()) {
          sourcePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The path to the source file to merge.
     * </pre>
     *
     * <code>optional string source_path = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSourcePathBytes() {
      java.lang.Object ref = sourcePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourcePath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, entryNamePrefix_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sourcePath_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, entryNamePrefix_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sourcePath_);
      }
      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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip)) {
        return super.equals(obj);
      }
      com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip other = (com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip) obj;

      boolean result = true;
      result = result && (hasEntryNamePrefix() == other.hasEntryNamePrefix());
      if (hasEntryNamePrefix()) {
        result = result && getEntryNamePrefix()
            .equals(other.getEntryNamePrefix());
      }
      result = result && (hasSourcePath() == other.hasSourcePath());
      if (hasSourcePath()) {
        result = result && getSourcePath()
            .equals(other.getSourcePath());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEntryNamePrefix()) {
        hash = (37 * hash) + ENTRY_NAME_PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getEntryNamePrefix().hashCode();
      }
      if (hasSourcePath()) {
        hash = (37 * hash) + SOURCE_PATH_FIELD_NUMBER;
        hash = (53 * hash) + getSourcePath().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip 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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip 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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * Represents a zip file to merge with the final zip.
     * </pre>
     *
     * Protobuf type {@code devtools.xcode.MergeZip}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:devtools.xcode.MergeZip)
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZipOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_MergeZip_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_MergeZip_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.class, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.Builder.class);
      }

      // Construct using com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        entryNamePrefix_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        sourcePath_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_MergeZip_descriptor;
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip getDefaultInstanceForType() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.getDefaultInstance();
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip build() {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip buildPartial() {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip result = new com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.entryNamePrefix_ = entryNamePrefix_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.sourcePath_ = sourcePath_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip) {
          return mergeFrom((com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip other) {
        if (other == com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip.getDefaultInstance()) return this;
        if (other.hasEntryNamePrefix()) {
          bitField0_ |= 0x00000001;
          entryNamePrefix_ = other.entryNamePrefix_;
          onChanged();
        }
        if (other.hasSourcePath()) {
          bitField0_ |= 0x00000002;
          sourcePath_ = other.sourcePath_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object entryNamePrefix_ = "";
      /**
       * <pre>
       * The prefix to prepend to every entry name before putting it in the final
       * zip. For instance, "Payload/Foo.app/" (notice the final slash).
       * </pre>
       *
       * <code>optional string entry_name_prefix = 1;</code>
       */
      public boolean hasEntryNamePrefix() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The prefix to prepend to every entry name before putting it in the final
       * zip. For instance, "Payload/Foo.app/" (notice the final slash).
       * </pre>
       *
       * <code>optional string entry_name_prefix = 1;</code>
       */
      public java.lang.String getEntryNamePrefix() {
        java.lang.Object ref = entryNamePrefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            entryNamePrefix_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The prefix to prepend to every entry name before putting it in the final
       * zip. For instance, "Payload/Foo.app/" (notice the final slash).
       * </pre>
       *
       * <code>optional string entry_name_prefix = 1;</code>
       */
      public com.google.protobuf.ByteString
          getEntryNamePrefixBytes() {
        java.lang.Object ref = entryNamePrefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          entryNamePrefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The prefix to prepend to every entry name before putting it in the final
       * zip. For instance, "Payload/Foo.app/" (notice the final slash).
       * </pre>
       *
       * <code>optional string entry_name_prefix = 1;</code>
       */
      public Builder setEntryNamePrefix(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        entryNamePrefix_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The prefix to prepend to every entry name before putting it in the final
       * zip. For instance, "Payload/Foo.app/" (notice the final slash).
       * </pre>
       *
       * <code>optional string entry_name_prefix = 1;</code>
       */
      public Builder clearEntryNamePrefix() {
        bitField0_ = (bitField0_ & ~0x00000001);
        entryNamePrefix_ = getDefaultInstance().getEntryNamePrefix();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The prefix to prepend to every entry name before putting it in the final
       * zip. For instance, "Payload/Foo.app/" (notice the final slash).
       * </pre>
       *
       * <code>optional string entry_name_prefix = 1;</code>
       */
      public Builder setEntryNamePrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        entryNamePrefix_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sourcePath_ = "";
      /**
       * <pre>
       * The path to the source file to merge.
       * </pre>
       *
       * <code>optional string source_path = 2;</code>
       */
      public boolean hasSourcePath() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The path to the source file to merge.
       * </pre>
       *
       * <code>optional string source_path = 2;</code>
       */
      public java.lang.String getSourcePath() {
        java.lang.Object ref = sourcePath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sourcePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path to the source file to merge.
       * </pre>
       *
       * <code>optional string source_path = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSourcePathBytes() {
        java.lang.Object ref = sourcePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourcePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path to the source file to merge.
       * </pre>
       *
       * <code>optional string source_path = 2;</code>
       */
      public Builder setSourcePath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        sourcePath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path to the source file to merge.
       * </pre>
       *
       * <code>optional string source_path = 2;</code>
       */
      public Builder clearSourcePath() {
        bitField0_ = (bitField0_ & ~0x00000002);
        sourcePath_ = getDefaultInstance().getSourcePath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path to the source file to merge.
       * </pre>
       *
       * <code>optional string source_path = 2;</code>
       */
      public Builder setSourcePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        sourcePath_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:devtools.xcode.MergeZip)
    }

    // @@protoc_insertion_point(class_scope:devtools.xcode.MergeZip)
    private static final com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip();
    }

    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BundleFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:devtools.xcode.BundleFile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The path of the file to put in the bundle.
     * </pre>
     *
     * <code>optional string source_file = 1;</code>
     */
    boolean hasSourceFile();
    /**
     * <pre>
     * The path of the file to put in the bundle.
     * </pre>
     *
     * <code>optional string source_file = 1;</code>
     */
    java.lang.String getSourceFile();
    /**
     * <pre>
     * The path of the file to put in the bundle.
     * </pre>
     *
     * <code>optional string source_file = 1;</code>
     */
    com.google.protobuf.ByteString
        getSourceFileBytes();

    /**
     * <pre>
     * The path of the file in the bundle, relative to the bundle root.
     * </pre>
     *
     * <code>optional string bundle_path = 2;</code>
     */
    boolean hasBundlePath();
    /**
     * <pre>
     * The path of the file in the bundle, relative to the bundle root.
     * </pre>
     *
     * <code>optional string bundle_path = 2;</code>
     */
    java.lang.String getBundlePath();
    /**
     * <pre>
     * The path of the file in the bundle, relative to the bundle root.
     * </pre>
     *
     * <code>optional string bundle_path = 2;</code>
     */
    com.google.protobuf.ByteString
        getBundlePathBytes();

    /**
     * <pre>
     * The external file attribute field in the central directory record in the
     * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
     * constant is used.
     * </pre>
     *
     * <code>optional int32 external_file_attribute = 3;</code>
     */
    boolean hasExternalFileAttribute();
    /**
     * <pre>
     * The external file attribute field in the central directory record in the
     * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
     * constant is used.
     * </pre>
     *
     * <code>optional int32 external_file_attribute = 3;</code>
     */
    int getExternalFileAttribute();
  }
  /**
   * Protobuf type {@code devtools.xcode.BundleFile}
   */
  public  static final class BundleFile extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:devtools.xcode.BundleFile)
      BundleFileOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BundleFile.newBuilder() to construct.
    private BundleFile(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BundleFile() {
      sourceFile_ = "";
      bundlePath_ = "";
      externalFileAttribute_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BundleFile(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      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;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              sourceFile_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              bundlePath_ = bs;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              externalFileAttribute_ = input.readInt32();
              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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_BundleFile_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_BundleFile_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.class, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder.class);
    }

    private int bitField0_;
    public static final int SOURCE_FILE_FIELD_NUMBER = 1;
    private volatile java.lang.Object sourceFile_;
    /**
     * <pre>
     * The path of the file to put in the bundle.
     * </pre>
     *
     * <code>optional string source_file = 1;</code>
     */
    public boolean hasSourceFile() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The path of the file to put in the bundle.
     * </pre>
     *
     * <code>optional string source_file = 1;</code>
     */
    public java.lang.String getSourceFile() {
      java.lang.Object ref = sourceFile_;
      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();
        if (bs.isValidUtf8()) {
          sourceFile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The path of the file to put in the bundle.
     * </pre>
     *
     * <code>optional string source_file = 1;</code>
     */
    public com.google.protobuf.ByteString
        getSourceFileBytes() {
      java.lang.Object ref = sourceFile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BUNDLE_PATH_FIELD_NUMBER = 2;
    private volatile java.lang.Object bundlePath_;
    /**
     * <pre>
     * The path of the file in the bundle, relative to the bundle root.
     * </pre>
     *
     * <code>optional string bundle_path = 2;</code>
     */
    public boolean hasBundlePath() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The path of the file in the bundle, relative to the bundle root.
     * </pre>
     *
     * <code>optional string bundle_path = 2;</code>
     */
    public java.lang.String getBundlePath() {
      java.lang.Object ref = bundlePath_;
      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();
        if (bs.isValidUtf8()) {
          bundlePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The path of the file in the bundle, relative to the bundle root.
     * </pre>
     *
     * <code>optional string bundle_path = 2;</code>
     */
    public com.google.protobuf.ByteString
        getBundlePathBytes() {
      java.lang.Object ref = bundlePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bundlePath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTERNAL_FILE_ATTRIBUTE_FIELD_NUMBER = 3;
    private int externalFileAttribute_;
    /**
     * <pre>
     * The external file attribute field in the central directory record in the
     * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
     * constant is used.
     * </pre>
     *
     * <code>optional int32 external_file_attribute = 3;</code>
     */
    public boolean hasExternalFileAttribute() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * The external file attribute field in the central directory record in the
     * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
     * constant is used.
     * </pre>
     *
     * <code>optional int32 external_file_attribute = 3;</code>
     */
    public int getExternalFileAttribute() {
      return externalFileAttribute_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sourceFile_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, bundlePath_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, externalFileAttribute_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sourceFile_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, bundlePath_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, externalFileAttribute_);
      }
      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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile)) {
        return super.equals(obj);
      }
      com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile other = (com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile) obj;

      boolean result = true;
      result = result && (hasSourceFile() == other.hasSourceFile());
      if (hasSourceFile()) {
        result = result && getSourceFile()
            .equals(other.getSourceFile());
      }
      result = result && (hasBundlePath() == other.hasBundlePath());
      if (hasBundlePath()) {
        result = result && getBundlePath()
            .equals(other.getBundlePath());
      }
      result = result && (hasExternalFileAttribute() == other.hasExternalFileAttribute());
      if (hasExternalFileAttribute()) {
        result = result && (getExternalFileAttribute()
            == other.getExternalFileAttribute());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSourceFile()) {
        hash = (37 * hash) + SOURCE_FILE_FIELD_NUMBER;
        hash = (53 * hash) + getSourceFile().hashCode();
      }
      if (hasBundlePath()) {
        hash = (37 * hash) + BUNDLE_PATH_FIELD_NUMBER;
        hash = (53 * hash) + getBundlePath().hashCode();
      }
      if (hasExternalFileAttribute()) {
        hash = (37 * hash) + EXTERNAL_FILE_ATTRIBUTE_FIELD_NUMBER;
        hash = (53 * hash) + getExternalFileAttribute();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile 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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile 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.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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 devtools.xcode.BundleFile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:devtools.xcode.BundleFile)
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_BundleFile_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_BundleFile_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.class, com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.Builder.class);
      }

      // Construct using com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        sourceFile_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        bundlePath_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        externalFileAttribute_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.internal_static_devtools_xcode_BundleFile_descriptor;
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile getDefaultInstanceForType() {
        return com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.getDefaultInstance();
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile build() {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile buildPartial() {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile result = new com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.sourceFile_ = sourceFile_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.bundlePath_ = bundlePath_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.externalFileAttribute_ = externalFileAttribute_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile) {
          return mergeFrom((com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile other) {
        if (other == com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile.getDefaultInstance()) return this;
        if (other.hasSourceFile()) {
          bitField0_ |= 0x00000001;
          sourceFile_ = other.sourceFile_;
          onChanged();
        }
        if (other.hasBundlePath()) {
          bitField0_ |= 0x00000002;
          bundlePath_ = other.bundlePath_;
          onChanged();
        }
        if (other.hasExternalFileAttribute()) {
          setExternalFileAttribute(other.getExternalFileAttribute());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object sourceFile_ = "";
      /**
       * <pre>
       * The path of the file to put in the bundle.
       * </pre>
       *
       * <code>optional string source_file = 1;</code>
       */
      public boolean hasSourceFile() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The path of the file to put in the bundle.
       * </pre>
       *
       * <code>optional string source_file = 1;</code>
       */
      public java.lang.String getSourceFile() {
        java.lang.Object ref = sourceFile_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sourceFile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path of the file to put in the bundle.
       * </pre>
       *
       * <code>optional string source_file = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSourceFileBytes() {
        java.lang.Object ref = sourceFile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceFile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path of the file to put in the bundle.
       * </pre>
       *
       * <code>optional string source_file = 1;</code>
       */
      public Builder setSourceFile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sourceFile_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the file to put in the bundle.
       * </pre>
       *
       * <code>optional string source_file = 1;</code>
       */
      public Builder clearSourceFile() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sourceFile_ = getDefaultInstance().getSourceFile();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the file to put in the bundle.
       * </pre>
       *
       * <code>optional string source_file = 1;</code>
       */
      public Builder setSourceFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sourceFile_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object bundlePath_ = "";
      /**
       * <pre>
       * The path of the file in the bundle, relative to the bundle root.
       * </pre>
       *
       * <code>optional string bundle_path = 2;</code>
       */
      public boolean hasBundlePath() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The path of the file in the bundle, relative to the bundle root.
       * </pre>
       *
       * <code>optional string bundle_path = 2;</code>
       */
      public java.lang.String getBundlePath() {
        java.lang.Object ref = bundlePath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            bundlePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path of the file in the bundle, relative to the bundle root.
       * </pre>
       *
       * <code>optional string bundle_path = 2;</code>
       */
      public com.google.protobuf.ByteString
          getBundlePathBytes() {
        java.lang.Object ref = bundlePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bundlePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path of the file in the bundle, relative to the bundle root.
       * </pre>
       *
       * <code>optional string bundle_path = 2;</code>
       */
      public Builder setBundlePath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        bundlePath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the file in the bundle, relative to the bundle root.
       * </pre>
       *
       * <code>optional string bundle_path = 2;</code>
       */
      public Builder clearBundlePath() {
        bitField0_ = (bitField0_ & ~0x00000002);
        bundlePath_ = getDefaultInstance().getBundlePath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the file in the bundle, relative to the bundle root.
       * </pre>
       *
       * <code>optional string bundle_path = 2;</code>
       */
      public Builder setBundlePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        bundlePath_ = value;
        onChanged();
        return this;
      }

      private int externalFileAttribute_ ;
      /**
       * <pre>
       * The external file attribute field in the central directory record in the
       * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
       * constant is used.
       * </pre>
       *
       * <code>optional int32 external_file_attribute = 3;</code>
       */
      public boolean hasExternalFileAttribute() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * The external file attribute field in the central directory record in the
       * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
       * constant is used.
       * </pre>
       *
       * <code>optional int32 external_file_attribute = 3;</code>
       */
      public int getExternalFileAttribute() {
        return externalFileAttribute_;
      }
      /**
       * <pre>
       * The external file attribute field in the central directory record in the
       * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
       * constant is used.
       * </pre>
       *
       * <code>optional int32 external_file_attribute = 3;</code>
       */
      public Builder setExternalFileAttribute(int value) {
        bitField0_ |= 0x00000004;
        externalFileAttribute_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The external file attribute field in the central directory record in the
       * .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE
       * constant is used.
       * </pre>
       *
       * <code>optional int32 external_file_attribute = 3;</code>
       */
      public Builder clearExternalFileAttribute() {
        bitField0_ = (bitField0_ & ~0x00000004);
        externalFileAttribute_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:devtools.xcode.BundleFile)
    }

    // @@protoc_insertion_point(class_scope:devtools.xcode.BundleFile)
    private static final com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile();
    }

    public static com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.BundleFile getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_devtools_xcode_Control_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_devtools_xcode_Control_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_devtools_xcode_MergeZip_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_devtools_xcode_MergeZip_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_devtools_xcode_BundleFile_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_devtools_xcode_BundleFile_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#src/main/protobuf/bundlemerge.proto\022\016d" +
      "evtools.xcode\"\206\003\n\007Control\022\036\n\026bundle_info" +
      "_plist_file\030\020 \001(\t\022\020\n\010out_file\030\002 \001(\t\022\020\n\010p" +
      "latform\030\004 \001(\t\022\023\n\013sdk_version\030\005 \001(\t\022\032\n\022mi" +
      "nimum_os_version\030\006 \001(\t\022\023\n\013bundle_root\030\007 " +
      "\001(\t\022/\n\013bundle_file\030\010 \003(\0132\032.devtools.xcod" +
      "e.BundleFile\022+\n\tmerge_zip\030\n \003(\0132\030.devtoo" +
      "ls.xcode.MergeZip\022.\n\rnested_bundle\030\014 \003(\013" +
      "2\027.devtools.xcode.Control\022!\n\031primary_bun" +
      "dle_identifier\030\016 \001(\t\022\"\n\032fallback_bundle_",
      "identifier\030\017 \001(\tJ\004\010\001\020\002J\004\010\003\020\004J\004\010\t\020\nJ\004\010\013\020\014" +
      "J\004\010\r\020\016\":\n\010MergeZip\022\031\n\021entry_name_prefix\030" +
      "\001 \001(\t\022\023\n\013source_path\030\002 \001(\t\"W\n\nBundleFile" +
      "\022\023\n\013source_file\030\001 \001(\t\022\023\n\013bundle_path\030\002 \001" +
      "(\t\022\037\n\027external_file_attribute\030\003 \001(\005BF\n1c" +
      "om.google.devtools.build.xcode.bundlemer" +
      "ge.protoB\021BundleMergeProtos"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_devtools_xcode_Control_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_devtools_xcode_Control_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_devtools_xcode_Control_descriptor,
        new java.lang.String[] { "BundleInfoPlistFile", "OutFile", "Platform", "SdkVersion", "MinimumOsVersion", "BundleRoot", "BundleFile", "MergeZip", "NestedBundle", "PrimaryBundleIdentifier", "FallbackBundleIdentifier", });
    internal_static_devtools_xcode_MergeZip_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_devtools_xcode_MergeZip_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_devtools_xcode_MergeZip_descriptor,
        new java.lang.String[] { "EntryNamePrefix", "SourcePath", });
    internal_static_devtools_xcode_BundleFile_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_devtools_xcode_BundleFile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_devtools_xcode_BundleFile_descriptor,
        new java.lang.String[] { "SourceFile", "BundlePath", "ExternalFileAttribute", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
